From 89d9a96c6f67b26465873154450d8a8e324f6334 Mon Sep 17 00:00:00 2001 From: Georges Basile Stavracas Neto Date: Sat, 11 Mar 2023 12:17:12 -0300 Subject: [PATCH] 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 --- src/gui/gcal-search-button.c | 28 +++++++++++++++++++++------- src/gui/gcal-search-button.ui | 1 + 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 @@ -190,6 +196,13 @@ on_entry_search_changed_cb (GtkSearchEntry *entry, GCAL_EXIT; } +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, @@ -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 @@ 0 0 +