[evolution] I#1916 - Allow to search in "Describe Filters"
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution] I#1916 - Allow to search in "Describe Filters"
- Date: Thu, 26 May 2022 10:50:10 +0000 (UTC)
commit ff89a99599586ef10bc050539f20b321292c1842
Author: Milan Crha <mcrha redhat com>
Date: Thu May 26 12:49:24 2022 +0200
I#1916 - Allow to search in "Describe Filters"
Closes https://gitlab.gnome.org/GNOME/evolution/-/issues/1916
src/e-util/e-search-bar.c | 57 ++++++++++++++++++++++++++++++++++++++++++++-
src/e-util/e-search-bar.h | 3 +++
src/mail/em-filter-editor.c | 10 +++++++-
3 files changed, 68 insertions(+), 2 deletions(-)
---
diff --git a/src/e-util/e-search-bar.c b/src/e-util/e-search-bar.c
index a3101d25d9..60319f31bc 100644
--- a/src/e-util/e-search-bar.c
+++ b/src/e-util/e-search-bar.c
@@ -34,6 +34,7 @@
struct _ESearchBarPrivate {
EWebView *web_view;
+ GtkWidget *hide_button;
GtkWidget *entry;
GtkWidget *case_sensitive_button;
GtkWidget *wrapped_next_box;
@@ -47,12 +48,14 @@ struct _ESearchBarPrivate {
gchar *active_search;
gboolean search_forward;
+ gboolean can_hide;
};
enum {
PROP_0,
PROP_ACTIVE_SEARCH,
PROP_CASE_SENSITIVE,
+ PROP_CAN_HIDE,
PROP_TEXT,
PROP_WEB_VIEW
};
@@ -307,6 +310,12 @@ search_bar_set_property (GObject *object,
GParamSpec *pspec)
{
switch (property_id) {
+ case PROP_CAN_HIDE:
+ e_search_bar_set_can_hide (
+ E_SEARCH_BAR (object),
+ g_value_get_boolean (value));
+ return;
+
case PROP_CASE_SENSITIVE:
e_search_bar_set_case_sensitive (
E_SEARCH_BAR (object),
@@ -342,6 +351,12 @@ search_bar_get_property (GObject *object,
E_SEARCH_BAR (object)));
return;
+ case PROP_CAN_HIDE:
+ g_value_set_boolean (
+ value, e_search_bar_get_can_hide (
+ E_SEARCH_BAR (object)));
+ return;
+
case PROP_CASE_SENSITIVE:
g_value_set_boolean (
value, e_search_bar_get_case_sensitive (
@@ -378,6 +393,7 @@ search_bar_dispose (GObject *object)
priv->web_view = NULL;
}
+ g_clear_object (&priv->hide_button);
g_clear_object (&priv->entry);
g_clear_object (&priv->case_sensitive_button);
g_clear_object (&priv->prev_button);
@@ -459,7 +475,8 @@ search_bar_key_press_event (GtkWidget *widget,
{
GtkWidgetClass *widget_class;
- if (event->keyval == GDK_KEY_Escape) {
+ if (event->keyval == GDK_KEY_Escape &&
+ e_search_bar_get_can_hide (E_SEARCH_BAR (widget))) {
gtk_widget_hide (widget);
return TRUE;
}
@@ -518,6 +535,16 @@ e_search_bar_class_init (ESearchBarClass *class)
FALSE,
G_PARAM_READABLE));
+ g_object_class_install_property (
+ object_class,
+ PROP_CAN_HIDE,
+ g_param_spec_boolean (
+ "can-hide",
+ "Can Hide",
+ NULL,
+ TRUE,
+ G_PARAM_READWRITE));
+
g_object_class_install_property (
object_class,
PROP_CASE_SENSITIVE,
@@ -576,6 +603,7 @@ e_search_bar_init (ESearchBar *search_bar)
GtkWidget *container;
search_bar->priv = E_SEARCH_BAR_GET_PRIVATE (search_bar);
+ search_bar->priv->can_hide = TRUE;
gtk_box_set_spacing (GTK_BOX (search_bar), 12);
gtk_container_set_border_width (GTK_CONTAINER (search_bar), 6);
@@ -596,6 +624,7 @@ e_search_bar_init (ESearchBar *search_bar)
gtk_button_set_relief (GTK_BUTTON (widget), GTK_RELIEF_NONE);
gtk_widget_set_tooltip_text (widget, _("Close the find bar"));
gtk_box_pack_start (GTK_BOX (container), widget, FALSE, FALSE, 0);
+ search_bar->priv->hide_button = g_object_ref (widget);
gtk_widget_show (widget);
g_signal_connect_swapped (
@@ -825,3 +854,29 @@ e_search_bar_set_text (ESearchBar *search_bar,
/* This will trigger a "notify::text" signal. */
gtk_entry_set_text (entry, text);
}
+
+gboolean
+e_search_bar_get_can_hide (ESearchBar *search_bar)
+{
+ g_return_val_if_fail (E_IS_SEARCH_BAR (search_bar), FALSE);
+
+ return search_bar->priv->can_hide;
+}
+
+void
+e_search_bar_set_can_hide (ESearchBar *search_bar,
+ gboolean can_hide)
+{
+ g_return_if_fail (E_IS_SEARCH_BAR (search_bar));
+
+ if (!search_bar->priv->can_hide == !can_hide)
+ return;
+
+ search_bar->priv->can_hide = can_hide;
+
+ gtk_widget_set_visible (search_bar->priv->hide_button, can_hide);
+ if (!can_hide)
+ gtk_widget_show (GTK_WIDGET (search_bar));
+
+ g_object_notify (G_OBJECT (search_bar), "can-hide");
+}
diff --git a/src/e-util/e-search-bar.h b/src/e-util/e-search-bar.h
index 2fbc32fe17..9fd9551c83 100644
--- a/src/e-util/e-search-bar.h
+++ b/src/e-util/e-search-bar.h
@@ -79,6 +79,9 @@ void e_search_bar_set_case_sensitive (ESearchBar *search_bar,
gchar * e_search_bar_get_text (ESearchBar *search_bar);
void e_search_bar_set_text (ESearchBar *search_bar,
const gchar *text);
+gboolean e_search_bar_get_can_hide (ESearchBar *search_bar);
+void e_search_bar_set_can_hide (ESearchBar *search_bar,
+ gboolean can_hide);
G_END_DECLS
diff --git a/src/mail/em-filter-editor.c b/src/mail/em-filter-editor.c
index b2c07cb533..e88a7ee000 100644
--- a/src/mail/em-filter-editor.c
+++ b/src/mail/em-filter-editor.c
@@ -38,7 +38,7 @@ static void
emfe_show_html (GtkWindow *parent,
const gchar *html)
{
- GtkWidget *dialog, *widget, *container;
+ GtkWidget *dialog, *widget, *container, *searchbar;
dialog = gtk_dialog_new_with_buttons (_("Description of Filters"), parent,
GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
@@ -71,6 +71,14 @@ emfe_show_html (GtkWindow *parent,
NULL);
gtk_container_add (GTK_CONTAINER (container), widget);
+ container = gtk_dialog_get_content_area (GTK_DIALOG (dialog));
+ searchbar = e_search_bar_new (E_WEB_VIEW (widget));
+ g_object_set (G_OBJECT (searchbar),
+ "can-hide", FALSE,
+ "visible", TRUE,
+ NULL);
+ gtk_container_add (GTK_CONTAINER (container), searchbar);
+
e_web_view_load_string (E_WEB_VIEW (widget), html);
gtk_dialog_run (GTK_DIALOG (dialog));
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]