Connect dict widgets to the right activate callback

On activate of Entry and on toggle CheckButton, the parent must be activate.
The toggled handler must also be blocked when activate the CheckButton by code
to avoid unnecessary callbacks.

issue7987
review49701002
This commit is contained in:
Cédric Krier committed 2019-01-30 09:33:51 +01:00
1 parent c975fd890c
commit 91b8091d5d
2 files changed
+14 -3

No files matched your search

@@ -28,4 +28,8 @@ class CheckBox(Widget):
if not self.field:
self.widget.set_active(False)
return False
self.widget.set_active(bool(self.field.get(self.record)))
self.widget.handler_block_by_func(self.sig_activate)
try:
self.widget.set_active(bool(self.field.get(self.record)))
finally:
self.widget.handler_unblock_by_func(self.sig_activate)
@@ -41,6 +41,8 @@ class DictEntry(object):
widget.connect('key-press-event', self.parent_widget.send_modified)
widget.connect('focus-out-event',
lambda w, e: self.parent_widget._focus_out())
widget.props.activates_default = True
widget.connect('activate', self.parent_widget.sig_activate)
return widget
def modified(self, value):
@@ -61,7 +63,7 @@ class DictBooleanEntry(DictEntry):
def create_widget(self):
widget = gtk.CheckButton()
widget.connect('toggled', self.parent_widget.send_modified)
widget.connect('toggled', self.parent_widget.sig_activate)
widget.connect('focus-out-event', lambda w, e:
self.parent_widget._focus_out())
return widget
@@ -70,7 +72,12 @@ class DictBooleanEntry(DictEntry):
return self.widget.props.active
def set_value(self, value):
self.widget.props.active = bool(value)
self.widget.handler_block_by_func(self.parent_widget.sig_activate)
try:
self.widget.props.active = bool(value)
finally:
self.widget.handler_unblock_by_func(
self.parent_widget.sig_activate)
def set_readonly(self, readonly):
self.widget.set_sensitive(not readonly)