Skip to content

Commit

Permalink
Fix icon placement when using "Arrange Desktop Icons" (Bug #11639)
Browse files Browse the repository at this point in the history
Additional cosmetic fix:
  Sort volume icons after special ones
  • Loading branch information
thad-fisch committed Mar 5, 2015
1 parent 1cd6ba0 commit 72b0422
Showing 1 changed file with 13 additions and 7 deletions.
20 changes: 13 additions & 7 deletions src/xfdesktop-icon-view.c
Expand Up @@ -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;
Expand All @@ -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,
Expand All @@ -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);

Expand Down

0 comments on commit 72b0422

Please sign in to comment.