diff -Nur xfdesktop4-4.14.1/src/xfdesktop-file-icon-manager.c xfdesktop4-4.14.1_/src/xfdesktop-file-icon-manager.c --- xfdesktop4-4.14.1/src/xfdesktop-file-icon-manager.c 2019-05-19 22:13:01.000000000 +0200 +++ xfdesktop4-4.14.1_/src/xfdesktop-file-icon-manager.c 2020-02-04 11:31:06.283831629 +0100 @@ -2019,14 +2019,7 @@ xfdesktop_file_icon_position_changed(XfdesktopFileIcon *icon, gpointer user_data) { - XfdesktopFileIconManager *fmanager = XFDESKTOP_FILE_ICON_MANAGER(user_data); - - if(fmanager->priv->save_icons_id) - g_source_remove(fmanager->priv->save_icons_id); - fmanager->priv->save_icons_id = g_timeout_add(SAVE_DELAY, - xfdesktop_file_icon_manager_save_icons, - fmanager); } @@ -2037,8 +2030,12 @@ { XfdesktopFileIconManager *fmanager = XFDESKTOP_FILE_ICON_MANAGER(user_data); - if(fmanager->priv->pending_icons == NULL) - xfdesktop_file_icon_position_changed(NULL, user_data); + if(fmanager->priv->save_icons_id) + g_source_remove(fmanager->priv->save_icons_id); + + fmanager->priv->save_icons_id = g_timeout_add(SAVE_DELAY, + xfdesktop_file_icon_manager_save_icons, + fmanager); } gboolean @@ -2531,7 +2528,7 @@ if(fmanager->priv->save_icons_id) { g_source_remove(fmanager->priv->save_icons_id); fmanager->priv->save_icons_id = 0; - xfdesktop_file_icon_manager_save_icons(fmanager); + //xfdesktop_file_icon_manager_save_icons(fmanager); } /* ditch removable media */ @@ -3290,7 +3287,7 @@ if(fmanager->priv->save_icons_id) { g_source_remove(fmanager->priv->save_icons_id); fmanager->priv->save_icons_id = 0; - xfdesktop_file_icon_manager_save_icons(fmanager); + //xfdesktop_file_icon_manager_save_icons(fmanager); } g_signal_handlers_disconnect_by_func(G_OBJECT(clipboard_manager), diff -Nur xfdesktop4-4.14.1/src/xfdesktop-icon-view.c xfdesktop4-4.14.1_/src/xfdesktop-icon-view.c --- xfdesktop4-4.14.1/src/xfdesktop-icon-view.c 2019-07-28 21:59:25.000000000 +0200 +++ xfdesktop4-4.14.1_/src/xfdesktop-icon-view.c 2020-02-04 11:28:52.247771382 +0100 @@ -1752,6 +1752,12 @@ xfdesktop_icon_view_invalidate_icon(icon_view, l->data, TRUE); } + XfdesktopFileIconManager *fmanager = NULL; + 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); + XF_DEBUG("drag succeeded"); gtk_drag_finish(context, TRUE, FALSE, time_); @@ -3234,7 +3240,7 @@ if(fmanager == NULL) return; - xfdesktop_file_icon_save(fmanager); + //xfdesktop_file_icon_save(fmanager); /* add all cached icons back */ for(l = icon_view->priv->pending_icons; l; l = l->next) {