changeset d99d8c5b29e3 in tryton:6.0
details: https://hg.tryton.org/tryton?cmd=changeset&node=d99d8c5b29e3
description:
        Use *-changed events of generic date and time widgets

        This ensures to detect all changes of the widgets without relying on
        implementation details.

        issue11659
        review421571003
        (grafted from 30f71de3e567db683cd7d99610761a43a0b0ce28)
diffstat:

 tryton/gui/window/view_form/view/form_gtk/calendar_.py |  21 +++++++----------
 1 files changed, 9 insertions(+), 12 deletions(-)

diffs (52 lines):

diff -r 4ee4c87cb309 -r d99d8c5b29e3 
tryton/gui/window/view_form/view/form_gtk/calendar_.py
--- a/tryton/gui/window/view_form/view/form_gtk/calendar_.py    Tue Sep 06 
23:27:56 2022 +0200
+++ b/tryton/gui/window/view_form/view/form_gtk/calendar_.py    Thu Sep 01 
22:07:13 2022 +0200
@@ -24,8 +24,7 @@
         self.real_entry.connect('key_press_event', self.sig_key_press)
         self.real_entry.connect('activate', self.sig_activate)
         self.real_entry.connect('changed', lambda _: self.send_modified())
-        self.real_entry.connect('focus-out-event',
-            lambda x, y: self._focus_out())
+        self.entry.connect('date-changed', self.changed)
         self.widget.pack_start(self.entry, expand=False, fill=False, padding=0)
 
     @property
@@ -52,6 +51,13 @@
             return field_value != self.get_value()
         return False
 
+    def changed(self, widget):
+        def focus_out():
+            if widget.props.window:
+                self._focus_out()
+        # Must be deferred because it triggers a display of the form
+        GLib.idle_add(focus_out)
+
     def sig_key_press(self, widget, event):
         self.send_modified()
 
@@ -108,15 +114,6 @@
             format_ = '%X'
         self.entry.props.format = format_
 
-    def changed(self, combobox):
-        def focus_out():
-            if combobox.props.window:
-                self._focus_out()
-        # Only when changed from pop list
-        if not combobox.get_child().has_focus():
-            # Must be deferred because it triggers a display of the form
-            GLib.idle_add(focus_out)
-
 
 class DateTime(Date):
     def __init__(self, view, attrs):
@@ -132,7 +129,7 @@
             child.connect('key_press_event', self.sig_key_press)
             child.connect('activate', self.sig_activate)
             child.connect('changed', lambda _: self.send_modified())
-            child.connect('focus-out-event', lambda x, y: self._focus_out())
+        self.entry.connect('datetime-changed', self.changed)
         self.widget.pack_start(self.entry, expand=False, fill=False, padding=0)
 
     @classmethod

Reply via email to