summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>2023-03-11 12:17:12 -0300
committerGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>2023-03-16 09:28:30 -0300
commit89d9a96c6f67b26465873154450d8a8e324f6334 (patch)
tree9bcdb2d52031dcaf0e57f78f02d791fe5d221478
parentb4f11ce0525fe548ec427e3796450b8bf82ed415 (diff)
downloadgnome-calendar-89d9a96c6f67b26465873154450d8a8e324f6334.tar.gz
search-button: React to 'stop-search' signal
Quit the search entry state when the search entry emits stop-search, usually that's when Escape is pressed when the search entry is focused. Closes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/830
-rw-r--r--src/gui/gcal-search-button.c28
-rw-r--r--src/gui/gcal-search-button.ui1
2 files changed, 22 insertions, 7 deletions
diff --git a/src/gui/gcal-search-button.c b/src/gui/gcal-search-button.c
index 2c6c7363..3f5e4d13 100644
--- a/src/gui/gcal-search-button.c
+++ b/src/gui/gcal-search-button.c
@@ -76,6 +76,18 @@ hide_suggestions (GcalSearchButton *self)
gtk_revealer_set_reveal_child (self->results_revealer, FALSE);
}
+static void
+quit_search_entry (GcalSearchButton *self)
+{
+ gtk_editable_set_width_chars (self->entry, 0);
+ gtk_editable_set_max_width_chars (self->entry, 0);
+ gtk_stack_set_visible_child_name (self->stack, "button");
+
+ hide_suggestions (self);
+
+ gtk_editable_set_text (self->entry, "");
+}
+
static GtkWidget *
create_widget_func (gpointer item,
gpointer user_data)
@@ -130,13 +142,7 @@ static void
on_focus_controller_leave_cb (GtkEventControllerFocus *focus_controller,
GcalSearchButton *self)
{
- gtk_editable_set_width_chars (self->entry, 0);
- gtk_editable_set_max_width_chars (self->entry, 0);
- gtk_stack_set_visible_child_name (self->stack, "button");
-
- hide_suggestions (self);
-
- gtk_editable_set_text (self->entry, "");
+ quit_search_entry (self);
}
static void
@@ -191,6 +197,13 @@ on_entry_search_changed_cb (GtkSearchEntry *entry,
}
static void
+on_entry_stop_search_cb (GtkSearchEntry *search_entry,
+ GcalSearchButton *self)
+{
+ quit_search_entry (self);
+}
+
+static void
on_results_listbox_row_activated_cb (GtkListBox *listbox,
GcalSearchHitRow *row,
GcalSearchButton *self)
@@ -344,6 +357,7 @@ gcal_search_button_class_init (GcalSearchButtonClass *klass)
gtk_widget_class_bind_template_callback (widget_class, on_button_clicked_cb);
gtk_widget_class_bind_template_callback (widget_class, on_focus_controller_leave_cb);
gtk_widget_class_bind_template_callback (widget_class, on_entry_search_changed_cb);
+ gtk_widget_class_bind_template_callback (widget_class, on_entry_stop_search_cb);
gtk_widget_class_bind_template_callback (widget_class, on_results_listbox_row_activated_cb);
gtk_widget_class_bind_template_callback (widget_class, on_results_revealer_child_reveal_state_changed_cb);
diff --git a/src/gui/gcal-search-button.ui b/src/gui/gcal-search-button.ui
index 5c3a40f2..a08de5ad 100644
--- a/src/gui/gcal-search-button.ui
+++ b/src/gui/gcal-search-button.ui
@@ -53,6 +53,7 @@
<property name="max-width-chars">0</property>
<property name="width-chars">0</property>
<signal name="search-changed" handler="on_entry_search_changed_cb" object="GcalSearchButton" swapped="no" />
+ <signal name="stop-search" handler="on_entry_stop_search_cb" object="GcalSearchButton" swapped="no" />
<child>
<object class='GtkShortcutController'>