[Xfce4-commits] <midori:master> Rename midori_findbar_find_text/continue and always highlight matches

Christian Dywan noreply at xfce.org
Thu Oct 11 00:36:03 CEST 2012


Updating branch refs/heads/master
         to ef7fa4aca51ef43082ff9454700b48254329a202 (commit)
       from 6c141b995d6a963e3466f8fd6c8b90bf6c2aa17f (commit)

commit ef7fa4aca51ef43082ff9454700b48254329a202
Author: Christian Dywan <christian at twotoasts.de>
Date:   Wed Oct 10 21:23:36 2012 +0200

    Rename midori_findbar_find_text/continue and always highlight matches

 midori/midori-browser.c   |    8 +++--
 midori/midori-tab.vala    |   12 ++++---
 midori/midori-view.c      |   35 ++----------------
 toolbars/midori-findbar.c |   89 +++++++++------------------------------------
 toolbars/midori-findbar.h |   10 ++----
 5 files changed, 36 insertions(+), 118 deletions(-)

diff --git a/midori/midori-browser.c b/midori/midori-browser.c
index bb17895..c45ec23 100644
--- a/midori/midori-browser.c
+++ b/midori/midori-browser.c
@@ -2731,21 +2731,23 @@ static void
 _action_find_activate (GtkAction*     action,
                        MidoriBrowser* browser)
 {
-    midori_findbar_invoke (MIDORI_FINDBAR (browser->find));
+    GtkWidget* view = midori_browser_get_current_tab (browser);
+    midori_findbar_invoke (MIDORI_FINDBAR (browser->find),
+        midori_view_get_selected_text (MIDORI_VIEW (view)));
 }
 
 static void
 _action_find_next_activate (GtkAction*     action,
                             MidoriBrowser* browser)
 {
-    midori_findbar_find_text (MIDORI_FINDBAR (browser->find), NULL, TRUE);
+    midori_findbar_continue (MIDORI_FINDBAR (browser->find), TRUE);
 }
 
 static void
 _action_find_previous_activate (GtkAction*     action,
                                 MidoriBrowser* browser)
 {
-    midori_findbar_find_text (MIDORI_FINDBAR (browser->find), NULL, FALSE);
+    midori_findbar_continue (MIDORI_FINDBAR (browser->find), FALSE);
 }
 
 static void
