diff -rc xfdesktop-4.13.2/common/xfdesktop-common.h xfdesktop-4.13.3/common/xfdesktop-common.h *** xfdesktop-4.13.2/common/xfdesktop-common.h 2018-06-07 21:37:55.000000000 +0200 --- xfdesktop-4.13.3/common/xfdesktop-common.h 2018-12-16 18:06:43.334756142 +0100 *************** *** 63,70 **** #define DESKTOP_ICONS_SHOW_TRASH "/desktop-icons/file-icons/show-trash" #define DESKTOP_ICONS_SHOW_FILESYSTEM "/desktop-icons/file-icons/show-filesystem" #define DESKTOP_ICONS_SHOW_REMOVABLE "/desktop-icons/file-icons/show-removable" - #define DESKTOP_MENU_MAX_TEMPLATE_FILES "/desktop-menu/max-template-files" /** * File information namespaces queried for #GFileInfo objects. --- 63,70 ---- #define DESKTOP_ICONS_SHOW_TRASH "/desktop-icons/file-icons/show-trash" #define DESKTOP_ICONS_SHOW_FILESYSTEM "/desktop-icons/file-icons/show-filesystem" #define DESKTOP_ICONS_SHOW_REMOVABLE "/desktop-icons/file-icons/show-removable" + #define DESKTOP_MENU_MAX_TEMPLATE_FILES "/desktop-menu/max-template-files" /** * File information namespaces queried for #GFileInfo objects. diff -rc xfdesktop-4.13.2/po/fr.po xfdesktop-4.13.3/po/fr.po *** xfdesktop-4.13.2/po/fr.po 2018-06-17 00:16:32.000000000 +0200 --- xfdesktop-4.13.3/po/fr.po 2018-12-16 21:28:14.993143077 +0100 *************** *** 785,790 **** --- 785,802 ---- msgid "Arrange Desktop _Icons" msgstr "_Arranger les icônes du bureau" + #: ../src/xfdesktop-file-icon-manager.c:1835 + msgid "Desktop Icons _Gravity" + msgstr "_Gravité des icônes du bureau" + + #: ../src/xfdesktop-file-icon-manager.c:1836 + msgid "Gravity" + msgstr "Gravité" + + #: ../src/xfdesktop-file-icon-manager.c:1837 + msgid "Horiz(1) + Right(2) + Bottom(4)" + msgstr "Horiz(1) + Droite(2) + Bas(4)" + #: ../src/xfdesktop-file-icon-manager.c:1840 msgid "Desktop _Settings..." msgstr "Paramètres du _bureau…" *************** *** 1000,1009 **** #: ../src/xfdesktop-regular-file-icon.c:799 #, c-format msgid "" "Type: %s\n" "Size: %s\n" "Last modified: %s" ! msgstr "Type : %s\nTaille : %s\nDernière modification : %s" #: ../src/xfdesktop-special-file-icon.c:297 #: ../src/xfdesktop-special-file-icon.c:479 --- 1012,1022 ---- #: ../src/xfdesktop-regular-file-icon.c:799 #, c-format msgid "" + "%s\n" "Type: %s\n" "Size: %s\n" "Last modified: %s" ! msgstr "%s\nType : %s\nTaille : %s\nDernière modification : %s" #: ../src/xfdesktop-special-file-icon.c:297 #: ../src/xfdesktop-special-file-icon.c:479 diff -rc xfdesktop-4.13.2/src/xfdesktop-file-icon-manager.c xfdesktop-4.13.3/src/xfdesktop-file-icon-manager.c *** xfdesktop-4.13.2/src/xfdesktop-file-icon-manager.c 2018-06-17 00:16:32.000000000 +0200 --- xfdesktop-4.13.3/src/xfdesktop-file-icon-manager.c 2018-12-17 08:40:59.003480142 +0100 *************** *** 152,157 **** --- 152,159 ---- guint templates_count; }; + static XfdesktopIconView *global_icon_view = NULL; + static void xfdesktop_file_icon_manager_set_property(GObject *object, guint property_id, const GValue *value, *************** *** 967,972 **** --- 969,982 ---- } static void + xfdesktop_file_icon_set_gravity(GtkWidget *widget, + gpointer user_data) + { + if (!global_icon_view) return; + xfdesktop_icon_view_set_gravity(global_icon_view, user_data); + } + + static void xfdesktop_file_icon_menu_properties(GtkWidget *widget, gpointer user_data) { *************** *** 1358,1364 **** XfdesktopFileIcon *file_icon = NULL; GFileInfo *info = NULL; GList *selected, *app_infos, *l; ! GtkWidget *mi, *img, *tmpl_menu; gboolean multi_sel, multi_sel_special = FALSE, got_custom_menu = FALSE; GFile *templates_dir = NULL, *home_dir; const gchar *templates_dir_path = NULL; --- 1368,1374 ---- XfdesktopFileIcon *file_icon = NULL; GFileInfo *info = NULL; GList *selected, *app_infos, *l; ! GtkWidget *mi, *img, *tmpl_menu, *gravity_menu; gboolean multi_sel, multi_sel_special = FALSE, got_custom_menu = FALSE; GFile *templates_dir = NULL, *home_dir; const gchar *templates_dir_path = NULL; *************** *** 1825,1830 **** --- 1835,1842 ---- #endif if(file_icon == fmanager->priv->desktop_icon) { + gchar label[256]; + gint i; /* Menu on the root desktop window */ /* show arrange desktop icons option */ img = gtk_image_new_from_icon_name("view-sort-ascending", GTK_ICON_SIZE_MENU); *************** *** 1835,1840 **** --- 1847,1882 ---- G_CALLBACK(xfdesktop_file_icon_menu_arrange_icons), fmanager); + /* desktop icon gravity menu */ + img = gtk_image_new_from_icon_name("object-flip-horizontal", GTK_ICON_SIZE_MENU); + mi = xfdesktop_menu_create_menu_item_with_mnemonic(_("Desktop Icons _Gravity"), img); + gtk_widget_show(mi); + gtk_menu_shell_append(GTK_MENU_SHELL(menu), mi); + gravity_menu = gtk_menu_new(); + gtk_menu_item_set_submenu(GTK_MENU_ITEM(mi), gravity_menu); + gtk_menu_set_reserve_toggle_size (GTK_MENU (gravity_menu), FALSE); + for (i=-1; i<8; i++) { + if (i>=0) { + g_snprintf(label, 256, "%s %d", _("Gravity"), i); + img = gtk_image_new_from_icon_name("stock_properties", GTK_ICON_SIZE_MENU); + } else { + g_snprintf(label, 256, "%s 0..7 = %s", _("Gravity"), _("Horiz(1) + Right(2) + Bottom(4)")); + img = NULL; + } + mi = xfdesktop_menu_create_menu_item_with_mnemonic(label, img); + gtk_menu_shell_append(GTK_MENU_SHELL(gravity_menu), mi); + gtk_widget_show(mi); + if (i < 0) { + mi = gtk_separator_menu_item_new(); + gtk_widget_show(mi); + gtk_menu_shell_append(GTK_MENU_SHELL(gravity_menu), mi); + + } else { + g_signal_connect(G_OBJECT(mi), "activate", + G_CALLBACK(xfdesktop_file_icon_set_gravity), + (gpointer)(glong)i); + } + } /* Desktop settings window */ img = gtk_image_new_from_icon_name("preferences-desktop-wallpaper", GTK_ICON_SIZE_MENU); mi = xfdesktop_menu_create_menu_item_with_mnemonic(_("Desktop _Settings..."), img); *************** *** 3094,3099 **** --- 3136,3142 ---- } fmanager->priv->icon_view = icon_view; + global_icon_view = icon_view; /* Hook up to the resize-event so we can sort the icon queue and place * new icons where they belong */ diff -rc xfdesktop-4.13.2/src/xfdesktop-icon-view.c xfdesktop-4.13.3/src/xfdesktop-icon-view.c *** xfdesktop-4.13.2/src/xfdesktop-icon-view.c 2018-06-17 00:16:32.000000000 +0200 --- xfdesktop-4.13.3/src/xfdesktop-icon-view.c 2018-12-17 09:34:57.533583775 +0100 *************** *** 57,62 **** --- 57,66 ---- #define DEFAULT_TOOLTIP_SIZE 128 #define MAX_TOOLTIP_SIZE 512 + #define GRAVITY_HORIZONTAL 1 + #define GRAVITY_RIGHT 2 + #define GRAVITY_BOTTOM 4 + #define ICON_SIZE (icon_view->priv->icon_size) #define TEXT_WIDTH ((icon_view->priv->cell_text_width_proportion) * ICON_SIZE) #define ICON_WIDTH (TEXT_WIDTH) *************** *** 188,193 **** --- 192,198 ---- double tooltip_size_from_xfconf; gboolean single_click; + gint gravity; }; static void xfce_icon_view_set_property(GObject *object, *************** *** 370,375 **** --- 375,381 ---- PROP_SINGLE_CLICK, PROP_SHOW_TOOLTIPS, PROP_TOOLTIP_SIZE, + PROP_GRAVITY, }; *************** *** 556,561 **** --- 562,574 ---- FALSE, XFDESKTOP_PARAM_FLAGS)); + g_object_class_install_property(gobject_class, PROP_GRAVITY, + g_param_spec_int("gravity", + "gravity", + "set gravity of new icons placement", + 0, 7, 0, + XFDESKTOP_PARAM_FLAGS)); + g_object_class_install_property(gobject_class, PROP_SHOW_TOOLTIPS, g_param_spec_boolean("show-tooltips", "show tooltips", *************** *** 654,659 **** --- 667,673 ---- icon_view->priv->source_targets = gtk_target_list_new(icon_view_targets, icon_view_n_targets); + gtk_drag_source_set(GTK_WIDGET(icon_view), 0, NULL, 0, GDK_ACTION_MOVE); icon_view->priv->dest_targets = gtk_target_list_new(icon_view_targets, *************** *** 716,721 **** --- 730,739 ---- icon_view->priv->tooltip_size_from_xfconf = g_value_get_double(value); break; + case PROP_GRAVITY: + icon_view->priv->gravity = g_value_get_int(value); + break; + default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); break; *************** *** 735,740 **** --- 753,762 ---- g_value_set_boolean(value, icon_view->priv->single_click); break; + case PROP_GRAVITY: + g_value_set_int(value, icon_view->priv->gravity); + break; + case PROP_SHOW_TOOLTIPS: g_value_set_boolean(value, icon_view->priv->show_tooltips); break; *************** *** 1523,1528 **** --- 1545,1581 ---- return TRUE; } + static void + xfdesktop_next_slot(XfdesktopIconView *icon_view, guint16 *col, guint16 *row, guint16 ncols, guint16 nrows) + { + gint scol = *col, srow = *row; + if (icon_view->priv->gravity & GRAVITY_HORIZONTAL) { + scol += (icon_view->priv->gravity & GRAVITY_RIGHT)? -1:1; + if (scol < 0) { + scol = ncols - 1; + srow += (icon_view->priv->gravity & GRAVITY_BOTTOM)? -1:1 ; + } else { + if (scol >= ncols) { + scol = 0; + srow += (icon_view->priv->gravity & GRAVITY_BOTTOM)? -1:1; + } + } + } else { + srow += (icon_view->priv->gravity & GRAVITY_BOTTOM)? -1:1; + if (srow < 0) { + srow = nrows - 1; + scol += (icon_view->priv->gravity & GRAVITY_RIGHT)? -1:1; + } else { + if (srow >= nrows) { + srow = 0; + scol += (icon_view->priv->gravity & GRAVITY_RIGHT)? -1:1; + } + } + } + *col = (guint16) scol; + *row = (guint16) srow; + } + static gboolean xfdesktop_icon_view_drag_drop(GtkWidget *widget, GdkDragContext *context, *************** *** 1595,1601 **** icon = icon_view->priv->cursor; g_return_val_if_fail(icon, FALSE); ! /* 1: Get amount of offset between the old spot and new spot * of the icon that's being dragged. * 2: Remove all the icons that are going to be moved from * the desktop. That's in case the icons being moved --- 1648,1654 ---- icon = icon_view->priv->cursor; g_return_val_if_fail(icon, FALSE); ! /* 1: Get amount of offset between the old slot and new slot * of the icon that's being dragged. * 2: Remove all the icons that are going to be moved from * the desktop. That's in case the icons being moved *************** *** 1628,1646 **** row += icon_view->priv->nrows; } ! /* Find the next available spot for an icon if offset spot is not available */ ! while(!xfdesktop_grid_is_free_position(icon_view, row, col)) { ! if(row + 1 >= icon_view->priv->nrows) { ! if(col + 1 >= icon_view->priv->ncols) ! col = 0; ! else ! ++col; ! row = 0; ! } else { ! ++row; ! } } ! /* set new position */ xfdesktop_icon_set_position(l->data, row, col); xfdesktop_grid_unset_position_free(icon_view, l->data); --- 1681,1691 ---- row += icon_view->priv->nrows; } ! /* Find the next available slot for an icon if offset slot is not available */ ! while (!xfdesktop_grid_is_free_position(icon_view, row, col)) { ! xfdesktop_next_slot(icon_view, &col, &row, icon_view->priv->ncols, icon_view->priv->nrows); } ! /* set new position */ xfdesktop_icon_set_position(l->data, row, col); xfdesktop_grid_unset_position_free(icon_view, l->data); *************** *** 1768,1781 **** GList *l = NULL; for(l = icon_list; l != NULL; l = g_list_next(l)) { ! /* Find the next available spot for an icon */ do { ! if(*row + 1 >= icon_view->priv->nrows) { ! ++*col; ! *row = 0; ! } else { ! ++*row; ! } } while(!xfdesktop_grid_is_free_position(icon_view, *row, *col)); /* set new position */ --- 1813,1821 ---- GList *l = NULL; for(l = icon_list; l != NULL; l = g_list_next(l)) { ! /* Find the next available slot for an icon */ do { ! xfdesktop_next_slot(icon_view, col, row, icon_view->priv->ncols, icon_view->priv->nrows); } while(!xfdesktop_grid_is_free_position(icon_view, *row, *col)); /* set new position */ *************** *** 1794,1811 **** GList *l = NULL; guint i; GList *icons[4] = { NULL, NULL, NULL, NULL }; ! 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; - /* clear out old position */ xfdesktop_icon_view_invalidate_icon(icon_view, l->data, FALSE); - if(xfdesktop_icon_get_position(l->data, &old_row, &old_col)) - xfdesktop_grid_set_position_free(icon_view, old_row, old_col); - /* Choose the correct list index */ if(XFDESKTOP_IS_SPECIAL_FILE_ICON(l->data)) { i = 0; --- 1834,1846 ---- GList *l = NULL; guint i; GList *icons[4] = { NULL, NULL, NULL, NULL }; ! gint16 row; ! gint16 col; ! for(l = icon_view->priv->icons; l; l = l->next) { /* clear out old position */ xfdesktop_icon_view_invalidate_icon(icon_view, l->data, FALSE); /* Choose the correct list index */ if(XFDESKTOP_IS_SPECIAL_FILE_ICON(l->data)) { i = 0; *************** *** 1825,1837 **** icons[i] = g_list_prepend(icons[i], l->data); } /* Append the icons: special, folder, then regular */ for(i = 0; i < sizeof(icons) / sizeof(icons[0]); ++i) { l = g_list_sort(icons[i], (GCompareFunc)xfdesktop_icon_view_compare_icons); xfdesktop_icon_view_append_icons(icon_view, l, &row, &col); g_list_free(l); ! } #endif } --- 1860,1891 ---- icons[i] = g_list_prepend(icons[i], l->data); } + /* free all positions in the layout */ + for (col = 0; col < icon_view->priv->ncols; col++) + for (row = 0; row < icon_view->priv->nrows; row++) + icon_view->priv->grid_layout[col * icon_view->priv->nrows + row] = NULL; + + /* start at appropriate position ! */ + if (icon_view->priv->gravity & GRAVITY_HORIZONTAL) { + row = -1; + col = icon_view->priv->ncols - 1; + } else { + row = icon_view->priv->nrows - 1; + col = -1; + } + if (icon_view->priv->gravity & GRAVITY_RIGHT) + col = icon_view->priv->ncols - 1 - col; + if (icon_view->priv->gravity & GRAVITY_BOTTOM) + row = icon_view->priv->nrows - 1 - row; + /* Append the icons: special, folder, then regular */ for(i = 0; i < sizeof(icons) / sizeof(icons[0]); ++i) { + l = g_list_sort(icons[i], (GCompareFunc)xfdesktop_icon_view_compare_icons); xfdesktop_icon_view_append_icons(icon_view, l, &row, &col); g_list_free(l); ! } #endif } *************** *** 3125,3131 **** XF_DEBUG("icon %s setting position row%dxcol%d", xfdesktop_icon_peek_label(icon), row, col); ! /* Make sure the spot is available */ if(xfdesktop_grid_is_free_position(icon_view, row, col)) { xfdesktop_icon_set_position(icon, row, col); xfdesktop_icon_view_add_item_internal(icon_view, icon); --- 3179,3185 ---- XF_DEBUG("icon %s setting position row%dxcol%d", xfdesktop_icon_peek_label(icon), row, col); ! /* Make sure the slot is available */ if(xfdesktop_grid_is_free_position(icon_view, row, col)) { xfdesktop_icon_set_position(icon, row, col); xfdesktop_icon_view_add_item_internal(icon_view, icon); *************** *** 3145,3151 **** #endif } ! /* Takes any icons in the pending icons list that has their original spot open. * This way icons stay somewhat stable during minor resolution changes */ static void xfdesktop_move_all_previous_icons_to_desktop(XfdesktopIconView *icon_view) --- 3199,3205 ---- #endif } ! /* Takes any icons in the pending icons list that has their original slot open. * This way icons stay somewhat stable during minor resolution changes */ static void xfdesktop_move_all_previous_icons_to_desktop(XfdesktopIconView *icon_view) *************** *** 3368,3374 **** return FALSE; } ! if(row >= icon_view->priv->nrows || col >= icon_view->priv->ncols) { return FALSE; } --- 3422,3429 ---- return FALSE; } ! if(row < 0 || col < 0 || ! row >= icon_view->priv->nrows || col >= icon_view->priv->ncols) { return FALSE; } *************** *** 3382,3387 **** --- 3437,3443 ---- gint16 *row, gint16 *col) { + /* gint i, maxi; g_return_val_if_fail(row && col, FALSE); *************** *** 3396,3401 **** --- 3452,3502 ---- } return FALSE; + */ + + gint i, ip, j, jp, k; + + g_return_val_if_fail(row && col, FALSE); + + if (icon_view->priv->gravity & GRAVITY_HORIZONTAL) + for(j = 0; j < icon_view->priv->nrows; ++j) { + if (icon_view->priv->gravity & GRAVITY_BOTTOM) + jp = icon_view->priv->nrows - 1 - j; + else + jp = j; + for(i = 0; i < icon_view->priv->ncols; ++i) { + if (icon_view->priv->gravity & GRAVITY_RIGHT) + ip = icon_view->priv->ncols - 1 - i; + else + ip = i; + k = ip * icon_view->priv->nrows + jp; + if(!icon_view->priv->grid_layout[k]) { + *col = (guint16) ip; + *row = (guint16) jp; + return TRUE; + } + } + } else + for(i = 0; i < icon_view->priv->ncols; ++i) { + if (icon_view->priv->gravity & GRAVITY_RIGHT) + ip = icon_view->priv->ncols - 1 - i; + else + ip = i; + for(j = 0; j < icon_view->priv->nrows; ++j) { + if (icon_view->priv->gravity & GRAVITY_BOTTOM) + jp = icon_view->priv->nrows - 1 - j; + else + jp = j; + k = ip * icon_view->priv->nrows + jp; + if(!icon_view->priv->grid_layout[k]) { + *col = (guint16) ip; + *row = (guint16) jp; + return TRUE; + } + } + } + + return FALSE; } *************** *** 3404,3410 **** gint16 row, gint16 col) { ! g_return_if_fail(row < icon_view->priv->nrows && col < icon_view->priv->ncols); #if 0 /*def DEBUG*/ --- 3505,3511 ---- gint16 row, gint16 col) { ! g_return_if_fail(row >= 0 && col >= 0 && row < icon_view->priv->nrows && col < icon_view->priv->ncols); #if 0 /*def DEBUG*/ *************** *** 3426,3432 **** { gint idx; ! g_return_val_if_fail(row < icon_view->priv->nrows && col < icon_view->priv->ncols, FALSE); idx = col * icon_view->priv->nrows + row; --- 3527,3533 ---- { gint idx; ! g_return_val_if_fail(row >= 0 && col >= 0 && row < icon_view->priv->nrows && col < icon_view->priv->ncols, FALSE); idx = col * icon_view->priv->nrows + row; *************** *** 3569,3574 **** --- 3670,3677 ---- xfdesktop_icon_view_new(XfdesktopIconViewManager *manager) { XfdesktopIconView *icon_view; + static gboolean run = TRUE; + GValue gv = {0}; g_return_val_if_fail(XFDESKTOP_IS_ICON_VIEW_MANAGER(manager), NULL); *************** *** 3577,3582 **** --- 3680,3686 ---- icon_view->priv->channel = xfconf_channel_get(XFDESKTOP_CHANNEL); + xfconf_g_property_bind(icon_view->priv->channel, "/desktop-icons/single-click", G_TYPE_BOOLEAN, *************** *** 3584,3589 **** --- 3688,3699 ---- "single_click"); xfconf_g_property_bind(icon_view->priv->channel, + "/desktop-icons/file-icons/gravity", + G_TYPE_INT, + G_OBJECT(icon_view), + "gravity"); + + xfconf_g_property_bind(icon_view->priv->channel, "/desktop-icons/show-tooltips", G_TYPE_BOOLEAN, G_OBJECT(icon_view), *************** *** 3664,3673 **** { gint16 row, col; ! if(!xfdesktop_icon_get_position(icon, &row, &col) ! || !xfdesktop_grid_is_free_position(icon_view, row, col)) { ! if(xfdesktop_grid_get_next_free_position(icon_view, &row, &col)) { XF_DEBUG("old position didn't exist or isn't free, got (%d,%d) instead", row, col); xfdesktop_icon_set_position(icon, row, col); --- 3774,3785 ---- { gint16 row, col; ! if (!xfdesktop_icon_get_position(icon, &row, &col) ! || !xfdesktop_grid_is_free_position(icon_view, row, col) ! || (((icon_view->priv->gravity & GRAVITY_BOTTOM) || ! (icon_view->priv->gravity & GRAVITY_RIGHT)) && row == 0 && col == 0)) { ! if (xfdesktop_grid_get_next_free_position(icon_view, &row, &col)) { XF_DEBUG("old position didn't exist or isn't free, got (%d,%d) instead", row, col); xfdesktop_icon_set_position(icon, row, col); *************** *** 4081,4086 **** --- 4193,4217 ---- } void + xfdesktop_icon_view_set_gravity(XfdesktopIconView *icon_view, + gpointer user_data) + { + GValue value = { 0, }; + GError *error= NULL; + + if ((guint) user_data == 0) + icon_view->priv->gravity = 0; + else + icon_view->priv->gravity = (guint) user_data; + + g_value_init(&value, G_TYPE_INT); + g_value_set_int(&value, icon_view->priv->gravity); + xfconf_channel_set_property(icon_view->priv->channel, + "/desktop-icons/file-icons/gravity", + &value); + } + + void xfdesktop_icon_view_set_icon_size(XfdesktopIconView *icon_view, guint icon_size) { diff -rc xfdesktop-4.13.2/src/xfdesktop-icon-view.h xfdesktop-4.13.3/src/xfdesktop-icon-view.h *** xfdesktop-4.13.2/src/xfdesktop-icon-view.h 2018-06-07 21:37:55.000000000 +0200 --- xfdesktop-4.13.3/src/xfdesktop-icon-view.h 2018-12-16 16:37:28.532584788 +0100 *************** *** 110,115 **** --- 110,118 ---- XfdesktopIcon *icon); void xfdesktop_icon_view_unselect_all(XfdesktopIconView *icon_view); + void xfdesktop_icon_view_set_gravity(XfdesktopIconView *icon_view, + gpointer user_data); + void xfdesktop_icon_view_set_icon_size(XfdesktopIconView *icon_view, guint icon_size); guint xfdesktop_icon_view_get_icon_size(XfdesktopIconView *icon_view); diff -rc xfdesktop-4.13.2/src/xfdesktop-regular-file-icon.c xfdesktop-4.13.3/src/xfdesktop-regular-file-icon.c *** xfdesktop-4.13.2/src/xfdesktop-regular-file-icon.c 2018-06-07 21:37:55.000000000 +0200 --- xfdesktop-4.13.3/src/xfdesktop-regular-file-icon.c 2018-12-04 09:18:54.000000000 +0100 *************** *** 796,802 **** time_string = xfdesktop_file_utils_format_time_for_display(mtime); regular_file_icon->priv->tooltip = ! g_strdup_printf(_("Type: %s\nSize: %s\nLast modified: %s"), description, size_string, time_string); /* Extract the Comment entry from the .desktop file */ --- 796,803 ---- time_string = xfdesktop_file_utils_format_time_for_display(mtime); regular_file_icon->priv->tooltip = ! g_strdup_printf(_("%s\nType: %s\nSize: %s\nLast modified: %s"), ! g_file_get_basename(regular_file_icon->priv->file), description, size_string, time_string); /* Extract the Comment entry from the .desktop file */ Seulement dans xfdesktop-4.13.3: xfdesktop-4.12.4b.diff