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
This commit is contained in:
Cédric Krier committed 2022-09-01 22:07:13 +02:00
1 parent 18af2ff140
commit 5f421fbc84
1 file changed
+9 -12
@@ -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