Commit 973a3381 authored by twanvl's avatar twanvl

Fix #25: Program throws exception when clicking on the 'stylesheet' list if...

Fix #25: Program throws exception when clicking on the 'stylesheet' list if there are no stylesheets.
parent 18d144a3
......@@ -37,6 +37,11 @@ class GalleryList : public wxPanel {
void select(size_t item, size_t subcol = NO_SELECTION, bool event = true);
/// Is there an item selected?
inline bool hasSelection(size_t subcol = 0) const { return subcolumns[subcol].selection < itemCount(); }
/// Get the id of the selected item, throws if there is no selection
inline size_t getSelectionId(size_t subcol = 0) const {
if (!hasSelection(subcol)) throw Error(_("No selection"));
return subcolumns[subcol].selection;
}
/// Is the given item selected?
inline bool isSelected(size_t item, size_t subcol = 0) const {
return subcol < subcolumns.size() && subcolumns[subcol].selection == item;
......
......@@ -39,7 +39,7 @@ class PackageList : public GalleryList {
* Throws if the selection is not of type T */
template <typename T>
intrusive_ptr<T> getSelection(bool load_fully = true) const {
intrusive_ptr<T> ret = dynamic_pointer_cast<T>(packages.at(subcolumns[0].selection).package);
intrusive_ptr<T> ret = dynamic_pointer_cast<T>(packages.at(getSelectionId()).package);
if (!ret) throw InternalError(_("PackageList: Selected package has the wrong type"));
if (load_fully) ret->loadFully();
return ret;
......
......@@ -90,6 +90,7 @@ void NewSetWindow::OnOK(wxCommandEvent&) {
void NewSetWindow::done() {
try {
if (!stylesheet_list->hasSelection()) return;
StyleSheetP stylesheet = stylesheet_list->getSelection<StyleSheet>();
set = intrusive(new Set(stylesheet));
set->validate();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment