diff --git a/tryton/gui/window/view_form/view/list_gtk/editabletree.py b/tryton/gui/window/view_form/view/list_gtk/editabletree.py index 1e1af35c22..22a79e00d0 100644 --- a/tryton/gui/window/view_form/view/list_gtk/editabletree.py +++ b/tryton/gui/window/view_form/view/list_gtk/editabletree.py @@ -115,21 +115,12 @@ class EditableTreeView(TreeView): def set_value(self): path, column = self.get_cursor() - model = self.get_model() if not path or not column or not column.name: return True - record = model.get_value(model.get_iter(path), 0) - field = record[column.name] - if hasattr(field, 'editabletree_entry'): - entry = field.editabletree_entry - if isinstance(entry, (Date, Time)): - entry.activate() - txt = entry.props.value - elif isinstance(entry, gtk.Entry): - txt = entry.get_text() - else: - txt = entry.get_active_text() - self.on_quit_cell(record, column, txt) + for renderer in column.get_cell_renderers(): + if renderer.props.editing: + widget = self.view.get_column_widget(column) + self.on_editing_done(widget.editable) return True def on_keypressed(self, entry, event): @@ -235,14 +226,6 @@ class EditableTreeView(TreeView): field = record[column.name] if isinstance(entry, gtk.Entry): entry.set_max_length(int(field.attrs.get('size', 0))) - # store in the record the entry widget to get the value in - # set_value - field.editabletree_entry = entry - - def remove_widget(widget): - if hasattr(field, 'editabletree_entry'): - del field.editabletree_entry - entry.connect('remove-widget', remove_widget) record.modified_fields.setdefault(column.name) return False diff --git a/tryton/gui/window/view_form/view/list_gtk/widget.py b/tryton/gui/window/view_form/view/list_gtk/widget.py index 355fc7d602..1b118ae922 100644 --- a/tryton/gui/window/view_form/view/list_gtk/widget.py +++ b/tryton/gui/window/view_form/view/list_gtk/widget.py @@ -170,6 +170,7 @@ class Affix(Cell): class GenericText(Cell): align = 0 + editable = None def __init__(self, view, attrs, renderer=None): super(GenericText, self).__init__() @@ -259,6 +260,10 @@ class GenericText(Cell): callback() def editing_started(self, cell, editable, path): + def remove(editable): + self.editable = None + self.editable = editable + editable.connect('remove-widget', remove) return False def _get_record_field(self, path):