diff --git a/midori/midori-tab.vala b/midori/midori-tab.vala
index 8f67657..437e3ce 100644
--- a/midori/midori-tab.vala
+++ b/midori/midori-tab.vala
@@ -78,6 +78,8 @@ namespace Midori {
            Since: 0.3.4
          */
         public signal void detach_inspector (WebKit.WebView inspector_view);
+        /* Allow the browser to provide the find bar */
+        public signal void search_text (bool found, string typing);
 
         public bool is_blank () {
             return URI.is_blank (uri);
@@ -169,12 +171,12 @@ namespace Midori {
             web_view.unmark_text_matches ();
         }
 
-        public void mark_text_matches (string text, bool case_sensitive) {
+        public bool find (string text, bool case_sensitive, bool forward) {
+            bool found = false;
+            found = web_view.search_text (text, case_sensitive, forward, true);
             web_view.mark_text_matches (text, case_sensitive, 0);
-        }
-
-        public void set_highlight_text_matches (bool highlight) {
-            web_view.set_highlight_text_matches (highlight);
+            web_view.set_highlight_text_matches (true);
+            return found;
         }
     }
 }
diff --git a/midori/midori-view.c b/midori/midori-view.c
index c5eabd7..8d7be7e 100644
--- a/midori/midori-view.c
+++ b/midori/midori-view.c
@@ -153,7 +153,6 @@ enum {
     NEW_WINDOW,
     NEW_VIEW,
     DOWNLOAD_REQUESTED,
-    SEARCH_TEXT,
     ADD_BOOKMARK,
 
     LAST_SIGNAL
@@ -279,30 +278,6 @@ midori_view_class_init (MidoriViewClass* class)
         G_TYPE_OBJECT);
 
     /**
-     * MidoriView::search-text:
-     * @view: the object on which the signal is emitted
-     * @found: whether the search was successful
-     * @typing: whether the search was initiated by typing
-     *
-     * Emitted when a search is performed. Either manually
-     * invoked or automatically by typing. The value of typing
-     * is actually the text the user typed.
-     *
-     * Note that in 0.1.3 the argument @typing was introduced.
-     */
-    signals[SEARCH_TEXT] = g_signal_new (
-        "search-text",
-        G_TYPE_FROM_CLASS (class),
-        (GSignalFlags)(G_SIGNAL_RUN_LAST),
-        0,
-        0,
-        NULL,
-        midori_cclosure_marshal_VOID__BOOLEAN_STRING,
-        G_TYPE_NONE, 2,
-        G_TYPE_BOOLEAN,
-        G_TYPE_STRING);
-
-    /**
      * MidoriView::add-bookmark:
      * @view: the object on which the signal is emitted
      * @uri: the bookmark URI
@@ -1939,7 +1914,7 @@ gtk_widget_key_press_event_cb (WebKitWebView* web_view,
         midori_findbar_search_text (MIDORI_FINDBAR (view->overlay_find),
             (GtkWidget*)view, TRUE, katze_str_non_null (text));
         #else
-        g_signal_emit (view, signals[SEARCH_TEXT], 0, TRUE, text ? text : "");
+        g_signal_emit_by_name (view, "search-text", TRUE, katze_str_non_null (text));
         #endif
         g_free (text);
         return TRUE;
@@ -5201,14 +5176,12 @@ midori_view_search_text (MidoriView*  view,
     if (gtk_widget_get_visible (view->overlay_find))
     {
         text = midori_findbar_get_text (MIDORI_FINDBAR (view->overlay_find));
-        webkit_web_view_search_text (WEBKIT_WEB_VIEW (view->web_view),
-            text, case_sensitive, forward, TRUE);
+        midori_tab_find (MIDORI_TAB (view), text, case_sensitive, forward);
         return;
     }
     #endif
-    g_signal_emit (view, signals[SEARCH_TEXT], 0,
-        webkit_web_view_search_text (WEBKIT_WEB_VIEW (view->web_view),
-            text, case_sensitive, forward, TRUE), NULL);
+    g_signal_emit_by_name (view, "search-text",
+        midori_tab_find (MIDORI_TAB (view), text, case_sensitive, forward), NULL);
 }
 
 /**
diff --git a/toolbars/midori-findbar.c b/toolbars/midori-findbar.c
index a0b5076..ac50a67 100644
--- a/toolbars/midori-findbar.c
+++ b/toolbars/midori-findbar.c
@@ -27,7 +27,6 @@ struct _MidoriFindbar
     GtkToolItem* previous;
     GtkToolItem* next;
     GtkToolItem* find_case;
-    GtkToolItem* find_highlight;
     GtkToolItem* find_close;
     gboolean find_typing;
 };
@@ -71,7 +70,7 @@ midori_findbar_done (MidoriFindbar* findbar)
     midori_tab_unmark_text_matches (MIDORI_TAB (view));
     gtk_widget_hide (GTK_WIDGET (findbar));
     findbar->find_typing = FALSE;
-    gtk_window_set_focus (GTK_WINDOW (browser), view);
+    gtk_widget_grab_focus (view);
 }
 
 static gboolean
@@ -86,7 +85,7 @@ midori_findbar_find_key_press_event_cb (MidoriFindbar* findbar,
     else if (event->keyval == GDK_KEY_Return
           && (event->state & GDK_SHIFT_MASK))
     {
-        midori_findbar_find_text (findbar, NULL, FALSE);
+        midori_findbar_continue (findbar, FALSE);
         return TRUE;
     }
 
@@ -107,22 +106,20 @@ midori_findbar_case_sensitive (MidoriFindbar* findbar)
 }
 
 void
-midori_findbar_find_text (MidoriFindbar* findbar,
-                          const gchar*   text,
-                          gboolean       forward)
+midori_findbar_continue (MidoriFindbar* findbar,
+                         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;
 
-    if (text == NULL)
-        text = gtk_entry_get_text (GTK_ENTRY (findbar->find_text));
-
+    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);
+    midori_tab_find (MIDORI_TAB (view), text, case_sensitive, forward);
 }
 
 /**
@@ -141,39 +138,19 @@ midori_findbar_get_text (MidoriFindbar* findbar)
     return gtk_entry_get_text (GTK_ENTRY (findbar->find_text));
 }
 
-/**
- * midori_findbar_find:
- * @findbar: #MidoriFindbar
- * @forward: %TRUE to search forward
- *
- * Advance to the next match.
- *
- * Deprecated: 0.4.5: Use midori_findbar_find_text() instead.
- **/
 void
-midori_findbar_find (MidoriFindbar* findbar,
-                     gboolean       forward)
-{
-    midori_findbar_find_text (findbar, NULL, forward);
-}
-
-void
-midori_findbar_invoke (MidoriFindbar* findbar)
+midori_findbar_invoke (MidoriFindbar* findbar,
+                       const gchar*   selected_text)
 {
     if (gtk_widget_get_visible (GTK_WIDGET (findbar)))
         gtk_widget_grab_focus (GTK_WIDGET (findbar->find_text));
     else
     {
-        MidoriBrowser* browser = midori_browser_get_for_widget (findbar->find_text);
-        GtkWidget* view = midori_browser_get_current_tab (browser);
-        const gchar* text;
-
         midori_findbar_set_icon (findbar, GTK_ICON_ENTRY_PRIMARY, STOCK_EDIT_FIND);
         gtk_widget_show (GTK_WIDGET (findbar->find_case));
-        gtk_widget_show (GTK_WIDGET (findbar->find_highlight));
         gtk_widget_show (GTK_WIDGET (findbar->find_close));
-        if ((text = midori_view_get_selected_text (MIDORI_VIEW (view))))
-            gtk_entry_set_text (GTK_ENTRY (findbar->find_text), text);
+        if (selected_text != NULL)
+            gtk_entry_set_text (GTK_ENTRY (findbar->find_text), selected_text);
         gtk_widget_show (GTK_WIDGET (findbar));
         gtk_widget_grab_focus (GTK_WIDGET (findbar->find_text));
     }
@@ -183,14 +160,14 @@ static void
 midori_findbar_next_activate_cb (GtkWidget*     entry,
                                  MidoriFindbar* findbar)
 {
-    midori_findbar_find_text (findbar, NULL, TRUE);
+    midori_findbar_continue (findbar, TRUE);
 }
 
 static void
 midori_findbar_previous_clicked_cb (GtkWidget*     entry,
                                     MidoriFindbar* findbar)
 {
-    midori_findbar_find_text (findbar, NULL, FALSE);
+    midori_findbar_continue (findbar, FALSE);
 }
 
 static void
@@ -210,8 +187,9 @@ midori_findbar_preedit_changed_cb (GtkWidget*     entry,
     midori_tab_unmark_text_matches (MIDORI_TAB (view));
     if (g_utf8_strlen (preedit, -1) >= 1)
     {
+        gboolean case_sensitive = midori_findbar_case_sensitive (findbar);
         midori_findbar_set_icon (findbar, GTK_ICON_ENTRY_SECONDARY, STOCK_EDIT_CLEAR);
-        midori_findbar_find_text (findbar, preedit, TRUE);
+        midori_tab_find (MIDORI_TAB (view), preedit, case_sensitive, TRUE);
     }
     else
         midori_findbar_set_icon (findbar, GTK_ICON_ENTRY_SECONDARY, NULL);
@@ -236,16 +214,6 @@ midori_findbar_text_focus_out_event_cb (GtkWidget*     entry,
 }
 
 static void
-midori_findbar_highlight_toggled_cb (GtkToggleToolButton* toolitem,
-                                     MidoriFindbar*       findbar)
-{
-    MidoriBrowser* browser = midori_browser_get_for_widget (GTK_WIDGET (findbar));
-    GtkWidget* view = midori_browser_get_current_tab (browser);
-    gboolean highlight = gtk_toggle_tool_button_get_active (toolitem);
-    midori_tab_set_highlight_text_matches (MIDORI_TAB (view), highlight);
-}
-
-static void
 midori_findbar_init (MidoriFindbar* findbar)
 {
     GtkToolItem* toolitem;
@@ -277,10 +245,6 @@ midori_findbar_init (MidoriFindbar* findbar)
     gtk_container_add (GTK_CONTAINER (toolitem), findbar->find_text);
     gtk_tool_item_set_expand (GTK_TOOL_ITEM (toolitem), TRUE);
     gtk_toolbar_insert (GTK_TOOLBAR (findbar), toolitem, -1);
-    #if HAVE_HILDON
-    findbar->find_case = gtk_toggle_tool_button_new ();
-    findbar->find_highlight = gtk_toggle_tool_button_new ();
-    #else
     findbar->previous = gtk_tool_button_new_from_stock (GTK_STOCK_GO_BACK);
     g_signal_connect (findbar->previous, "clicked",
         G_CALLBACK (midori_findbar_previous_clicked_cb), findbar);
@@ -297,20 +261,9 @@ midori_findbar_init (MidoriFindbar* findbar)
     gtk_tool_button_set_label (GTK_TOOL_BUTTON (findbar->find_case), _("Match Case"));
     gtk_tool_item_set_is_important (GTK_TOOL_ITEM (findbar->find_case), TRUE);
     gtk_toolbar_insert (GTK_TOOLBAR (findbar), findbar->find_case, -1);
-    findbar->find_highlight = gtk_toggle_tool_button_new_from_stock (
-        GTK_STOCK_SELECT_ALL);
-    #endif
-    g_signal_connect (findbar->find_highlight, "toggled",
-                      G_CALLBACK (midori_findbar_highlight_toggled_cb), findbar);
-    gtk_tool_button_set_label (GTK_TOOL_BUTTON (findbar->find_highlight),
-                               _("Highlight Matches"));
-    gtk_tool_item_set_is_important (GTK_TOOL_ITEM (findbar->find_highlight), TRUE);
-    gtk_toolbar_insert (GTK_TOOLBAR (findbar), findbar->find_highlight, -1);
     toolitem = gtk_separator_tool_item_new ();
     gtk_separator_tool_item_set_draw (GTK_SEPARATOR_TOOL_ITEM (toolitem), FALSE);
-    #if !HAVE_HILDON
     gtk_tool_item_set_expand (GTK_TOOL_ITEM (toolitem), TRUE);
-    #endif
     gtk_toolbar_insert (GTK_TOOLBAR (findbar), toolitem, -1);
     findbar->find_close = gtk_tool_button_new_from_stock (GTK_STOCK_CLOSE);
     gtk_tool_button_set_label (GTK_TOOL_BUTTON (findbar->find_close),
@@ -338,25 +291,20 @@ midori_findbar_search_text (MidoriFindbar* findbar,
 {
     const gchar* text;
     gboolean case_sensitive;
-    gboolean highlight;
 
     midori_findbar_set_icon (findbar, GTK_ICON_ENTRY_PRIMARY, found ? STOCK_EDIT_FIND : STOCK_STOP);
 
     if (typing)
     {
-        MidoriBrowser* browser = midori_browser_get_for_widget (view);
         gint position = -1;
 
         findbar->find_typing = TRUE;
-        gtk_toggle_tool_button_set_active (GTK_TOGGLE_TOOL_BUTTON (
-            findbar->find_highlight), TRUE);
         gtk_widget_hide (GTK_WIDGET (findbar->find_case));
-        gtk_widget_hide (GTK_WIDGET (findbar->find_highlight));
         gtk_widget_hide (GTK_WIDGET (findbar->find_close));
         if (!gtk_widget_get_visible (GTK_WIDGET (findbar)))
             gtk_entry_set_text (GTK_ENTRY (findbar->find_text), "");
         gtk_widget_show (GTK_WIDGET (findbar));
-        gtk_window_set_focus (GTK_WINDOW (browser), findbar->find_text);
+        gtk_widget_grab_focus (findbar->find_text);
         gtk_editable_insert_text (GTK_EDITABLE (findbar->find_text),
                                  typing, -1, &position);
         gtk_editable_set_position (GTK_EDITABLE (findbar->find_text), -1);
@@ -365,10 +313,7 @@ midori_findbar_search_text (MidoriFindbar* findbar,
     {
         text = gtk_entry_get_text (GTK_ENTRY (findbar->find_text));
         case_sensitive = midori_findbar_case_sensitive (findbar);
-        midori_tab_mark_text_matches (MIDORI_TAB (view), text, case_sensitive);
-        highlight = gtk_toggle_tool_button_get_active (
-            GTK_TOGGLE_TOOL_BUTTON (findbar->find_highlight));
-        midori_tab_set_highlight_text_matches (MIDORI_TAB (view), highlight);
+        midori_tab_find (MIDORI_TAB (view), text, case_sensitive, TRUE);
     }
 }
 
diff --git a/toolbars/midori-findbar.h b/toolbars/midori-findbar.h
index 7a7ea19..9413e2e 100644
--- a/toolbars/midori-findbar.h
+++ b/toolbars/midori-findbar.h
@@ -36,15 +36,11 @@ GType
 midori_findbar_get_type               (void);
 
 void
-midori_findbar_invoke                 (MidoriFindbar* findbar);
+midori_findbar_invoke                 (MidoriFindbar* findbar,
+                                       const gchar*   selected_text);
 
 void
-midori_findbar_find                   (MidoriFindbar* findbar,
-                                       gboolean       forward);
-
-void
-midori_findbar_find_text              (MidoriFindbar* findbar,
-                                       const gchar*   text,
+midori_findbar_continue               (MidoriFindbar* findbar,
                                        gboolean       forward);
 
 const gchar*


More information about the Xfce4-commits mailing list