71 lines
2.6 KiB
Diff
71 lines
2.6 KiB
Diff
# HG changeset patch
|
|
# User Sergi Almacellas Abellana <sergi@koolpi.com>
|
|
save tree state when executing actions from list view menu
|
|
|
|
issue4771
|
|
review13181002
|
|
|
|
Index: tryton/tryton/common/popup_menu.py
|
|
===================================================================
|
|
|
|
--- a/tryton/tryton/common/popup_menu.py
|
|
+++ b/tryton/tryton/common/popup_menu.py
|
|
@@ -11,7 +11,7 @@
|
|
_ = gettext.gettext
|
|
|
|
|
|
-def populate(menu, model, record, title='', field=None):
|
|
+def populate(menu, model, record, title='', field=None, parent_screen=None):
|
|
'''
|
|
Fill menu with the actions of model for the record.
|
|
If title is filled, the actions will be put in a submenu.
|
|
@@ -37,6 +37,8 @@
|
|
return record
|
|
|
|
def activate(menuitem, action, atype):
|
|
+ if parent_screen:
|
|
+ parent_screen.save_tree_state()
|
|
rec = load(record)
|
|
action = Action.evaluate(action, atype, rec)
|
|
data = {
|
|
|
|
Index: tryton/tryton/gui/window/view_form/view/list.py
|
|
===================================================================
|
|
|
|
--- a/tryton/tryton/gui/window/view_form/view/list.py
|
|
+++ b/tryton/tryton/gui/window/view_form/view/list.py
|
|
@@ -901,7 +901,7 @@
|
|
menu = gtk.Menu()
|
|
menu.popup(None, None, None, event.button, event.time)
|
|
|
|
- def pop(menu, group, record):
|
|
+ def pop(menu, group, record, screen):
|
|
copy_item = gtk.ImageMenuItem('gtk-copy')
|
|
copy_item.connect('activate', lambda x: self.on_copy())
|
|
menu.append(copy_item)
|
|
@@ -915,7 +915,8 @@
|
|
break
|
|
parent = parent.parent
|
|
else:
|
|
- populate(menu, group.model_name, record)
|
|
+ populate(menu, group.model_name, record,
|
|
+ parent_screen=screen)
|
|
for col in self.treeview.get_columns():
|
|
if not col.get_visible() or not col.name:
|
|
continue
|
|
@@ -932,10 +933,11 @@
|
|
if not model:
|
|
continue
|
|
label = field.attrs['string']
|
|
- populate(menu, model, record_id, title=label, field=field)
|
|
+ populate(menu, model, record_id, title=label, field=field,
|
|
+ parent_screen=screen)
|
|
menu.show_all()
|
|
# Delay filling of popup as it can take time
|
|
- gobject.idle_add(pop, menu, group, record)
|
|
+ gobject.idle_add(pop, menu, group, record, self.screen)
|
|
elif event.button == 2:
|
|
event.button = 1
|
|
event.state |= gtk.gdk.MOD1_MASK
|
|
|