1
0
mirror of https://gitlab.gnome.org/GNOME/nautilus synced 2024-06-30 23:46:35 +00:00

placessidebar: Sort internal volumes last

These used to be hidden in Other Locations view. Now that they live in
the sidebar, let's sort them last, in order to avoid pushing external
volumes (e.g. plugged-in devices or connected remotes) down the list
and possibly out of view.

Let's keep external volumes above the recently returned internal ones.

Part of: https://gitlab.gnome.org/GNOME/nautilus/-/issues/3012
This commit is contained in:
António Fernandes 2024-06-09 18:53:19 +01:00
parent 2e4151ca3d
commit f7bb6975a5
2 changed files with 32 additions and 12 deletions

View File

@ -906,7 +906,9 @@ update_places (NautilusGtkPlacesSidebar *sidebar)
name = g_mount_get_name (mount);
tooltip = g_file_get_parse_name (root);
add_place (sidebar, NAUTILUS_GTK_PLACES_MOUNTED_VOLUME,
add_place (sidebar, (is_external_volume (volume) ?
NAUTILUS_GTK_PLACES_EXTERNAL_MOUNT :
NAUTILUS_GTK_PLACES_INTERNAL_MOUNT),
NAUTILUS_GTK_PLACES_SECTION_MOUNTS,
name, start_icon, NULL, mount_uri,
drive, volume, mount, NULL, 0, tooltip);
@ -931,7 +933,9 @@ update_places (NautilusGtkPlacesSidebar *sidebar)
name = g_volume_get_name (volume);
tooltip = g_strdup_printf (_("Mount and Open “%s”"), name);
add_place (sidebar, NAUTILUS_GTK_PLACES_MOUNTED_VOLUME,
add_place (sidebar, (is_external_volume (volume) ?
NAUTILUS_GTK_PLACES_EXTERNAL_MOUNT :
NAUTILUS_GTK_PLACES_INTERNAL_MOUNT),
NAUTILUS_GTK_PLACES_SECTION_MOUNTS,
name, start_icon, NULL, NULL,
drive, volume, NULL, NULL, 0, tooltip);
@ -1017,7 +1021,9 @@ update_places (NautilusGtkPlacesSidebar *sidebar)
mount_uri = g_file_get_uri (root);
tooltip = g_file_get_parse_name (root);
name = g_mount_get_name (mount);
add_place (sidebar, NAUTILUS_GTK_PLACES_MOUNTED_VOLUME,
add_place (sidebar, (is_external_volume (volume) ?
NAUTILUS_GTK_PLACES_EXTERNAL_MOUNT :
NAUTILUS_GTK_PLACES_INTERNAL_MOUNT),
NAUTILUS_GTK_PLACES_SECTION_MOUNTS,
name, start_icon, NULL, mount_uri,
NULL, volume, mount, NULL, 0, tooltip);
@ -1033,7 +1039,9 @@ update_places (NautilusGtkPlacesSidebar *sidebar)
/* see comment above in why we add an icon for an unmounted mountable volume */
start_icon = g_volume_get_symbolic_icon (volume);
name = g_volume_get_name (volume);
add_place (sidebar, NAUTILUS_GTK_PLACES_MOUNTED_VOLUME,
add_place (sidebar, (is_external_volume (volume) ?
NAUTILUS_GTK_PLACES_EXTERNAL_MOUNT :
NAUTILUS_GTK_PLACES_INTERNAL_MOUNT),
NAUTILUS_GTK_PLACES_SECTION_MOUNTS,
name, start_icon, NULL, NULL,
NULL, volume, NULL, NULL, 0, name);
@ -1077,7 +1085,7 @@ update_places (NautilusGtkPlacesSidebar *sidebar)
mount_uri = g_file_get_uri (root);
name = g_mount_get_name (mount);
tooltip = g_file_get_parse_name (root);
add_place (sidebar, NAUTILUS_GTK_PLACES_MOUNTED_VOLUME,
add_place (sidebar, NAUTILUS_GTK_PLACES_EXTERNAL_MOUNT,
NAUTILUS_GTK_PLACES_SECTION_MOUNTS,
name, start_icon, NULL, mount_uri,
NULL, NULL, mount, NULL, 0, tooltip);
@ -1144,7 +1152,7 @@ update_places (NautilusGtkPlacesSidebar *sidebar)
name = g_volume_get_name (volume);
tooltip = g_strdup_printf (_("Mount and Open “%s”"), name);
add_place (sidebar, NAUTILUS_GTK_PLACES_MOUNTED_VOLUME,
add_place (sidebar, NAUTILUS_GTK_PLACES_EXTERNAL_MOUNT,
NAUTILUS_GTK_PLACES_SECTION_MOUNTS,
name, start_icon, NULL, NULL,
NULL, volume, NULL, NULL, 0, tooltip);
@ -1165,7 +1173,7 @@ update_places (NautilusGtkPlacesSidebar *sidebar)
mount_uri = g_file_get_uri (root);
name = g_mount_get_name (mount);
tooltip = g_file_get_parse_name (root);
add_place (sidebar, NAUTILUS_GTK_PLACES_MOUNTED_VOLUME,
add_place (sidebar, NAUTILUS_GTK_PLACES_EXTERNAL_MOUNT,
NAUTILUS_GTK_PLACES_SECTION_MOUNTS,
name, start_icon, NULL, mount_uri,
NULL, NULL, mount, NULL, 0, tooltip);
@ -3340,13 +3348,24 @@ list_box_sort_func (GtkListBoxRow *row1,
if (section_type_1 == section_type_2)
{
if ((section_type_1 == NAUTILUS_GTK_PLACES_SECTION_COMPUTER &&
place_type_1 == place_type_2 &&
place_type_1 == NAUTILUS_GTK_PLACES_XDG_DIR) ||
section_type_1 == NAUTILUS_GTK_PLACES_SECTION_MOUNTS)
if (section_type_1 == NAUTILUS_GTK_PLACES_SECTION_COMPUTER &&
place_type_1 == place_type_2 &&
place_type_1 == NAUTILUS_GTK_PLACES_XDG_DIR)
{
retval = g_utf8_collate (label_1, label_2);
}
else if (section_type_1 == NAUTILUS_GTK_PLACES_SECTION_MOUNTS)
{
if (place_type_1 == place_type_2)
{
retval = g_utf8_collate (label_1, label_2);
}
else
{
/* Sort internals last */
retval = (place_type_1 == NAUTILUS_GTK_PLACES_INTERNAL_MOUNT) ? 1 : -1;
}
}
else if ((place_type_1 == NAUTILUS_GTK_PLACES_BOOKMARK || place_type_2 == NAUTILUS_GTK_PLACES_DROP_FEEDBACK) &&
(place_type_1 == NAUTILUS_GTK_PLACES_DROP_FEEDBACK || place_type_2 == NAUTILUS_GTK_PLACES_BOOKMARK))
{

View File

@ -104,7 +104,8 @@ typedef enum {
NAUTILUS_GTK_PLACES_INVALID,
NAUTILUS_GTK_PLACES_BUILT_IN,
NAUTILUS_GTK_PLACES_XDG_DIR,
NAUTILUS_GTK_PLACES_MOUNTED_VOLUME,
NAUTILUS_GTK_PLACES_EXTERNAL_MOUNT,
NAUTILUS_GTK_PLACES_INTERNAL_MOUNT,
NAUTILUS_GTK_PLACES_BOOKMARK,
NAUTILUS_GTK_PLACES_HEADING,
NAUTILUS_GTK_PLACES_DROP_FEEDBACK,