[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