diff options
author | Georges Basile Stavracas Neto <georges.stavracas@gmail.com> | 2023-03-11 12:17:12 -0300 |
---|---|---|
committer | Georges Basile Stavracas Neto <georges.stavracas@gmail.com> | 2023-03-16 09:28:30 -0300 |
commit | 89d9a96c6f67b26465873154450d8a8e324f6334 (patch) | |
tree | 9bcdb2d52031dcaf0e57f78f02d791fe5d221478 | |
parent | b4f11ce0525fe548ec427e3796450b8bf82ed415 (diff) | |
download | gnome-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.c | 28 | ||||
-rw-r--r-- | 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 @@ -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'> |