diff --git a/tryton/gui/window/view_form/screen/screen.py b/tryton/gui/window/view_form/screen/screen.py index 85dd9c3ade..8961353cf1 100644 --- a/tryton/gui/window/view_form/screen/screen.py +++ b/tryton/gui/window/view_form/screen/screen.py @@ -560,20 +560,21 @@ class Screen(SignalEvent): res = True if self.current_view.view_type == 'tree': records = self.current_view.selected_records() - if delete and records: + saved_records = [r for r in records if r.id >= 0] + if delete and saved_records: context = {} context.update(rpc.CONTEXT) context.update(self.context) context['_timestamp'] = {} - for record in records: + for record in saved_records: context['_timestamp'].update(record.get_timestamp()) - reload_ids = self.group.on_write_ids([x.id for x in records]) + reload_ids = self.group.on_write_ids([x.id for x in saved_records]) if reload_ids: - for record in records: + for record in saved_records: if record.id in reload_ids: reload_ids.remove(record.id) args = ('model', self.model_name, 'delete', - [x.id for x in records], context) + [x.id for x in saved_records], context) try: res = rpc.execute(*args) except TrytonServerError, exception: 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 be2c8bf41c..5ec0901fd0 100644 --- a/tryton/gui/window/view_form/view/list_gtk/editabletree.py +++ b/tryton/gui/window/view_form/view/list_gtk/editabletree.py @@ -209,16 +209,10 @@ class EditableTreeView(gtk.TreeView): self.on_editing_done) elif event.keyval == gtk.keysyms.Escape: if record.id < 0: - model.remove(model.get_iter(path)) - self.screen.current_record = False - if not path[0]: - self.screen.current_record = False - if path[0] == len(self.screen.group) \ - and path[0]: - path = (path[0] - 1,) - self.screen.display() - if len(self.screen.group): - self.set_cursor(path, column, False) + self.screen.remove(delete=False, remove=True, + force_remove=True) + else: + return False elif event.keyval in (gtk.keysyms.F3, gtk.keysyms.F2): if isinstance(entry, gtk.Entry): value = entry.get_text()