summaryrefslogtreecommitdiffstats
path: root/src/ui/widget/ink-select-one-action.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/widget/ink-select-one-action.cpp')
-rw-r--r--src/ui/widget/ink-select-one-action.cpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/ui/widget/ink-select-one-action.cpp b/src/ui/widget/ink-select-one-action.cpp
index da130ec1d..9ab4a7f45 100644
--- a/src/ui/widget/ink-select-one-action.cpp
+++ b/src/ui/widget/ink-select-one-action.cpp
@@ -63,6 +63,11 @@ InkSelectOneAction::InkSelectOneAction (const Glib::ustring &name,
void InkSelectOneAction::set_active (gint active) {
+ if (active < 0) {
+ std::cerr << "InkSelectOneAction::set_active: active < 0: " << active << std::endl;
+ return;
+ }
+
if (_active != active) {
_active = active;
@@ -229,14 +234,18 @@ Gtk::Widget* InkSelectOneAction::create_tool_item_vfunc() {
void InkSelectOneAction::on_changed_combobox() {
- set_active( _combobox->get_active_row_number() );
- _changed.emit (_active);
+ int row = _combobox->get_active_row_number();
+ if (row < 0) row = 0; // Happens when Gtk::ListStore reconstructed
+ set_active( row );
+ _changed.emit (_active);
+ _changed_after.emit (_active);
}
void InkSelectOneAction::on_changed_radioaction(const Glib::RefPtr<Gtk::RadioAction>& current) {
set_active( current->get_current_value() );
_changed.emit (_active);
+ _changed_after.emit (_active);
}
void InkSelectOneAction::on_toggled_radiomenu(int n) {
@@ -246,6 +255,7 @@ void InkSelectOneAction::on_toggled_radiomenu(int n) {
if ( n < _radiomenuitems.size() &&_radiomenuitems[ n ]->get_active()) {
set_active ( n );
_changed.emit (_active);
+ _changed_after.emit (_active);
}
}