diff options
| author | Thaddaeus Tintenfisch <thad.fisch@gmail.com> | 2015-03-05 11:08:50 +0100 |
|---|---|---|
| committer | Eric Koegel <eric.koegel@gmail.com> | 2015-03-07 20:28:35 +0300 |
| commit | 70c0ba765f6b21c7cb1a9e1e16b4144795f7c70f (patch) | |
| tree | 2a7833d03af8b4fdd2c61820804176f825594310 | |
| parent | d9a8dd5b6aed2a2cca3ac7131bb4478d07afd595 (diff) | |
| download | xfdesktop-70c0ba765f6b21c7cb1a9e1e16b4144795f7c70f.tar.gz | |
Fix icon placement when using "Arrange Desktop Icons" Bug #11639
Additional cosmetic fix:
Sort volume icons after special ones
| -rw-r--r-- | src/xfdesktop-icon-view.c | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/src/xfdesktop-icon-view.c b/src/xfdesktop-icon-view.c index 4670ac3..b5248e8 100644 --- a/src/xfdesktop-icon-view.c +++ b/src/xfdesktop-icon-view.c @@ -1822,10 +1822,11 @@ xfdesktop_icon_view_sort_icons(XfdesktopIconView *icon_view) #ifdef ENABLE_FILE_ICONS GList *l = NULL; GList *special_icons = NULL; + GList *volume_icons = NULL; GList *folder_icons = NULL; GList *regular_icons = NULL; - gint16 row = 0; - gint16 col = -1; /* start at -1 because we'll increment it */ + gint16 row = -1; /* start at -1 because we'll increment it */ + gint16 col = 0; for(l = icon_view->priv->icons; l; l = l->next) { gint16 old_row, old_col; @@ -1837,18 +1838,22 @@ xfdesktop_icon_view_sort_icons(XfdesktopIconView *icon_view) xfdesktop_grid_set_position_free(icon_view, old_row, old_col); /* Add it to the correct list */ - if(XFDESKTOP_IS_SPECIAL_FILE_ICON(l->data) || - XFDESKTOP_IS_VOLUME_ICON(l->data)) { + if(XFDESKTOP_IS_SPECIAL_FILE_ICON(l->data)) { special_icons = g_list_insert_sorted(special_icons, l->data, (GCompareFunc)xfdesktop_icon_view_compare_icons); + } else if(XFDESKTOP_IS_VOLUME_ICON(l->data)) { + volume_icons = g_list_insert_sorted(volume_icons, + l->data, + (GCompareFunc)xfdesktop_icon_view_compare_icons); } else if(XFDESKTOP_IS_FILE_ICON(l->data) && g_file_query_file_type(xfdesktop_file_icon_peek_file(l->data), G_FILE_QUERY_INFO_NONE, - NULL) == G_FILE_TYPE_DIRECTORY) { + NULL) == G_FILE_TYPE_DIRECTORY) + { folder_icons = g_list_insert_sorted(folder_icons, - l->data, - (GCompareFunc)xfdesktop_icon_view_compare_icons); + l->data, + (GCompareFunc)xfdesktop_icon_view_compare_icons); } else { regular_icons = g_list_insert_sorted(regular_icons, l->data, @@ -1858,6 +1863,7 @@ xfdesktop_icon_view_sort_icons(XfdesktopIconView *icon_view) /* Append the icons: special, folder, then regular */ xfdesktop_icon_view_append_icons(icon_view, special_icons, &row, &col); + xfdesktop_icon_view_append_icons(icon_view, volume_icons, &row, &col); xfdesktop_icon_view_append_icons(icon_view, folder_icons, &row, &col); xfdesktop_icon_view_append_icons(icon_view, regular_icons, &row, &col); |