changeset ffa01a5fda7b in tryton:5.0 details: https://hg.tryton.org/tryton?cmd=changeset;node=ffa01a5fda7b description: Use editable path to update editable on display
The current record is not necessary linked to the editable. For example when a new record is added, the current record is changed before the editing is done. Also the CellRendererCombo does not emit remove-widget when focus is changed which prevent to clear the editable variables. issue9618 issue9266 review314471002 (grafted from 07b4d22509fcbabb19118233e1cacfb4f15d5f3a) diffstat: tryton/gui/window/view_form/view/list.py | 2 +- tryton/gui/window/view_form/view/list_gtk/widget.py | 16 +++++++++++----- 2 files changed, 12 insertions(+), 6 deletions(-) diffs (60 lines): diff -r 38b91c650e1a -r ffa01a5fda7b tryton/gui/window/view_form/view/list.py --- a/tryton/gui/window/view_form/view/list.py Sun Oct 18 20:31:00 2020 +0200 +++ b/tryton/gui/window/view_form/view/list.py Wed Oct 21 23:21:26 2020 +0200 @@ -1049,7 +1049,7 @@ if not name: continue widget = self.get_column_widget(column) - widget.set_editable(current_record) + widget.set_editable() if decoder.decode(widget.attrs.get('tree_invisible', '0')): column.set_visible(False) elif name == self.screen.exclude_field: diff -r 38b91c650e1a -r ffa01a5fda7b tryton/gui/window/view_form/view/list_gtk/widget.py --- a/tryton/gui/window/view_form/view/list_gtk/widget.py Sun Oct 18 20:31:00 2020 +0200 +++ b/tryton/gui/window/view_form/view/list_gtk/widget.py Wed Oct 21 23:21:26 2020 +0200 @@ -116,7 +116,7 @@ class Cell(object): - def set_editable(self, record): + def set_editable(self): pass @@ -264,15 +264,19 @@ if callback: callback() - def set_editable(self, record): - if not record or not self.editable: + def set_editable(self): + if not self.editable: return + store = self.view.treeview.get_model() + record = store.get_value(store.get_iter(self.editable_path), 0) self.editable.set_text(self.get_textual_value(record)) def editing_started(self, cell, editable, path): def remove(editable): self.editable = None + self.editable_path = None self.editable = editable + self.editable_path = path editable.connect('remove-widget', remove) return False @@ -840,9 +844,11 @@ if callback: callback() - def set_editable(self, record): - if not record or not self.editable: + def set_editable(self): + if not self.editable: return + store = self.view.treeview.get_model() + record = store.get_value(store.get_iter(self.editable_path), 0) field = record[self.attrs['name']] value = field.get(record) self.update_selection(record, field)