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)

Reply via email to