From 793675527aaa9d9cb54d6438b665cbe8e183e5ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20Sch=C3=BCller?= Date: Thu, 26 Jan 2017 20:28:17 +0100 Subject: [PATCH] fixed tree traversal --- src/process-tree-view.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/process-tree-view.c b/src/process-tree-view.c index e8745c0..748610a 100644 --- a/src/process-tree-view.c +++ b/src/process-tree-view.c @@ -779,6 +779,8 @@ xtm_process_tree_view_highlight_pid (XtmProcessTreeView *treeview, guint pid) { gboolean valid; gboolean tree; guint pid_iter; + GtkTreeIter child_iter; + gboolean validParent; g_object_get (treeview->settings, "process-tree", &tree, NULL); 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; } - if (tree && gtk_tree_model_iter_has_child (model, &iter)) + if (gtk_tree_model_iter_has_child (model, &iter)) { GtkTreeIter parent_iter = 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 { + child_iter = 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); + } } } }