Description: Fix for Bug #1307251 (xfdesktop icon saving) This patch does the following: 1) Alter the SAVE_DELAY factor from 7 seconds to 1 second, so that when you change/move some icon on the desktop, you don't have to wait 7 seconds before xfdesktop saves the icons and you can safely logout. 2) When you change your screen resolution with one never used so far, now xfdesktop will save your icon positions even if you don't change the icons positions. Author: amigamagic --- xfdesktop4-4.11.6.orig/src/xfdesktop-file-icon-manager.c +++ xfdesktop4-4.11.6/src/xfdesktop-file-icon-manager.c @@ -76,7 +76,7 @@ #include #include -#define SAVE_DELAY 7000 +#define SAVE_DELAY 1000 #define BORDER 8 typedef enum @@ -1828,6 +1828,12 @@ xfdesktop_file_icon_position_changed(Xfd /* ***** */ +void +xfdesktop_file_icon_save(gpointer user_data) +{ + xfdesktop_file_icon_position_changed(NULL, user_data); +} + gboolean xfdesktop_file_icon_manager_get_cached_icon_position(XfdesktopFileIconManager *fmanager, const gchar *name, --- xfdesktop4-4.11.6.orig/src/xfdesktop-file-icon-manager.h +++ xfdesktop4-4.11.6/src/xfdesktop-file-icon-manager.h @@ -55,6 +55,8 @@ GType xfdesktop_file_icon_manager_get_ty XfdesktopIconViewManager *xfdesktop_file_icon_manager_new(GFile *folder, XfconfChannel *channel); +void xfdesktop_file_icon_save(gpointer user_data); + gboolean xfdesktop_file_icon_manager_get_cached_icon_position( XfdesktopFileIconManager *fmanager, const gchar *name, --- xfdesktop4-4.11.6.orig/src/xfdesktop-icon-view.c +++ xfdesktop4-4.11.6/src/xfdesktop-icon-view.c @@ -2558,7 +2558,7 @@ xfdesktop_screen_size_changed_cb(GdkScre gpointer user_data) { XfdesktopIconView *icon_view = XFDESKTOP_ICON_VIEW(user_data); - + /* this is kinda icky. we want to use _NET_WORKAREA to reset the size of * the grid, but we can never be sure it'll actually change. so let's * give it 7 seconds, and then fix it manually */ @@ -3252,8 +3252,12 @@ xfdesktop_move_all_cached_icons_to_deskt TRACE("entering"); - if(XFDESKTOP_IS_FILE_ICON_MANAGER(icon_view->priv->manager)) + if(XFDESKTOP_IS_FILE_ICON_MANAGER(icon_view->priv->manager)) + { fmanager = XFDESKTOP_FILE_ICON_MANAGER(icon_view->priv->manager); + if (fmanager != NULL) + xfdesktop_file_icon_save(fmanager); + } if(fmanager == NULL) return;