changeset 07b4d22509fc in tryton:default
details: https://hg.tryton.org/tryton?cmd=changeset;node=07b4d22509fc
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
diffstat:
tryton/gui/window/view_form/view/list.py | 2 +-
tryton/gui/window/view_form/view/list_gtk/widget.py | 19 +++++++++++++------
2 files changed, 14 insertions(+), 7 deletions(-)
diffs (70 lines):
diff -r 823c25d163e6 -r 07b4d22509fc tryton/gui/window/view_form/view/list.py
--- a/tryton/gui/window/view_form/view/list.py Sun Oct 18 15:58:43 2020 +0200
+++ b/tryton/gui/window/view_form/view/list.py Wed Oct 21 23:21:26 2020 +0200
@@ -1047,7 +1047,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 823c25d163e6 -r 07b4d22509fc
tryton/gui/window/view_form/view/list_gtk/widget.py
--- a/tryton/gui/window/view_form/view/list_gtk/widget.py Sun Oct 18
15:58:43 2020 +0200
+++ b/tryton/gui/window/view_form/view/list_gtk/widget.py Wed Oct 21
23:21:26 2020 +0200
@@ -149,7 +149,7 @@
cell.set_property('foreground', foreground)
cell.set_property('foreground-set', bool(foreground))
- def set_editable(self, record):
+ def set_editable(self):
pass
@@ -323,15 +323,18 @@
if callback:
callback()
- def set_editable(self, record):
- if not record or not self.editable:
+ def set_editable(self):
+ if not self.editable:
return
+ record, field = self._get_record_field_from_path(self.editable_path)
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
@@ -1026,10 +1029,10 @@
if callback:
callback()
- def set_editable(self, record):
- if not record or not self.editable:
+ def set_editable(self):
+ if not self.editable:
return
- field = record[self.attrs['name']]
+ record, field = self._get_record_field_from_path(self.editable_path)
value = self.get_value(record, field)
self.update_selection(record, field)
self.set_popdown_value(self.editable, value)
@@ -1037,6 +1040,10 @@
def editing_started(self, cell, editable, path):
super(Selection, self).editing_started(cell, editable, path)
record, field = self._get_record_field_from_path(path)
+ # Combobox does not emit remove-widget when focus is changed
+ self.editable.connect(
+ 'editing-done',
+ lambda *a: self.editable.emit('remove-widget'))
selection_shortcuts(editable)