Force a display when group cleared
We must ensure that a model is set on the treeview before the former one became invalid. This is because set_model calls gtk_tree_model_unref_node using the previous model. So the display (which set the new model) can not be delayed. issue8552 review283851002
This commit is contained in:
1 parent
ced1c83b82
commit
7d3c2a5238
2 files changed
+4
-6
No files matched your search
@@ -404,8 +404,8 @@ class Screen(SignalEvent):
|
||||
|
||||
def _group_cleared(self, group, signal):
|
||||
for view in self.views:
|
||||
if hasattr(view, 'reload'):
|
||||
view.reload = True
|
||||
if view.view_type == 'tree':
|
||||
view.display(force=True)
|
||||
|
||||
def _group_list_changed(self, group, signal):
|
||||
for view in self.views:
|
||||
|
||||
@@ -436,7 +436,6 @@ class ViewTree(View):
|
||||
self.children_field = children_field
|
||||
self.sum_widgets = []
|
||||
self.sum_box = Gtk.HBox()
|
||||
self.reload = False
|
||||
self.treeview = None
|
||||
editable = xml.getAttribute('editable')
|
||||
if editable and not screen.readonly:
|
||||
@@ -1007,10 +1006,10 @@ class ViewTree(View):
|
||||
def reset(self):
|
||||
pass
|
||||
|
||||
def display(self):
|
||||
def display(self, force=False):
|
||||
self.treeview.display_counter += 1
|
||||
current_record = self.record
|
||||
if (self.reload
|
||||
if (force
|
||||
or not self.treeview.get_model()
|
||||
or self.group != self.treeview.get_model().group):
|
||||
model = AdaptModelGroup(self.group, self.children_field)
|
||||
@@ -1021,7 +1020,6 @@ class ViewTree(View):
|
||||
selection = self.treeview.get_selection()
|
||||
path = current_record.get_index_path(model.group)
|
||||
selection.select_path(path)
|
||||
self.reload = False
|
||||
if not current_record:
|
||||
selection = self.treeview.get_selection()
|
||||
selection.unselect_all()
|
||||
|
||||
Reference in new issue
Block a user