changeset ef414bb17b26 in tryton:default
details: https://hg.tryton.org/tryton?cmd=changeset;node=ef414bb17b26
description:
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
diffstat:
tryton/gui/window/view_form/view/form_gtk/checkbox.py | 6 +++++-
tryton/gui/window/view_form/view/form_gtk/dictionary.py | 11 +++++++++--
2 files changed, 14 insertions(+), 3 deletions(-)
diffs (48 lines):
diff -r fb74e8d64b9d -r ef414bb17b26
tryton/gui/window/view_form/view/form_gtk/checkbox.py
--- a/tryton/gui/window/view_form/view/form_gtk/checkbox.py Wed Jan 23
16:58:11 2019 +0100
+++ b/tryton/gui/window/view_form/view/form_gtk/checkbox.py Wed Jan 30
09:33:51 2019 +0100
@@ -28,4 +28,8 @@
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)
diff -r fb74e8d64b9d -r ef414bb17b26
tryton/gui/window/view_form/view/form_gtk/dictionary.py
--- a/tryton/gui/window/view_form/view/form_gtk/dictionary.py Wed Jan 23
16:58:11 2019 +0100
+++ b/tryton/gui/window/view_form/view/form_gtk/dictionary.py Wed Jan 30
09:33:51 2019 +0100
@@ -41,6 +41,8 @@
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 @@
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 @@
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)