Reviewers: ,
Please review this at http://codereview.tryton.org/850003/
Affected files:
M tryton/gui/main.py
M tryton/gui/window/form.py
M tryton/gui/window/view_form/screen/screen.py
Index: tryton/gui/main.py
===================================================================
--- a/tryton/gui/main.py
+++ b/tryton/gui/main.py
@@ -1060,6 +1060,7 @@
else:
res = False
if self.menu_screen:
+ self.menu_screen.save_tree_state()
self.menu_screen.destroy()
self.menu_screen = None
self.menu_expander_clear()
@@ -1151,6 +1152,8 @@
vbox.pack_start(self.global_search_entry, False, False)
vbox.show_all()
+ if self.menu_screen:
+ self.menu_screen.save_tree_state()
self.menu_screen = None
self.menu_expander_clear()
action = PYSONDecoder().decode(prefs['pyson_menu'])
Index: tryton/gui/window/form.py
===================================================================
--- a/tryton/gui/window/form.py
+++ b/tryton/gui/window/form.py
@@ -349,6 +349,7 @@
self.screen.cancel_current()
set_cursor = False
if self.screen.current_view.view_type != 'form':
+ self.screen.save_tree_state(do_rpc=False)
obj_id = self.id_get()
self.screen.search_filter(self.screen.screen_container.get_text())
for record in self.screen.group:
@@ -356,6 +357,11 @@
self.screen.current_record = record
set_cursor = True
break
+ else:
+ for widgets in self.screen.current_view.widgets.itervalues():
+ for widget in widgets:
+ if hasattr(widget, 'screen'):
+ widget.screen.save_tree_state(do_rpc=False)
self.screen.display(set_cursor=set_cursor)
self.message_info('')
self.activate_save()
@@ -447,6 +453,7 @@
self.update_attachment_count()
def modified_save(self):
+ self.screen.set_tree_state()
self.screen.current_view.set_value()
if self.screen.modified():
value = sur_3b(
Index: tryton/gui/window/view_form/screen/screen.py
===================================================================
--- a/tryton/gui/window/view_form/screen/screen.py
+++ b/tryton/gui/window/view_form/screen/screen.py
@@ -301,7 +301,6 @@
return False
def destroy(self):
- self.save_tree_state()
self.group.destroy()
for view in self.views:
view.destroy()
@@ -619,7 +618,7 @@
self.expanded_nodes[parent][view.children_field] = expanded_nodes
view.expand_nodes(expanded_nodes)
- def save_tree_state(self):
+ def save_tree_state(self, do_rpc=True):
view = self.current_view
if (not CONFIG['client.save_tree_expanded_state']
or not view
@@ -631,15 +630,16 @@
parent = self.parent.id if self.parent else None
paths = view.get_expanded_paths()
self.expanded_nodes[parent][view.children_field] = paths
- json_domain = self.get_tree_domain(parent)
- json_paths = json.dumps(paths)
- try:
- RPCExecute('model', 'ir.ui.view_tree_expanded_state',
- 'set_expanded', self.model_name, json_domain,
- self.current_view.children_field, json_paths,
- process_exception=False)
- except (TrytonServerError, TrytonServerUnavailable):
- pass
+ if do_rpc:
+ json_domain = self.get_tree_domain(parent)
+ json_paths = json.dumps(paths)
+ try:
+ RPCExecute('model', 'ir.ui.view_tree_expanded_state',
+ 'set_expanded', self.model_name, json_domain,
+ self.current_view.children_field, json_paths,
+ process_exception=False)
+ except (TrytonServerError, TrytonServerUnavailable):
+ pass
def get_tree_domain(self, parent):
if parent: