Maybe one more comment - I think it would be good to always update all 
children, i.e.

```diff
diff --git a/src/prefs.c b/src/prefs.c
index ec609e5c7..81cc3d623 100644
--- a/src/prefs.c
+++ b/src/prefs.c
@@ -1444,7 +1444,7 @@ static void kb_tree_update_visibility(GtkTreeStore 
*store, const gchar *entry_te
                        return;
 
                /* foreach child */
-               while (!visible_parent)
+               while (TRUE)
                {
                        gboolean visible;
                        gchar *action_name;
@@ -1459,7 +1459,7 @@ static void kb_tree_update_visibility(GtkTreeStore 
*store, const gchar *entry_te
                        if (visible)
                                visible_children = TRUE;
 
-                       gtk_tree_store_set(store, &child, KB_TREE_VISIBLE, 
visible, -1);
+                       gtk_tree_store_set(store, &child, KB_TREE_VISIBLE, 
visible || visible_parent, -1);
 
                        if (! gtk_tree_model_iter_next(model, &child))
                                break;
```

When you try to search for something like "file ff", it filters out everything. 
But when you remove the last "f" (so the entry contins "file f"), it should 
again show all items from the "File" group. It doesn't happen now because 
children visibility was set to FALSE previously and they don't get re-updated 
because the while loop is skipped.

-- 
Reply to this email directly or view it on GitHub:
https://github.com/geany/geany/pull/4192#issuecomment-2585800564
You are receiving this because you are subscribed to this thread.

Message ID: <geany/geany/pull/4192/c2585800...@github.com>

Reply via email to