diff options
author | Matthew Barnes <mbarnes@redhat.com> | 2009-09-11 11:26:00 +0800 |
---|---|---|
committer | Matthew Barnes <mbarnes@redhat.com> | 2009-09-11 11:26:00 +0800 |
commit | 144af767578bd50a70a85244dd76d181cdcfb669 (patch) | |
tree | 1375de01eb8a9a98b22780874995b53abd8a8d61 /mail | |
parent | 778402dd5c05dfb606720949559f6b4d13aa617b (diff) | |
download | gsoc2013-evolution-144af767578bd50a70a85244dd76d181cdcfb669.tar.gz gsoc2013-evolution-144af767578bd50a70a85244dd76d181cdcfb669.tar.zst gsoc2013-evolution-144af767578bd50a70a85244dd76d181cdcfb669.zip |
Bug 593892 - 'Find in message' issues when clearing search
Diffstat (limited to 'mail')
-rw-r--r-- | mail/e-mail-search-bar.c | 47 | ||||
-rw-r--r-- | mail/e-mail-search-bar.h | 2 |
2 files changed, 47 insertions, 2 deletions
diff --git a/mail/e-mail-search-bar.c b/mail/e-mail-search-bar.c index bfd4270cb9..c4b552a8cc 100644 --- a/mail/e-mail-search-bar.c +++ b/mail/e-mail-search-bar.c @@ -47,6 +47,7 @@ struct _EMailSearchBarPrivate { enum { PROP_0, + PROP_ACTIVE_SEARCH, PROP_CASE_SENSITIVE, PROP_TEXT, PROP_WEB_VIEW @@ -119,8 +120,11 @@ mail_search_bar_find (EMailSearchBar *search_bar, case_sensitive = e_mail_search_bar_get_case_sensitive (search_bar); text = e_mail_search_bar_get_text (search_bar); - if (text == NULL || *text == '\0') - gtk_widget_hide (search_bar->priv->matches_label); + if (text == NULL || *text == '\0') { + e_mail_search_bar_clear (search_bar); + g_free (text); + return; + } new_search = (search_bar->priv->active_search == NULL) || @@ -165,6 +169,8 @@ mail_search_bar_find (EMailSearchBar *search_bar, search_bar->priv->active_search, case_sensitive, search_forward, FALSE); + g_object_notify (G_OBJECT (search_bar), "active-search"); + /* Update wrapped label visibility. */ widget = search_bar->priv->wrapped_next_box; @@ -217,6 +223,7 @@ mail_search_bar_toggled_cb (EMailSearchBar *search_bar) g_free (search_bar->priv->active_search); search_bar->priv->active_search = NULL; + g_object_notify (G_OBJECT (search_bar), "active-search"); g_object_notify (G_OBJECT (search_bar), "case-sensitive"); } @@ -272,6 +279,12 @@ mail_search_bar_get_property (GObject *object, GParamSpec *pspec) { switch (property_id) { + case PROP_ACTIVE_SEARCH: + g_value_set_boolean ( + value, e_mail_search_bar_get_active_search ( + E_MAIL_SEARCH_BAR (object))); + return; + case PROP_CASE_SENSITIVE: g_value_set_boolean ( value, e_mail_search_bar_get_case_sensitive ( @@ -413,11 +426,15 @@ mail_search_bar_clear (EMailSearchBar *search_bar) g_free (search_bar->priv->active_search); search_bar->priv->active_search = NULL; + gtk_entry_set_text (GTK_ENTRY (search_bar->priv->entry), ""); + gtk_widget_hide (search_bar->priv->wrapped_next_box); gtk_widget_hide (search_bar->priv->wrapped_prev_box); gtk_widget_hide (search_bar->priv->matches_label); mail_search_bar_update_tokenizer (search_bar); + + g_object_notify (G_OBJECT (search_bar), "active-search"); } static void @@ -445,6 +462,16 @@ mail_search_bar_class_init (EMailSearchBarClass *class) g_object_class_install_property ( object_class, + PROP_ACTIVE_SEARCH, + g_param_spec_boolean ( + "active-search", + "Active Search", + NULL, + FALSE, + G_PARAM_READABLE)); + + g_object_class_install_property ( + object_class, PROP_CASE_SENSITIVE, g_param_spec_boolean ( "case-sensitive", @@ -549,6 +576,10 @@ mail_search_bar_init (EMailSearchBar *search_bar) search_bar->priv->entry = g_object_ref (widget); gtk_widget_show (widget); + e_binding_new ( + search_bar, "active-search", + widget, "secondary-icon-sensitive"); + g_signal_connect_swapped ( widget, "activate", G_CALLBACK (mail_search_bar_find_next_cb), search_bar); @@ -571,6 +602,8 @@ mail_search_bar_init (EMailSearchBar *search_bar) gtk_box_pack_start (GTK_BOX (container), widget, FALSE, FALSE, 0); gtk_widget_show (widget); + e_binding_new (search_bar, "active-search", widget, "sensitive"); + g_signal_connect_swapped ( widget, "clicked", G_CALLBACK (mail_search_bar_find_previous_cb), search_bar); @@ -585,6 +618,8 @@ mail_search_bar_init (EMailSearchBar *search_bar) gtk_box_pack_start (GTK_BOX (container), widget, FALSE, FALSE, 0); gtk_widget_show (widget); + e_binding_new (search_bar, "active-search", widget, "sensitive"); + g_signal_connect_swapped ( widget, "clicked", G_CALLBACK (mail_search_bar_find_next_cb), search_bar); @@ -722,6 +757,14 @@ e_mail_search_bar_get_tokenizer (EMailSearchBar *search_bar) } gboolean +e_mail_search_bar_get_active_search (EMailSearchBar *search_bar) +{ + g_return_val_if_fail (E_IS_MAIL_SEARCH_BAR (search_bar), FALSE); + + return (search_bar->priv->active_search != NULL); +} + +gboolean e_mail_search_bar_get_case_sensitive (EMailSearchBar *search_bar) { GtkToggleButton *button; diff --git a/mail/e-mail-search-bar.h b/mail/e-mail-search-bar.h index 1ad343777b..69fa746687 100644 --- a/mail/e-mail-search-bar.h +++ b/mail/e-mail-search-bar.h @@ -71,6 +71,8 @@ void e_mail_search_bar_changed (EMailSearchBar *search_bar); EWebView * e_mail_search_bar_get_web_view (EMailSearchBar *search_bar); ESearchingTokenizer * e_mail_search_bar_get_tokenizer (EMailSearchBar *search_bar); +gboolean e_mail_search_bar_get_active_search + (EMailSearchBar *search_bar); gboolean e_mail_search_bar_get_case_sensitive (EMailSearchBar *search_bar); void e_mail_search_bar_set_case_sensitive |