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:
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)
|
||||
|
||||
Reference in new issue
Block a user