[gnome-builder] gui: force search engine load upon focusing search box



commit ce5ffac07c9abe80269589e90f2b01837a2f671c
Author: Christian Hergert <chergert redhat com>
Date:   Tue Sep 10 16:17:12 2019 -0700

    gui: force search engine load upon focusing search box
    
    This just increases the chances that we'll have a loaded search engine
    while the user types. Although, this is only likely to help much in the
    "open in editor (non-project) mode" where we don't have proper hooks to
    initialize state after project load has settled.
    
    Related #1034

 src/libide/gui/ide-search-button.c | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)
---
diff --git a/src/libide/gui/ide-search-button.c b/src/libide/gui/ide-search-button.c
index 168601671..701b1e006 100644
--- a/src/libide/gui/ide-search-button.c
+++ b/src/libide/gui/ide-search-button.c
@@ -177,6 +177,25 @@ suggestion_activated (DzlSuggestionEntry *entry,
   ide_search_result_activate (IDE_SEARCH_RESULT (suggestion), focus);
 }
 
+static gboolean
+search_entry_focus_in (GtkEntry      *entry,
+                       GdkEventFocus *focus,
+                       gpointer       user_data)
+{
+  IdeWorkbench *workbench;
+  IdeSearchEngine *engine;
+
+  g_assert (GTK_IS_ENTRY (entry));
+  g_assert (focus != NULL);
+
+  /* Load search engine if it is not already */
+  workbench = ide_widget_get_workbench (GTK_WIDGET (entry));
+  engine = ide_workbench_get_search_engine (workbench);
+  (void)engine;
+
+  return GDK_EVENT_PROPAGATE;
+}
+
 static void
 ide_search_button_class_init (IdeSearchButtonClass *klass)
 {
@@ -203,6 +222,7 @@ ide_search_button_init (IdeSearchButton *self)
 
   dzl_gtk_widget_add_style_class (GTK_WIDGET (entry), "global-search");
   g_signal_connect (entry, "changed", G_CALLBACK (search_entry_changed), NULL);
+  g_signal_connect (entry, "focus-in-event", G_CALLBACK (search_entry_focus_in), NULL);
   g_signal_connect (entry, "suggestion-activated", G_CALLBACK (suggestion_activated), NULL);
   dzl_suggestion_entry_set_position_func (entry, search_popover_position_func, NULL, NULL);
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]