]> spindle.queued.net Git - midori/commitdiff
Search inline directly when preedit text changes
authorChristian Dywan <christian@twotoasts.de>
Tue, 2 Nov 2010 21:14:25 +0000 (22:14 +0100)
committerChristian Dywan <christian@twotoasts.de>
Tue, 2 Nov 2010 21:46:01 +0000 (22:46 +0100)
toolbars/midori-findbar.c
toolbars/midori-findbar.h

index edb8f35d9bffc46e4ba29c7fd0b0c4111b2cd3bd..503168de8b1912b035644a60a76b356af585c3c4 100644 (file)
@@ -97,22 +97,29 @@ midori_findbar_case_sensitive (MidoriFindbar* findbar)
 }
 
 void
-midori_findbar_find (MidoriFindbar* findbar,
-                     gboolean       forward)
+midori_findbar_find_text (MidoriFindbar* findbar,
+                          const gchar*   text,
+                          gboolean       forward)
 {
     MidoriBrowser* browser = midori_browser_get_for_widget (GTK_WIDGET (findbar));
-    const gchar* text;
     gboolean case_sensitive;
     GtkWidget* view;
 
     if (!(view = midori_browser_get_current_tab (browser)))
         return;
 
-    text = gtk_entry_get_text (GTK_ENTRY (findbar->find_text));
     case_sensitive = midori_findbar_case_sensitive (findbar);
     midori_view_search_text (MIDORI_VIEW (view), text, case_sensitive, forward);
 }
 
+void
+midori_findbar_find (MidoriFindbar* findbar,
+                     gboolean       forward)
+{
+    const gchar* text = gtk_entry_get_text (GTK_ENTRY (findbar->find_text));
+    midori_findbar_find_text (findbar, text, forward);
+}
+
 void
 midori_findbar_invoke (MidoriFindbar* findbar)
 {
@@ -161,20 +168,28 @@ midori_findbar_button_close_clicked_cb (GtkWidget*     widget,
 }
 
 static void
-midori_findbar_text_changed_cb (GtkWidget*     entry,
-                                MidoriFindbar* findbar)
+midori_findbar_preedit_changed_cb (GtkWidget*     entry,
+                                   const gchar*   preedit,
+                                   MidoriFindbar* findbar)
 {
     if (findbar->find_typing)
     {
         MidoriBrowser* browser = midori_browser_get_for_widget (entry);
         GtkWidget* view = midori_browser_get_current_tab (browser);
-        const gchar* text = gtk_entry_get_text (GTK_ENTRY (entry));
         midori_view_unmark_text_matches (MIDORI_VIEW (view));
-        if (g_utf8_strlen (text, -1) > 1)
-            midori_findbar_find (findbar, TRUE);
+        if (g_utf8_strlen (preedit, -1) > 1)
+            midori_findbar_find_text (findbar, preedit, TRUE);
     }
 }
 
+static void
+midori_findbar_text_changed_cb (GtkWidget*     entry,
+                                MidoriFindbar* findbar)
+{
+    const gchar* text = gtk_entry_get_text (GTK_ENTRY (entry));
+    midori_findbar_preedit_changed_cb (entry, text, findbar);
+}
+
 static gboolean
 midori_findbar_text_focus_out_event_cb (GtkWidget*     entry,
                                         GdkEventFocus* event,
@@ -227,6 +242,8 @@ midori_findbar_init (MidoriFindbar* findbar)
         G_CALLBACK (midori_findbar_entry_clear_icon_released_cb), NULL);
     g_signal_connect (findbar->find_text, "activate",
         G_CALLBACK (midori_findbar_next_activate_cb), findbar);
+    g_signal_connect (findbar->find_text, "preedit-changed",
+        G_CALLBACK (midori_findbar_preedit_changed_cb), findbar);
     g_signal_connect (findbar->find_text, "changed",
         G_CALLBACK (midori_findbar_text_changed_cb), findbar);
     g_signal_connect (findbar->find_text, "focus-out-event",
index fffa497f057cb859c4015c37cc8c1f1cfa9552da..e74691c87243280866009a4c185fbd92dab01baa 100644 (file)
@@ -42,6 +42,11 @@ void
 midori_findbar_find                   (MidoriFindbar* findbar,
                                        gboolean       forward);
 
+void
+midori_findbar_find_text              (MidoriFindbar* findbar,
+                                       const gchar*   text,
+                                       gboolean       forward);
+
 void
 midori_findbar_set_can_find           (MidoriFindbar* findbar,
                                        gboolean       can_find);