Some tree states fixes
- Direct click on save should also store the tree states - The timestamp of tree states should be ignored for form view because it is only for internal usage - Store in tree states the index instead of id for new records issue4130 issue4131 review14431002
This commit is contained in:
1 parent
944834994a
commit
09fbe1c1d0
2 files changed
+17
-4
No files matched your search
@@ -346,6 +346,9 @@ class Form(SignalEvent, TabContent):
|
||||
'green')
|
||||
|
||||
def sig_save(self, widget=None):
|
||||
if widget:
|
||||
# Called from button so we must save the tree state
|
||||
self.screen.save_tree_state()
|
||||
if not common.MODELACCESS[self.model]['write']:
|
||||
return
|
||||
if self.screen.save_current():
|
||||
@@ -370,11 +373,13 @@ class Form(SignalEvent, TabContent):
|
||||
self.activate_save()
|
||||
|
||||
def sig_reload(self, test_modified=True):
|
||||
if test_modified and not self.modified_save():
|
||||
if test_modified:
|
||||
if not self.modified_save():
|
||||
return False
|
||||
else:
|
||||
self.screen.save_tree_state(store=False)
|
||||
self.screen.cancel_current()
|
||||
set_cursor = False
|
||||
self.screen.save_tree_state(store=False)
|
||||
record_id = (self.screen.current_record.id
|
||||
if self.screen.current_record else None)
|
||||
if self.screen.current_view.view_type != 'form':
|
||||
|
||||
@@ -615,7 +615,8 @@ class Screen(SignalEvent):
|
||||
state = self.tree_states[parent][view.children_field]
|
||||
if state:
|
||||
state_timestamp, expanded_nodes, selected_nodes = state
|
||||
if timestamp != state_timestamp:
|
||||
if (timestamp != state_timestamp
|
||||
and view.view_type != 'form'):
|
||||
state = None
|
||||
if state is None and CONFIG['client.save_tree_state']:
|
||||
json_domain = self.get_tree_domain(parent)
|
||||
@@ -639,6 +640,9 @@ class Screen(SignalEvent):
|
||||
record = None
|
||||
for node in selected_nodes[0]:
|
||||
new_record = self.group.get(node)
|
||||
if node < 0 and -node < len(self.group):
|
||||
# Negative id is the index of the new record
|
||||
new_record = self.group[-node]
|
||||
if not new_record:
|
||||
break
|
||||
else:
|
||||
@@ -662,8 +666,12 @@ class Screen(SignalEvent):
|
||||
if hasattr(widget, 'screen'):
|
||||
widget.screen.save_tree_state(store)
|
||||
if len(self.views) == 1 and self.current_record:
|
||||
path = self.current_record.id
|
||||
if path < 0:
|
||||
path = -self.current_record.group.index(
|
||||
self.current_record)
|
||||
self.tree_states[parent][view.children_field] = (
|
||||
timestamp, [], [[self.current_record.id]])
|
||||
timestamp, [], [[path]])
|
||||
elif view.view_type == 'tree':
|
||||
paths = view.get_expanded_paths()
|
||||
selected_paths = view.get_selected_paths()
|
||||
|
||||
Reference in new issue
Block a user