diff options
author | Gabor Karsay <gabor.karsay@gmx.at> | 2019-10-24 18:58:26 +0200 |
---|---|---|
committer | Bastien Nocera <hadess@hadess.net> | 2020-04-01 14:07:25 +0200 |
commit | 4fd7a94a43a2879c71d72b44010e2840e7cdb7f8 (patch) | |
tree | ae3663a2f3a94052e72674d1d94d2d7ebb8b491c /src | |
parent | 67f7abdeea78cacf1ce471b73950ad7e1b97f326 (diff) | |
download | totem-4fd7a94a43a2879c71d72b44010e2840e7cdb7f8.tar.gz |
grilo: Keep focus on search entry after validation
Don't make the search entry insensitive while the search is ongoing,
instead cancel the ongoing operation if a new search is started.
Closes: #188
Helps: #113
Diffstat (limited to 'src')
-rw-r--r-- | src/totem-grilo.c | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/src/totem-grilo.c b/src/totem-grilo.c index 0f9396c19..a41a69f17 100644 --- a/src/totem-grilo.c +++ b/src/totem-grilo.c @@ -813,12 +813,18 @@ search_cb (GrlSource *source, self = TOTEM_GRILO (user_data); - if (error != NULL && - g_error_matches (error, - GRL_CORE_ERROR, - GRL_CORE_ERROR_OPERATION_CANCELLED) == FALSE) { - window = totem_object_get_main_window (self->priv->totem); - totem_interface_error (_("Search Error"), error->message, window); + if (error != NULL) { + if (g_error_matches (error, + GRL_CORE_ERROR, + GRL_CORE_ERROR_OPERATION_CANCELLED)) { + g_application_unmark_busy (g_application_get_default ()); + /* Don't zero out self->priv->search_id to avoid a race + * condition with next search. Don't update thumbnails. */ + return; + } else { + window = totem_object_get_main_window (self->priv->totem); + totem_interface_error (_("Search Error"), error->message, window); + } } if (media != NULL) { @@ -840,7 +846,6 @@ search_cb (GrlSource *source, if (remaining == 0) { g_application_unmark_busy (g_application_get_default ()); self->priv->search_id = 0; - gtk_widget_set_sensitive (self->priv->search_entry, TRUE); update_search_thumbnails (self); } } @@ -877,7 +882,6 @@ search_more (TotemGrilo *self) search_options = get_search_options (self); - gtk_widget_set_sensitive (self->priv->search_entry, FALSE); self->priv->search_page++; self->priv->search_remaining = PAGE_SIZE; @@ -911,9 +915,10 @@ search (TotemGrilo *self, GrlSource *source, const gchar *text) { + g_clear_handle_id (&self->priv->search_id, grl_operation_cancel); + gtk_tree_store_clear (GTK_TREE_STORE (self->priv->search_results_model)); // g_hash_table_remove_all (self->priv->cache_thumbnails); - gtk_widget_set_sensitive (self->priv->search_entry, FALSE); self->priv->search_source = source; g_free (self->priv->search_text); self->priv->search_text = g_strdup (text); |