From 5f421fbc84625d5d3c90ef0b947a8d4e52494dd1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Thu, 1 Sep 2022 22:07:13 +0200 Subject: [PATCH] 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) --HG-- branch : 6.0 --- .../view_form/view/form_gtk/calendar_.py | 21 ++++++++----------- 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/tryton/gui/window/view_form/view/form_gtk/calendar_.py b/tryton/gui/window/view_form/view/form_gtk/calendar_.py index 4f095a9474..94fd8969f8 100644 --- a/tryton/gui/window/view_form/view/form_gtk/calendar_.py +++ b/tryton/gui/window/view_form/view/form_gtk/calendar_.py @@ -24,8 +24,7 @@ class Date(Widget): 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 @@ class Date(Widget): 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 @@ class Time(Date): 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 @@ class DateTime(Date): 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