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:
Cédric Krier committed 2019-08-12 12:16:41 +02:00
1 parent ced1c83b82
commit 7d3c2a5238
2 files changed
+4 -6

No files matched your search

+2 -2
View File
@@ -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:
+2 -4
View File
@@ -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()