changeset 795501d0c8d1 in tryton:default
details: https://hg.tryton.org/tryton?cmd=changeset&node=795501d0c8d1
description:
Use changed event to trigger focus out in Selection widget of Dict
issue10856
review389101002
diffstat:
tryton/gui/window/view_form/view/form_gtk/dictionary.py | 20 +++++++++++-----
1 files changed, 13 insertions(+), 7 deletions(-)
diffs (41 lines):
diff -r a518b393ae7a -r 795501d0c8d1
tryton/gui/window/view_form/view/form_gtk/dictionary.py
--- a/tryton/gui/window/view_form/view/form_gtk/dictionary.py Mon Oct 11
22:53:02 2021 +0200
+++ b/tryton/gui/window/view_form/view/form_gtk/dictionary.py Tue Oct 19
00:23:30 2021 +0200
@@ -105,13 +105,11 @@
# customizing entry
child = widget.get_child()
child.props.activates_default = True
- child.connect('changed', self.parent_widget.send_modified)
+ child.connect('changed', self._changed)
child.connect('focus-out-event',
lambda w, e: self.parent_widget._focus_out())
child.connect('activate',
lambda w: self.parent_widget._focus_out())
- widget.connect('notify::active',
- lambda w, e: self.parent_widget._focus_out())
widget.connect(
'scroll-event',
lambda c, e: c.stop_emission_by_name('scroll-event'))
@@ -162,10 +160,18 @@
if selection[1] == value:
active = i
break
- self.widget.set_active(active)
- if active == -1:
- # When setting no item GTK doesn't clear the entry
- self.widget.get_child().set_text('')
+ child = self.widget.get_child()
+ child.handler_block_by_func(self._changed)
+ try:
+ self.widget.set_active(active)
+ if active == -1:
+ # When setting no item GTK doesn't clear the entry
+ child.set_text('')
+ finally:
+ child.handler_unblock_by_func(self._changed)
+
+ def _changed(self, selection):
+ GLib.idle_add(self.parent_widget._focus_out)
def set_readonly(self, readonly):
self.widget.set_sensitive(not readonly)