changeset 5dcbb1b9548e in tryton:default
details: https://hg.tryton.org/tryton?cmd=changeset;node=5dcbb1b9548e
description:
        Pass record and field instead of path to event callback

        The path may no more be valid when the callback is triggered.

        issue9490
        review328571002
diffstat:

 tryton/gui/window/view_form/view/list_gtk/widget.py |  20 ++++++++------------
 1 files changed, 8 insertions(+), 12 deletions(-)

diffs (53 lines):

diff -r 3ed87c35e120 -r 5dcbb1b9548e 
tryton/gui/window/view_form/view/list_gtk/widget.py
--- a/tryton/gui/window/view_form/view/list_gtk/widget.py       Wed Nov 04 
12:52:51 2020 +0100
+++ b/tryton/gui/window/view_form/view/list_gtk/widget.py       Wed Nov 11 
20:31:17 2020 +0100
@@ -887,23 +887,21 @@
             search=access['read'],
             create=self.attrs.get('create', True) and access['create'])
         completion.connect('match-selected', self._completion_match_selected,
-            path, model)
+            record, field, model)
         completion.connect('action-activated',
-            self._completion_action_activated, path)
+            self._completion_action_activated, record, field)
         entry.set_completion(completion)
-        entry.connect('key-press-event', self._key_press, path)
-        entry.connect('changed', self._update_completion, path)
+        entry.connect('key-press-event', self._key_press, record, field)
+        entry.connect('changed', self._update_completion, record, field)
 
-    def _key_press(self, entry, event, path):
-        record, field = self._get_record_field_from_path(path)
+    def _key_press(self, entry, event, record, field):
         if (self.has_target(field.get(record))
                 and event.keyval in [Gdk.KEY_Delete, Gdk.KEY_BackSpace]):
             entry.set_text('')
         return False
 
     def _completion_match_selected(
-            self, completion, model, iter_, path, model_name):
-        record, field = self._get_record_field_from_path(path)
+            self, completion, model, iter_, record, field, model_name):
         rec_name, record_id = model.get(iter_, 0, 1)
         field.set_client(
             record, self.value_from_id(model_name, record_id, rec_name))
@@ -914,8 +912,7 @@
         completion_model.search_text = rec_name
         return True
 
-    def _update_completion(self, entry, path):
-        record, field = self._get_record_field_from_path(path)
+    def _update_completion(self, entry, record, field):
         value = field.get(record)
         if self.has_target(value):
             id_ = self.id_from_value(value)
@@ -924,8 +921,7 @@
         model = self.get_model(record, field)
         update_completion(entry, record, field, model)
 
-    def _completion_action_activated(self, completion, index, path):
-        record, field = self._get_record_field_from_path(path)
+    def _completion_action_activated(self, completion, index, record, field):
         entry = completion.get_entry()
         entry.handler_block(entry.editing_done_id)
 

Reply via email to