mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-09-29 18:47:38 +00:00
Filter out duplicate application shortcuts
The file chooser used to do this, the places sidebar still needs to learn it. https://bugzilla.gnome.org/show_bug.cgi?id=711636
This commit is contained in:
parent
f911d17e56
commit
2a6039e47f
@ -671,6 +671,38 @@ should_show_file (GtkPlacesSidebar *sidebar,
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
file_is_shown (GtkPlacesSidebar *sidebar,
|
||||
GFile *file)
|
||||
{
|
||||
GtkTreeIter iter;
|
||||
gchar *uri;
|
||||
|
||||
if (!gtk_tree_model_get_iter_first (GTK_TREE_MODEL (sidebar->store), &iter))
|
||||
return FALSE;
|
||||
|
||||
do
|
||||
{
|
||||
gtk_tree_model_get (GTK_TREE_MODEL (sidebar->store), &iter,
|
||||
PLACES_SIDEBAR_COLUMN_URI, &uri,
|
||||
-1);
|
||||
if (uri)
|
||||
{
|
||||
GFile *other;
|
||||
gboolean found;
|
||||
other = g_file_new_for_uri (uri);
|
||||
g_free (uri);
|
||||
found = g_file_equal (file, other);
|
||||
g_object_unref (other);
|
||||
if (found)
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
while (gtk_tree_model_iter_next (sidebar->store, &iter));
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
add_application_shortcuts (GtkPlacesSidebar *sidebar)
|
||||
{
|
||||
@ -686,6 +718,9 @@ add_application_shortcuts (GtkPlacesSidebar *sidebar)
|
||||
if (!should_show_file (sidebar, file))
|
||||
continue;
|
||||
|
||||
if (file_is_shown (sidebar, file))
|
||||
continue;
|
||||
|
||||
/* FIXME: we are getting file info synchronously. We may want to do it async at some point. */
|
||||
info = g_file_query_info (file,
|
||||
"standard::display-name,standard::symbolic-icon",
|
||||
|
Loading…
Reference in New Issue
Block a user