Don't show clear in inline find if there's no text

Fixes: https://bugs.launchpad.net/midori/+bug/772841
This commit is contained in:
Robert Roth 2011-10-09 12:41:46 +02:00 committed by Christian Dywan
parent 3e60f4424b
commit 09d1950029
1 changed files with 24 additions and 9 deletions

View File

@ -54,9 +54,19 @@ midori_findbar_set_icon (MidoriFindbar* findbar,
GtkIconEntryPosition icon_pos,
const gchar* icon_name)
{
gchar* symbolic_icon_name = g_strconcat (icon_name, "-symbolic", NULL);
#if !HAVE_HILDON
GdkScreen* screen = gtk_widget_get_screen (findbar->find_text);
GtkIconTheme* icon_theme = gtk_icon_theme_get_for_screen (screen);
gchar* symbolic_icon_name;
if (icon_name == NULL)
{
gtk_icon_entry_set_icon_from_icon_name (GTK_ICON_ENTRY (findbar->find_text),
icon_pos, NULL);
return;
}
symbolic_icon_name = g_strconcat (icon_name, "-symbolic", NULL);
if (gtk_icon_theme_has_icon (icon_theme, symbolic_icon_name))
gtk_icon_entry_set_icon_from_icon_name (GTK_ICON_ENTRY (findbar->find_text),
icon_pos, symbolic_icon_name);
@ -64,6 +74,7 @@ midori_findbar_set_icon (MidoriFindbar* findbar,
gtk_icon_entry_set_icon_from_icon_name (GTK_ICON_ENTRY (findbar->find_text),
icon_pos, icon_name);
g_free (symbolic_icon_name);
#endif
}
static void
@ -104,7 +115,13 @@ midori_findbar_entry_clear_icon_released_cb (GtkIconEntry* entry,
gpointer user_data)
{
if (icon_pos == GTK_ICON_ENTRY_SECONDARY)
{
gtk_entry_set_text (GTK_ENTRY (entry), "");
#if !HAVE_HILDON
gtk_icon_entry_set_icon_from_stock (GTK_ICON_ENTRY (entry),
GTK_ICON_ENTRY_PRIMARY, GTK_STOCK_FIND);
#endif
}
}
static gboolean
@ -155,10 +172,8 @@ midori_findbar_invoke (MidoriFindbar* findbar)
GtkWidget* view = midori_browser_get_current_tab (browser);
const gchar* text;
#if !HAVE_HILDON
midori_findbar_set_icon (findbar, GTK_ICON_ENTRY_PRIMARY, "edit-find");
gtk_widget_show (GTK_WIDGET (findbar->find_case));
#endif
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))))
@ -197,8 +212,13 @@ midori_findbar_preedit_changed_cb (GtkWidget* entry,
MidoriBrowser* browser = midori_browser_get_for_widget (entry);
GtkWidget* view = midori_browser_get_current_tab (browser);
midori_view_unmark_text_matches (MIDORI_VIEW (view));
if (g_utf8_strlen (preedit, -1) > 1)
if (g_utf8_strlen (preedit, -1) >= 1)
{
midori_findbar_set_icon (findbar, GTK_ICON_ENTRY_SECONDARY, "edit-clear");
midori_findbar_find_text (findbar, preedit, TRUE);
}
else
midori_findbar_set_icon (findbar, GTK_ICON_ENTRY_SECONDARY, NULL);
}
static void
@ -247,12 +267,9 @@ midori_findbar_init (MidoriFindbar* findbar)
gtk_label_new_with_mnemonic (_("_Inline Find:")));
gtk_toolbar_insert (GTK_TOOLBAR (findbar), toolitem, -1);
findbar->find_text = gtk_icon_entry_new ();
#if !HAVE_HILDON
midori_findbar_set_icon (findbar, GTK_ICON_ENTRY_PRIMARY, "edit-find");
midori_findbar_set_icon (findbar, GTK_ICON_ENTRY_SECONDARY, "edit-clear");
gtk_icon_entry_set_icon_highlight (GTK_ICON_ENTRY (findbar->find_text),
GTK_ICON_ENTRY_SECONDARY, TRUE);
#endif
g_signal_connect (findbar->find_text, "icon-release",
G_CALLBACK (midori_findbar_entry_clear_icon_released_cb), NULL);
g_signal_connect (findbar->find_text, "activate",
@ -333,9 +350,7 @@ midori_findbar_search_text (MidoriFindbar* findbar,
gboolean case_sensitive;
gboolean highlight;
#if !HAVE_HILDON
midori_findbar_set_icon (findbar, GTK_ICON_ENTRY_PRIMARY, found ? "edit-find" : "stop");
#endif
if (typing)
{