mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-12-25 15:06:14 +01:00
GWin32VolumeMonitor: Sort the volumes correctly
Use a static GQueue to form the GList of mounts by appending (which is fast, because GQueue tracks the tail pointer of its internal GList), then return that GList. This way we don't need to form the list by prepending, which would have made it necessary to reverse it before returning. If the list is not ordered correctly, local drives in GTK places sidebar are shown in reverse order.
This commit is contained in:
parent
ea1235ca69
commit
0c16230b28
@ -111,7 +111,7 @@ get_mounts (GVolumeMonitor *volume_monitor)
|
||||
{
|
||||
DWORD drives;
|
||||
gchar drive[4] = "A:\\";
|
||||
GList *list = NULL;
|
||||
GQueue queue = G_QUEUE_INIT;
|
||||
|
||||
drives = get_viewable_logical_drives ();
|
||||
|
||||
@ -121,13 +121,13 @@ get_mounts (GVolumeMonitor *volume_monitor)
|
||||
while (drives && drive[0] <= 'Z')
|
||||
{
|
||||
if (drives & 1)
|
||||
{
|
||||
list = g_list_prepend (list, _g_win32_mount_new (volume_monitor, drive, NULL));
|
||||
}
|
||||
g_queue_push_tail (&queue, _g_win32_mount_new (volume_monitor, drive, NULL));
|
||||
|
||||
drives >>= 1;
|
||||
drive[0]++;
|
||||
}
|
||||
return list;
|
||||
|
||||
return g_steal_pointer (&queue.head);
|
||||
}
|
||||
|
||||
/* actually 'mounting' volumes is out of GIOs business on win32, so no volumes are delivered either */
|
||||
|
Loading…
Reference in New Issue
Block a user