From 9e1b49ea3424932ae5aa01f7273a25e44a3d34b8 Mon Sep 17 00:00:00 2001 From: Eric Koegel Date: Fri, 18 Nov 2011 22:29:19 +0300 Subject: [PATCH] Modifify how xfdesktop moves icons during a grid resize to mimic what xfwm4 does with its windows. --- src/xfdesktop-icon-view.c | 28 ++++++++++++++++++++++++++++ 1 files changed, 28 insertions(+), 0 deletions(-) diff --git a/src/xfdesktop-icon-view.c b/src/xfdesktop-icon-view.c index 0736006..f7241ee 100644 --- a/src/xfdesktop-icon-view.c +++ b/src/xfdesktop-icon-view.c @@ -2923,6 +2923,34 @@ xfdesktop_grid_get_next_free_position(XfdesktopIconView *icon_view, g_return_val_if_fail(row && col, FALSE); + if(*row != 0 || *col != 0) { + if(*row < icon_view->priv->nrows) { + for(i = icon_view->priv->ncols-1; i > 0; --i) { + if(xfdesktop_grid_is_free_position(icon_view, *row, i)) { + *col = i; + return TRUE; + } + } + } else if(*col < icon_view->priv->ncols) { + for(i = icon_view->priv->nrows-1; i > 0; --i) { + if(xfdesktop_grid_is_free_position(icon_view, i, *col)) { + *row = i; + return TRUE; + } + } + } else { + maxi = icon_view->priv->nrows * icon_view->priv->ncols; + for(i = maxi-1; i >= 0; --i) { + if(!icon_view->priv->grid_layout[i]) { + *row = i % icon_view->priv->nrows; + *col = i / icon_view->priv->nrows; + return TRUE; + } + } + return FALSE; + } + } + maxi = icon_view->priv->nrows * icon_view->priv->ncols; for(i = 0; i < maxi; ++i) { if(!icon_view->priv->grid_layout[i]) { -- 1.7.5.4