Commit 0d493f11 authored by Roman Alifanov's avatar Roman Alifanov

block signal handlers while changing widget value programmatically

parent 3bcfab63
......@@ -10,7 +10,7 @@ class BooleanWidget(BaseWidget):
valign=Gtk.Align.CENTER,
halign=Gtk.Align.CENTER,
)
self.switch.connect("notify::active", self._on_boolean_toggled)
self.handler_id = self.switch.connect("notify::active", self._on_boolean_toggled)
self.row.set_activatable_widget(self.switch)
......@@ -25,7 +25,10 @@ class BooleanWidget(BaseWidget):
def _update_initial_state(self):
current_value = self.setting._get_backend_value()
is_active = current_value == self.setting.map.get(True)
with self.switch.handler_block(self.handler_id):
self.switch.set_active(is_active)
self._update_reset_visibility()
def update_display(self):
......@@ -41,6 +44,8 @@ class BooleanWidget(BaseWidget):
default_value = self.setting.map.get(self.setting.default)
self.setting._set_backend_value(default_value)
with self.switch.handler_block(self.handler_id):
self.switch.set_active(self.setting.default)
self._update_reset_visibility()
......
......@@ -16,7 +16,7 @@ class ChoiceWidget(BaseWidget):
self._set_dropdown_width(items)
self._update_dropdown_selection()
self.dropdown.connect("notify::selected", self._on_choice_changed)
self.handler_id = self.dropdown.connect("notify::selected", self._on_choice_changed)
control_box = Gtk.Box(spacing=6, orientation=Gtk.Orientation.HORIZONTAL)
control_box.append(self.reset_revealer)
......@@ -32,6 +32,8 @@ class ChoiceWidget(BaseWidget):
def _update_dropdown_selection(self):
current_index = self.setting._get_selected_row_index()
with self.dropdown.handler_block(self.handler_id):
self.dropdown.set_selected(current_index)
def _set_dropdown_width(self, items):
......@@ -59,6 +61,7 @@ class ChoiceWidget(BaseWidget):
default_value = self.setting._get_default_row_index()
if default_value is not None:
with self.dropdown.handler_block(self.handler_id):
self.dropdown.set_selected(default_value)
self.setting._set_backend_value(self.setting.default)
......
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