fixed tree traversal

This commit is contained in:
Florian Schüller
2017-01-26 20:28:17 +01:00
committed by Simon Steinbeiss
parent ff191dc8ec
commit 793675527a

View File

@@ -779,6 +779,8 @@ xtm_process_tree_view_highlight_pid (XtmProcessTreeView *treeview, guint pid) {
gboolean valid; gboolean valid;
gboolean tree; gboolean tree;
guint pid_iter; guint pid_iter;
GtkTreeIter child_iter;
gboolean validParent;
g_object_get (treeview->settings, "process-tree", &tree, NULL); g_object_get (treeview->settings, "process-tree", &tree, NULL);
model = GTK_TREE_MODEL (tree ? treeview->model_tree : treeview->model_filter); model = GTK_TREE_MODEL (tree ? treeview->model_tree : treeview->model_filter);
@@ -800,27 +802,25 @@ xtm_process_tree_view_highlight_pid (XtmProcessTreeView *treeview, guint pid) {
break; break;
} }
if (tree && gtk_tree_model_iter_has_child (model, &iter)) if (gtk_tree_model_iter_has_child (model, &iter))
{ {
GtkTreeIter parent_iter = iter; GtkTreeIter parent_iter = iter;
valid = gtk_tree_model_iter_children (model, &iter, &parent_iter); valid = gtk_tree_model_iter_children (model, &iter, &parent_iter);
} }
else if (tree && !gtk_tree_model_iter_has_child (model, &iter))
{
GtkTreeIter child_iter = iter;
if (!gtk_tree_model_iter_next (model, &iter))
{
gtk_tree_model_iter_parent (model, &iter, &child_iter);
gtk_tree_model_iter_next (model, &iter);
}
else
valid = TRUE;
}
else else
{ {
child_iter = iter;
valid = gtk_tree_model_iter_next (model, &iter); valid = gtk_tree_model_iter_next (model, &iter);
if (tree && !valid)
{
//finding my way up again
do {
validParent = gtk_tree_model_iter_parent (model, &iter, &child_iter);
child_iter = iter;
valid = gtk_tree_model_iter_next (model, &iter);
} while (!valid && validParent);
}
} }
} }
} }