/* Callback used from GtkSearchEngine when the query is done running */
static void
search_engine_finished_cb (GtkSearchEngine *engine,
+ gboolean got_results,
gpointer data)
{
GtkFileChooserWidget *impl = GTK_FILE_CHOOSER_WIDGET (data);
impl->show_progress_timeout = 0;
}
- if (gtk_tree_model_iter_n_children (GTK_TREE_MODEL (impl->search_model), NULL) == 0)
+ if (!got_results)
{
gtk_stack_set_visible_child_name (GTK_STACK (impl->browse_files_stack), "empty");
gtk_widget_grab_focus (impl->search_entry);
struct _GtkSearchEnginePrivate {
GtkSearchEngine *native;
gboolean native_running;
+ gboolean got_results;
gchar *native_error;
GtkSearchEngine *model;
G_STRUCT_OFFSET (GtkSearchEngineClass, finished),
NULL, NULL,
NULL,
- G_TYPE_NONE, 0);
+ G_TYPE_NONE, 1, G_TYPE_BOOLEAN);
signals[ERROR] =
g_signal_new (I_("error"),
else if (engine->priv->model_error)
_gtk_search_engine_error (engine, engine->priv->model_error);
else
- _gtk_search_engine_finished (engine);
+ _gtk_search_engine_finished (engine, engine->priv->got_results);
+
+ engine->priv->got_results = FALSE;
}
}
}
static void
finished (GtkSearchEngine *engine,
+ gboolean got_results,
gpointer data)
{
GtkSearchEngine *composite = GTK_SEARCH_ENGINE (data);
else if (engine == composite->priv->model)
composite->priv->model_running = FALSE;
+ composite->priv->got_results |= got_results;
update_status (composite);
}
}
void
-_gtk_search_engine_finished (GtkSearchEngine *engine)
+_gtk_search_engine_finished (GtkSearchEngine *engine,
+ gboolean got_results)
{
g_return_if_fail (GTK_IS_SEARCH_ENGINE (engine));
- g_signal_emit (engine, signals[FINISHED], 0);
+ g_signal_emit (engine, signals[FINISHED], 0, got_results);
}
void
void _gtk_search_engine_hits_added (GtkSearchEngine *engine,
GList *hits);
-void _gtk_search_engine_finished (GtkSearchEngine *engine);
+void _gtk_search_engine_finished (GtkSearchEngine *engine,
+ gboolean got_results);
void _gtk_search_engine_error (GtkSearchEngine *engine,
const gchar *error_message);
void _gtk_search_engine_set_recursive (GtkSearchEngine *engine,
if (!reply)
{
- _gtk_search_engine_finished (GTK_SEARCH_ENGINE (tracker));
+ _gtk_search_engine_finished (GTK_SEARCH_ENGINE (tracker), FALSE);
g_object_unref (tracker);
return;
}
}
_gtk_search_engine_hits_added (GTK_SEARCH_ENGINE (tracker), hits);
- _gtk_search_engine_finished (GTK_SEARCH_ENGINE (tracker));
+ _gtk_search_engine_finished (GTK_SEARCH_ENGINE (tracker), i > 0);
g_list_free (hits);
for (i = 0; i < n; i++)