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)