diff -Nru xfdesktop4-4.8.3/debian/changelog xfdesktop4-4.8.3/debian/changelog --- xfdesktop4-4.8.3/debian/changelog 2012-02-14 21:04:44.000000000 +0000 +++ xfdesktop4-4.8.3/debian/changelog 2012-02-19 22:44:20.000000000 +0000 @@ -1,3 +1,13 @@ +xfdesktop4 (4.8.3-2ubuntu2) precise; urgency=low + + * debian/patches: + - 001*: added, pull more bugfix patches from upstream eric/bugzilla-patches + git branch. + - xubuntu_fix-move-multiple-icons.patch, xubuntu_single-click-option.patch: + dropped, included in the new patches from above. + + -- Lionel Le Folgoc Sun, 19 Feb 2012 23:44:09 +0100 + xfdesktop4 (4.8.3-2ubuntu1) precise; urgency=low * Resync from Debian (changes were already included in 4.8.3-1ubuntu9), diff -Nru xfdesktop4-4.8.3/debian/patches/0010-Modified-xfdesktop_icon_view_drag_drop-to-allow-all-.patch xfdesktop4-4.8.3/debian/patches/0010-Modified-xfdesktop_icon_view_drag_drop-to-allow-all-.patch --- xfdesktop4-4.8.3/debian/patches/0010-Modified-xfdesktop_icon_view_drag_drop-to-allow-all-.patch 1970-01-01 00:00:00.000000000 +0000 +++ xfdesktop4-4.8.3/debian/patches/0010-Modified-xfdesktop_icon_view_drag_drop-to-allow-all-.patch 2012-02-19 21:50:36.000000000 +0000 @@ -0,0 +1,90 @@ +From 578732b85aee34d0d48b4c16ac9ef398b644a9fc Mon Sep 17 00:00:00 2001 +From: Eric Koegel +Date: Sat, 19 Nov 2011 13:38:56 +0300 +Subject: Modified xfdesktop_icon_view_drag_drop to allow all selected files + to drag and drop. Fixes Bug #5025 + +--- + src/xfdesktop-icon-view.c | 45 ++++++++++++++++++++++++++++++++++++++++----- + 1 files changed, 40 insertions(+), 5 deletions(-) + +diff --git a/src/xfdesktop-icon-view.c b/src/xfdesktop-icon-view.c +index 071ca90..e37fd68 100644 +--- a/src/xfdesktop-icon-view.c ++++ b/src/xfdesktop-icon-view.c +@@ -1356,6 +1356,7 @@ xfdesktop_icon_view_drag_drop(GtkWidget *widget, + GdkAtom target = GDK_NONE; + XfdesktopIcon *icon; + guint16 old_row, old_col, row, col; ++ GList *l; + XfdesktopIcon *icon_on_dest = NULL; + + TRACE("entering: (%d,%d)", x, y); +@@ -1375,7 +1376,6 @@ xfdesktop_icon_view_drag_drop(GtkWidget *widget, + + if(target == gdk_atom_intern("XFDESKTOP_ICON", FALSE)) { + if(icon_on_dest) { +- GList *l; + gboolean ret = FALSE; + + for(l = icon_view->priv->selected_icons; l; l = l->next) { +@@ -1395,10 +1395,20 @@ xfdesktop_icon_view_drag_drop(GtkWidget *widget, + icon = icon_view->priv->cursor; + g_return_val_if_fail(icon, FALSE); + +- /* clear out old position */ +- xfdesktop_icon_view_invalidate_icon(icon_view, icon, FALSE); +- if(xfdesktop_icon_get_position(icon, &old_row, &old_col)) +- xfdesktop_grid_set_position_free(icon_view, old_row, old_col); ++ /* 1: Remove all the icons that are going to be moved from ++ * the desktop. That's in case the icons being moved ++ * want to rearrange themselves there. ++ * 2: We need to move the icon that's being dragged since the ++ * user explicitly wants to drop it in that spot. ++ * 3: We just append all the other icons in any spot that's ++ * open. */ ++ for(l = icon_view->priv->selected_icons; l; l = l->next) { ++ /* 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); ++ } ++ + /* set new position */ + xfdesktop_icon_set_position(icon, row, col); + xfdesktop_grid_unset_position_free(icon_view, icon); +@@ -1406,6 +1416,31 @@ xfdesktop_icon_view_drag_drop(GtkWidget *widget, + /* clear out old extents, if any */ + /* FIXME: is this right? */ + xfdesktop_icon_view_invalidate_icon(icon_view, icon, TRUE); ++ ++ /* Now that we have moved the icon the user selected, ++ * append all the other selected icons after it. */ ++ for(l = icon_view->priv->selected_icons; l; l = l->next) { ++ if(l->data == icon) ++ continue; ++ ++ /* 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 */ ++ xfdesktop_icon_set_position(l->data, row, col); ++ xfdesktop_grid_unset_position_free(icon_view, l->data); ++ ++ /* clear out old extents, if any */ ++ /* FIXME: is this right? */ ++ xfdesktop_icon_view_invalidate_icon(icon_view, l->data, TRUE); ++ } + + DBG("drag succeeded"); + +-- +1.7.9 + diff -Nru xfdesktop4-4.8.3/debian/patches/0011-Fix-for-moving-files-instead-of-copy-when-src-isn-t-.patch xfdesktop4-4.8.3/debian/patches/0011-Fix-for-moving-files-instead-of-copy-when-src-isn-t-.patch --- xfdesktop4-4.8.3/debian/patches/0011-Fix-for-moving-files-instead-of-copy-when-src-isn-t-.patch 1970-01-01 00:00:00.000000000 +0000 +++ xfdesktop4-4.8.3/debian/patches/0011-Fix-for-moving-files-instead-of-copy-when-src-isn-t-.patch 2012-02-19 21:50:36.000000000 +0000 @@ -0,0 +1,57 @@ +From dba89439ee41f3cc793b44d9dc3630e3238228db Mon Sep 17 00:00:00 2001 +From: Eric Koegel +Date: Sun, 19 Feb 2012 09:32:01 +0300 +Subject: Fix for moving files instead of copy when src isn't writable + +Fixed a bug where a user drags and drops a file from a folder on the +same filesystem as the desktop but the src isn't writable by the user +so they can't delete the src file. The user will still see an error +message if they explicitly try to move the file via the right click +drag and drop menu. +--- + src/xfdesktop-file-icon-manager.c | 13 +++++++++---- + 1 files changed, 9 insertions(+), 4 deletions(-) + +diff --git a/src/xfdesktop-file-icon-manager.c b/src/xfdesktop-file-icon-manager.c +index 4a19539..2deb0a1 100644 +--- a/src/xfdesktop-file-icon-manager.c ++++ b/src/xfdesktop-file-icon-manager.c +@@ -3097,18 +3097,20 @@ xfdesktop_file_icon_manager_drag_data_received(XfdesktopIconViewManager *manager + + /* If the user didn't pick whether to copy or move via + * a GDK_ACTION_ASK then determine if we should move/copy +- * by checking if the files are on the same file system. ++ * by checking if the files are on the same filesystem ++ * and are writable by the user. + */ + if(user_selected_action == FALSE) { + GFileInfo *src_info, *dest_info; + const gchar *src_name, *dest_name; ++ + dest_info = g_file_query_info(base_dest_file, +- G_FILE_ATTRIBUTE_ID_FILESYSTEM, ++ XFDESKTOP_FILE_INFO_NAMESPACE, + G_FILE_QUERY_INFO_NONE, + NULL, + NULL); + src_info = g_file_query_info(file_list->data, +- G_FILE_ATTRIBUTE_ID_FILESYSTEM, ++ XFDESKTOP_FILE_INFO_NAMESPACE, + G_FILE_QUERY_INFO_NONE, + NULL, + NULL); +@@ -3119,7 +3121,10 @@ xfdesktop_file_icon_manager_drag_data_received(XfdesktopIconViewManager *manager + src_name = g_file_info_get_attribute_string(src_info, + G_FILE_ATTRIBUTE_ID_FILESYSTEM); + +- if(g_strcmp0(src_name, dest_name) == 0) { ++ if((g_strcmp0(src_name, dest_name) == 0) ++ && g_file_info_get_attribute_boolean(src_info, ++ G_FILE_ATTRIBUTE_ACCESS_CAN_WRITE)) ++ { + copy_only = FALSE; + context->action = GDK_ACTION_MOVE; + } +-- +1.7.9 + diff -Nru xfdesktop4-4.8.3/debian/patches/0013-Unmounted-volumes-are-semi-transparent.patch xfdesktop4-4.8.3/debian/patches/0013-Unmounted-volumes-are-semi-transparent.patch --- xfdesktop4-4.8.3/debian/patches/0013-Unmounted-volumes-are-semi-transparent.patch 1970-01-01 00:00:00.000000000 +0000 +++ xfdesktop4-4.8.3/debian/patches/0013-Unmounted-volumes-are-semi-transparent.patch 2012-02-19 21:50:36.000000000 +0000 @@ -0,0 +1,142 @@ +From 0af2c17f9ff3f3a64da7bc3f07ce06cf6bb107fc Mon Sep 17 00:00:00 2001 +From: Eric Koegel +Date: Thu, 19 Jan 2012 16:54:05 +0300 +Subject: Unmounted volumes are semi-transparent. + +Added code so that when an volume is shown but not currently +mounted it is a semi-transparent icon. Also added an internal +helper function to check if a volume is mounted to avoid some code +duplication. For bug 3963. +--- + src/xfdesktop-volume-icon.c | 62 +++++++++++++++++++++++++++++------------- + 1 files changed, 43 insertions(+), 19 deletions(-) + +diff --git a/src/xfdesktop-volume-icon.c b/src/xfdesktop-volume-icon.c +index 01a5570..ed6abe5 100644 +--- a/src/xfdesktop-volume-icon.c ++++ b/src/xfdesktop-volume-icon.c +@@ -52,6 +52,10 @@ + #include "xfdesktop-notify.h" + #endif + ++#ifdef HAVE_LIBEXO ++#include ++#endif ++ + #include "xfdesktop-common.h" + #include "xfdesktop-file-utils.h" + #include "xfdesktop-volume-icon.h" +@@ -224,6 +228,30 @@ xfdesktop_volume_icon_invalidate_pixbuf(XfdesktopVolumeIcon *icon) + } + } + ++static gboolean ++xfdesktop_volume_icon_is_mounted(XfdesktopIcon *icon) ++{ ++ GVolume *volume = NULL; ++ GMount *mount = NULL; ++ gboolean ret = FALSE; ++ XfdesktopVolumeIcon *volume_icon = XFDESKTOP_VOLUME_ICON(icon); ++ ++ g_return_val_if_fail(XFDESKTOP_IS_VOLUME_ICON(icon), FALSE); ++ ++ volume = xfdesktop_volume_icon_peek_volume(volume_icon); ++ ++ if(volume != NULL) ++ mount = g_volume_get_mount(volume); ++ ++ if(mount != NULL) { ++ ret = TRUE; ++ g_object_unref(mount); ++ } else { ++ ret = FALSE; ++ } ++ ++ return ret; ++} + + static GdkPixbuf * + xfdesktop_volume_icon_peek_pixbuf(XfdesktopIcon *icon, +@@ -244,6 +272,19 @@ xfdesktop_volume_icon_peek_pixbuf(XfdesktopIcon *icon, + + file_icon->priv->pix = xfdesktop_file_utils_get_icon(NULL, gicon, size, + NULL, 100); ++ ++#ifdef HAVE_LIBEXO ++ /* If the volume isn't mounted show it as semi-transparent */ ++ if(!xfdesktop_volume_icon_is_mounted(icon)) { ++ GdkPixbuf *temp; ++ temp = exo_gdk_pixbuf_lucent(file_icon->priv->pix, 50); ++ ++ if(temp != NULL) { ++ g_object_unref(G_OBJECT(file_icon->priv->pix)); ++ file_icon->priv->pix = temp; ++ } ++ } ++#endif + + file_icon->priv->cur_pix_size = size; + } +@@ -268,10 +309,6 @@ xfdesktop_volume_icon_peek_label(XfdesktopIcon *icon) + static GdkDragAction + xfdesktop_volume_icon_get_allowed_drag_actions(XfdesktopIcon *icon) + { +- XfdesktopVolumeIcon *volume_icon = XFDESKTOP_VOLUME_ICON(icon); +- GVolume *volume; +- GMount *mount; +- + /* volume icons more or less represent the volume's mount point, usually + * (hopefully) a local path. so when it's mounted, we certainly can't move + * the mount point, but copying and linking should be OK. when not mounted, +@@ -281,10 +318,7 @@ xfdesktop_volume_icon_get_allowed_drag_actions(XfdesktopIcon *icon) + /* FIXME: should i allow all actions if not mounted as well, and try to + * mount and resolve on drop? */ + +- volume = xfdesktop_volume_icon_peek_volume(volume_icon); +- +- mount = g_volume_get_mount(volume); +- if(mount) { ++ if(xfdesktop_volume_icon_is_mounted(icon)) { + GFileInfo *info = xfdesktop_file_icon_peek_file_info(XFDESKTOP_FILE_ICON(icon)); + if(info) { + if(g_file_info_get_attribute_boolean(info, G_FILE_ATTRIBUTE_ACCESS_CAN_READ)) +@@ -292,8 +326,6 @@ xfdesktop_volume_icon_get_allowed_drag_actions(XfdesktopIcon *icon) + else + return GDK_ACTION_LINK; + } +- +- g_object_unref(mount); + } + + return 0; +@@ -302,26 +334,18 @@ xfdesktop_volume_icon_get_allowed_drag_actions(XfdesktopIcon *icon) + static GdkDragAction + xfdesktop_volume_icon_get_allowed_drop_actions(XfdesktopIcon *icon) + { +- XfdesktopVolumeIcon *volume_icon = XFDESKTOP_VOLUME_ICON(icon); +- GVolume *volume; +- GMount *mount; +- + /* if not mounted, it doesn't really make sense to allow any operations + * here. if mounted, we should allow everything if it's writable. */ + + /* FIXME: should i allow all actions if not mounted as well, and try to + * mount and resolve on drop? */ + +- volume = xfdesktop_volume_icon_peek_volume(volume_icon); +- +- mount = g_volume_get_mount(volume); +- if(mount) { ++ if(xfdesktop_volume_icon_is_mounted(icon)) { + GFileInfo *info = xfdesktop_file_icon_peek_file_info(XFDESKTOP_FILE_ICON(icon)); + if(info) { + if(g_file_info_get_attribute_boolean(info, G_FILE_ATTRIBUTE_ACCESS_CAN_WRITE)) + return GDK_ACTION_MOVE | GDK_ACTION_COPY | GDK_ACTION_LINK; + } +- g_object_unref(mount); + } + + return 0; +-- +1.7.9 + diff -Nru xfdesktop4-4.8.3/debian/patches/0017-Single-click-option-to-open-items-on-desktop.patch xfdesktop4-4.8.3/debian/patches/0017-Single-click-option-to-open-items-on-desktop.patch --- xfdesktop4-4.8.3/debian/patches/0017-Single-click-option-to-open-items-on-desktop.patch 1970-01-01 00:00:00.000000000 +0000 +++ xfdesktop4-4.8.3/debian/patches/0017-Single-click-option-to-open-items-on-desktop.patch 2012-02-19 22:30:42.000000000 +0000 @@ -0,0 +1,337 @@ +From bab7bc4b9af228f5e1b313ebd83f1cfd655dde10 Mon Sep 17 00:00:00 2001 +From: Eric Koegel +Date: Sat, 11 Feb 2012 12:50:09 +0300 +Subject: Single click option to open items on desktop + +This patch adds support to launch items from a single click based +on an xfconf property /desktop-icons/single-click. Also adds a +checkbox to xfdesktop-settings. Bug 1797. +Code for changing the cursor to a "hand" when hovering over items +was provided by Lionel Le Folgoc + + Slightly modified for Xubuntu to apply cleanly. The added string has + been modified to match the option name in Thunar, so we can reuse + existing translations. + +--- + doc/README.xfconf | 1 + + settings/main.c | 9 ++- + settings/xfdesktop-settings-ui.glade | 10 +++ + src/xfdesktop-icon-view.c | 136 ++++++++++++++++++++++++++++++++++ + 4 files changed, 155 insertions(+), 1 deletions(-) + +diff --git a/settings/main.c b/settings/main.c +index 62bcbff..554f802 100644 +--- a/settings/main.c ++++ b/settings/main.c +@@ -70,6 +70,7 @@ + #define DESKTOP_ICONS_ICON_SIZE_PROP "/desktop-icons/icon-size" + #define DESKTOP_ICONS_FONT_SIZE_PROP "/desktop-icons/font-size" + #define DESKTOP_ICONS_CUSTOM_FONT_SIZE_PROP "/desktop-icons/use-custom-font-size" ++#define DESKTOP_ICONS_SINGLE_CLICK_PROP "/desktop-icons/single-click" + #define DESKTOP_ICONS_SHOW_THUMBNAILS_PROP "/desktop-icons/show-thumbnails" + #define DESKTOP_ICONS_SHOW_HOME "/desktop-icons/file-icons/show-home" + #define DESKTOP_ICONS_SHOW_TRASH "/desktop-icons/file-icons/show-trash" +@@ -1263,7 +1264,7 @@ xfdesktop_settings_dialog_add_screens(GtkBuilder *main_gxml, + gint i, j, nmonitors, nscreens; + GtkWidget *dialog, *appearance_container, *chk_custom_font_size, + *spin_font_size, *color_style_widget, *w, *box, +- *spin_icon_size, *chk_show_thumbnails; ++ *spin_icon_size, *chk_show_thumbnails, *chk_single_click; + + dialog = GTK_WIDGET(gtk_builder_get_object(main_gxml, "prefs_dialog")); + appearance_container = GTK_WIDGET(gtk_builder_get_object(main_gxml, + "notebook_screens")); +@@ -1284,6 +1285,9 @@ xfdesktop_settings_dialog_add_screens(GtkBuilder *main_gxml, + "chk_custom_font_size")); + spin_font_size = GTK_WIDGET(gtk_builder_get_object(main_gxml, "spin_font_size")); + ++ chk_single_click = GTK_WIDGET(gtk_builder_get_object(main_gxml, ++ "chk_single_click")); ++ + g_signal_connect(G_OBJECT(chk_custom_font_size), "toggled", + G_CALLBACK(cb_xfdesktop_chk_custom_font_size_toggled), + spin_font_size); +@@ -1538,6 +1542,9 @@ xfdesktop_settings_dialog_add_screens(GtkBuilder *main_gxml, + xfconf_g_property_bind(channel, DESKTOP_ICONS_SHOW_THUMBNAILS_PROP, + G_TYPE_BOOLEAN, G_OBJECT(chk_show_thumbnails), + "active"); ++ xfconf_g_property_bind(channel, DESKTOP_ICONS_SINGLE_CLICK_PROP, ++ G_TYPE_BOOLEAN, G_OBJECT(chk_single_click), ++ "active"); + + setup_special_icon_list(main_gxml, channel); + } +diff --git a/settings/xfdesktop-settings-ui.glade b/settings/xfdesktop-settings-ui.glade +index 5fcc836..eef177e 100644 +--- a/settings/xfdesktop-settings-ui.glade ++++ b/settings/xfdesktop-settings-ui.glade +@@ -696,6 +696,16 @@ + + + ++ ++ True ++ True ++ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK ++ _Single click to activate items ++ True ++ True ++ ++ ++ + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK +diff --git a/src/xfdesktop-icon-view.c b/src/xfdesktop-icon-view.c +index d21b160..d7dfdc4 100644 +--- a/src/xfdesktop-icon-view.c ++++ b/src/xfdesktop-icon-view.c +@@ -49,10 +49,12 @@ + #include "xfdesktop-icon-view.h" + #include "xfdesktop-file-icon-manager.h" + #include "xfdesktop-marshal.h" ++#include "xfdesktop-common.h" + #include "xfce-desktop.h" + + #include + #include ++#include + + #define DEFAULT_FONT_SIZE 12 + #define DEFAULT_ICON_SIZE 32 +@@ -137,6 +139,8 @@ struct _XfdesktopIconViewPrivate + gint press_start_y; + GdkRectangle band_rect; + ++ XfconfChannel *channel; ++ + GdkColor *selection_box_color; + guchar selection_box_alpha; + +@@ -171,8 +175,19 @@ struct _XfdesktopIconViewPrivate + + gboolean ellipsize_icon_labels; + guint tooltip_size; ++ ++ gboolean single_click; + }; + ++static void xfce_icon_view_set_property(GObject *object, ++ guint property_id, ++ const GValue *value, ++ GParamSpec *pspec); ++static void xfce_icon_view_get_property(GObject *object, ++ guint property_id, ++ GValue *value, ++ GParamSpec *pspec); ++ + static gboolean xfdesktop_icon_view_button_press(GtkWidget *widget, + GdkEventButton *evt, + gpointer user_data); +@@ -340,6 +355,13 @@ enum + TARGET_XFDESKTOP_ICON = 9999, + }; + ++enum ++{ ++ PROP_0 = 0, ++ PROP_SINGLE_CLICK, ++}; ++ ++ + static const GtkTargetEntry icon_view_targets[] = { + { "XFDESKTOP_ICON", GTK_TARGET_SAME_APP, TARGET_XFDESKTOP_ICON } + }; +@@ -365,6 +387,8 @@ xfdesktop_icon_view_class_init(XfdesktopIconViewClass *klass) + g_type_class_add_private(klass, sizeof(XfdesktopIconViewPrivate)); + + gobject_class->finalize = xfdesktop_icon_view_finalize; ++ gobject_class->set_property = xfce_icon_view_set_property; ++ gobject_class->get_property = xfce_icon_view_get_property; + + widget_class->style_set = xfdesktop_icon_view_style_set; + widget_class->realize = xfdesktop_icon_view_realize; +@@ -555,6 +579,21 @@ xfdesktop_icon_view_class_init(XfdesktopIconViewClass *klass) + 0, 512, 0, + G_PARAM_READABLE)); + ++#define XFDESKTOP_PARAM_FLAGS (G_PARAM_READWRITE \ ++ | G_PARAM_CONSTRUCT \ ++ | G_PARAM_STATIC_NAME \ ++ | G_PARAM_STATIC_NICK \ ++ | G_PARAM_STATIC_BLURB) ++ ++ g_object_class_install_property(gobject_class, PROP_SINGLE_CLICK, ++ g_param_spec_boolean("single-click", ++ "single-click", ++ "single-click", ++ FALSE, ++ XFDESKTOP_PARAM_FLAGS)); ++ ++#undef XFDESKTOP_PARAM_FLAGS ++ + /* same binding entries as GtkIconView */ + gtk_binding_entry_add_signal(binding_set, GDK_a, GDK_CONTROL_MASK, + "select-all", 0); +@@ -643,6 +682,14 @@ xfdesktop_icon_view_init(XfdesktopIconView *icon_view) + g_object_set(G_OBJECT(icon_view), "has-tooltip", TRUE, NULL); + g_signal_connect(G_OBJECT(icon_view), "query-tooltip", + G_CALLBACK(xfdesktop_icon_view_show_tooltip), NULL); ++ ++ icon_view->priv->channel = xfconf_channel_new (XFDESKTOP_CHANNEL); ++ ++ xfconf_g_property_bind(icon_view->priv->channel, ++ "/desktop-icons/single-click", ++ G_TYPE_BOOLEAN, ++ G_OBJECT(icon_view), ++ "single_click"); + + GTK_WIDGET_SET_FLAGS(GTK_WIDGET(icon_view), GTK_NO_WINDOW); + } +@@ -664,11 +711,54 @@ xfdesktop_icon_view_finalize(GObject *obj) + g_list_foreach(icon_view->priv->pending_icons, (GFunc)g_object_unref, NULL); + g_list_free(icon_view->priv->pending_icons); + /* icon_view->priv->icons should be cleared in _unrealize() */ ++ ++ if (icon_view->priv->channel) { ++ g_object_unref (icon_view->priv->channel); ++ icon_view->priv->channel = NULL; ++ } + + G_OBJECT_CLASS(xfdesktop_icon_view_parent_class)->finalize(obj); + } + + static void ++xfce_icon_view_set_property(GObject *object, ++ guint property_id, ++ const GValue *value, ++ GParamSpec *pspec) ++{ ++ XfdesktopIconView *icon_view = XFDESKTOP_ICON_VIEW(object); ++ ++ switch(property_id) { ++ case PROP_SINGLE_CLICK: ++ icon_view->priv->single_click = g_value_get_boolean (value); ++ break; ++ ++ default: ++ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); ++ break; ++ } ++} ++ ++static void ++xfce_icon_view_get_property(GObject *object, ++ guint property_id, ++ GValue *value, ++ GParamSpec *pspec) ++{ ++ XfdesktopIconView *icon_view = XFDESKTOP_ICON_VIEW(object); ++ ++ switch(property_id) { ++ case PROP_SINGLE_CLICK: ++ g_value_set_boolean(value, icon_view->priv->single_click); ++ break; ++ ++ default: ++ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); ++ break; ++ } ++} ++ ++static void + xfdesktop_icon_view_add_move_binding(GtkBindingSet *binding_set, + guint keyval, + guint modmask, +@@ -808,6 +898,14 @@ xfdesktop_icon_view_button_press(GtkWidget *widget, + } + + static gboolean ++xfdesktop_icon_view_get_single_click(XfdesktopIconView *icon_view) ++{ ++ g_return_val_if_fail(XFDESKTOP_IS_ICON_VIEW(icon_view), FALSE); ++ ++ return icon_view->priv->single_click; ++} ++ ++static gboolean + xfdesktop_icon_view_button_release(GtkWidget *widget, + GdkEventButton *evt, + gpointer user_data) +@@ -816,6 +914,24 @@ xfdesktop_icon_view_button_release(GtkWidget *widget, + + TRACE("entering btn=%d", evt->button); + ++ /* single-click */ ++ if(xfdesktop_icon_view_get_single_click(icon_view) ++ && evt->button == 1 ++ && !(evt->state & GDK_SHIFT_MASK) ++ && !(evt->state & GDK_CONTROL_MASK) ++ && !icon_view->priv->definitely_dragging ++ && !icon_view->priv->definitely_rubber_banding) { ++ XfdesktopIcon *icon; ++ GList *icon_l = g_list_find_custom(icon_view->priv->icons, evt, ++ (GCompareFunc)xfdesktop_check_icon_clicked); ++ if(icon_l && (icon = icon_l->data)) { ++ icon_view->priv->cursor = icon; ++ g_signal_emit(G_OBJECT(icon_view), __signals[SIG_ICON_ACTIVATED], ++ 0, NULL); ++ xfdesktop_icon_activated(icon); ++ } ++ } ++ + if((evt->button == 3 || (evt->button == 1 && (evt->state & GDK_SHIFT_MASK))) && + icon_view->priv->definitely_dragging == FALSE && + icon_view->priv->definitely_rubber_banding == FALSE) +@@ -889,6 +1005,12 @@ xfdesktop_icon_view_focus_out(GtkWidget *widget, + xfdesktop_icon_view_invalidate_icon(icon_view, l->data, FALSE); + } + ++ if(G_UNLIKELY(icon_view->priv->single_click)) { ++ if(G_LIKELY(icon_view->priv->parent_window->window != NULL)) { ++ gdk_window_set_cursor(icon_view->priv->parent_window->window, NULL); ++ } ++ } ++ + return FALSE; + } + +@@ -1076,6 +1198,11 @@ xfdesktop_icon_view_motion_notify(GtkWidget *widget, + /* normal movement; highlight icons as they go under the pointer */ + + if(icon_view->priv->item_under_pointer) { ++ if(G_UNLIKELY(icon_view->priv->single_click)) { ++ GdkCursor *cursor = gdk_cursor_new(GDK_HAND2); ++ gdk_window_set_cursor(evt->window, cursor); ++ gdk_cursor_unref(cursor); ++ } + if(!xfdesktop_icon_get_extents(icon_view->priv->item_under_pointer, + NULL, NULL, &extents) + || !xfdesktop_rectangle_contains_point(&extents, evt->x, evt->y)) +@@ -1087,6 +1214,9 @@ xfdesktop_icon_view_motion_notify(GtkWidget *widget, + #endif + } + } else { ++ if(G_UNLIKELY(icon_view->priv->single_click)) { ++ gdk_window_set_cursor(evt->window, NULL); ++ } + icon = xfdesktop_icon_view_widget_coords_to_item(icon_view, + evt->x, + evt->y); +@@ -1122,6 +1252,12 @@ xfdesktop_icon_view_leave_notify(GtkWidget *widget, + xfdesktop_icon_view_invalidate_icon(icon_view, icon, FALSE); + #endif + } ++ ++ if(G_UNLIKELY(icon_view->priv->single_click)) { ++ if(GTK_WIDGET_REALIZED(widget)) { ++ gdk_window_set_cursor(widget->window, NULL); ++ } ++ } + + return FALSE; + } +-- +1.7.9 + diff -Nru xfdesktop4-4.8.3/debian/patches/series xfdesktop4-4.8.3/debian/patches/series --- xfdesktop4-4.8.3/debian/patches/series 2012-02-13 23:14:51.000000000 +0000 +++ xfdesktop4-4.8.3/debian/patches/series 2012-02-19 22:31:17.000000000 +0000 @@ -9,6 +9,8 @@ 0006-Fix-for-shift-drag-selections.patch 0007-Icon-positions-are-saved-restored-per-resolution.patch 0008-Change-to-POINTER_MOTION_HINT_MASK-use-gdk_event_req.patch -xubuntu_fix-move-multiple-icons.patch -xubuntu_single-click-option.patch +0010-Modified-xfdesktop_icon_view_drag_drop-to-allow-all-.patch +0011-Fix-for-moving-files-instead-of-copy-when-src-isn-t-.patch +0013-Unmounted-volumes-are-semi-transparent.patch +0017-Single-click-option-to-open-items-on-desktop.patch xubuntu_refreshed-translations.patch diff -Nru xfdesktop4-4.8.3/debian/patches/xubuntu_fix-move-multiple-icons.patch xfdesktop4-4.8.3/debian/patches/xubuntu_fix-move-multiple-icons.patch --- xfdesktop4-4.8.3/debian/patches/xubuntu_fix-move-multiple-icons.patch 2012-02-13 22:43:39.000000000 +0000 +++ xfdesktop4-4.8.3/debian/patches/xubuntu_fix-move-multiple-icons.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,97 +0,0 @@ -From 46d8d17c3e5c7f1b00091a29d7b1749fb73b6323 Mon Sep 17 00:00:00 2001 -From: Eric Koegel -Date: Sat, 19 Nov 2011 13:38:56 +0300 -Subject: [PATCH] Modified xfdesktop_icon_view_drag_drop to allow all selected - files to drag and drop. Fixes Bug #5025 - - Slightly modified for Xubuntu to apply cleanly on top of other patches. - -Origin: other, https://bugzilla.xfce.org/attachment.cgi?id=3978 -Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/xfdesktop4/+bug/595658 -Bug: https://bugzilla.xfce.org/show_bug.cgi?id=5025 - ---- - src/xfdesktop-icon-view.c | 46 ++++++++++++++++++++++++++++++++++++++++---- - 1 files changed, 41 insertions(+), 5 deletions(-) - -diff --git a/src/xfdesktop-icon-view.c b/src/xfdesktop-icon-view.c -index 0736006..5c56f34 100644 ---- a/src/xfdesktop-icon-view.c -+++ b/src/xfdesktop-icon-view.c -@@ -1356,6 +1356,7 @@ xfdesktop_icon_view_drag_drop(GtkWidget *widget, - GdkAtom target = GDK_NONE; - XfdesktopIcon *icon; - guint16 old_row, old_col, row, col; -+ GList *l; - XfdesktopIcon *icon_on_dest = NULL; - - TRACE("entering: (%d,%d)", x, y); -@@ -1375,7 +1376,6 @@ xfdesktop_icon_view_drag_drop(GtkWidget *widget, - - if(target == gdk_atom_intern("XFDESKTOP_ICON", FALSE)) { - if(icon_on_dest) { -- GList *l; - gboolean ret = FALSE; - - for(l = icon_view->priv->selected_icons; l; l = l->next) { -@@ -1395,10 +1395,20 @@ xfdesktop_icon_view_drag_drop(GtkWidget *widget, - icon = icon_view->priv->cursor; - g_return_val_if_fail(icon, FALSE); - -- /* clear out old position */ -- xfdesktop_icon_view_invalidate_icon(icon_view, icon, FALSE); -- if(xfdesktop_icon_get_position(icon, &old_row, &old_col)) -- xfdesktop_grid_set_position_free(icon_view, old_row, old_col); -+ /* 1: Remove all the icons that are going to be moved from -+ * the desktop. That's in case the icons being moved -+ * want to rearrange themselves there. -+ * 2: We need to move the icon that's being dragged since the -+ * user explicitly wants to drop it in that spot. -+ * 3: We just append all the other icons in any spot that's -+ * open. */ -+ for(l = icon_view->priv->selected_icons; l; l = l->next) { -+ /* 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); -+ } -+ - /* set new position */ - xfdesktop_icon_set_position(icon, row, col); - xfdesktop_grid_unset_position_free(icon_view, icon); -@@ -1407,6 +1417,32 @@ xfdesktop_icon_view_drag_drop(GtkWidget *widget, - /* FIXME: is this right? */ - xfdesktop_icon_view_invalidate_icon(icon_view, icon, TRUE); - -+ /* Now that we have moved the icon the user selected, -+ * append all the other selected icons after it. */ -+ for(l = icon_view->priv->selected_icons; l; l = l->next) { -+ if(l->data == icon) -+ continue; -+ -+ /* 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 */ -+ xfdesktop_icon_set_position(l->data, row, col); -+ xfdesktop_grid_unset_position_free(icon_view, l->data); -+ -+ /* clear out old extents, if any */ -+ /* FIXME: is this right? */ -+ //xfdesktop_icon_mark_extents_dirty(icon); -+ xfdesktop_icon_view_invalidate_icon(icon_view, l->data, TRUE); -+ } -+ - DBG("drag succeeded"); - - gtk_drag_finish(context, TRUE, FALSE, time_); --- -1.7.5.4 - diff -Nru xfdesktop4-4.8.3/debian/patches/xubuntu_single-click-option.patch xfdesktop4-4.8.3/debian/patches/xubuntu_single-click-option.patch --- xfdesktop4-4.8.3/debian/patches/xubuntu_single-click-option.patch 2012-02-14 21:02:28.000000000 +0000 +++ xfdesktop4-4.8.3/debian/patches/xubuntu_single-click-option.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,322 +0,0 @@ -From 746f8892978ac50b5505654231bdb2325d6fb333 Mon Sep 17 00:00:00 2001 -From: Eric Koegel -Date: Mon, 16 Jan 2012 16:28:50 +0300 -Subject: [PATCH] Single click option to open items on desktop. - -This patch adds support to launch items from a single left click -based on an xfconf property /desktop-icons/single-click. Bug 1797. - - Slightly modified for Xubuntu to apply cleanly and to include cursor - changes (cf. comments on the upstream bug report). The added string - has been modified to match the option name in Thunar, so we can reuse - existing translations. - -Last-Update: 2012-02-13 -Origin: other, https://bugzilla.xfce.org/attachment.cgi?id=4113 -Bug: https://bugzilla.xfce.org/show_bug.cgi?id=1797 - ---- xfdesktop4-4.8.3.orig/settings/main.c -+++ xfdesktop4-4.8.3/settings/main.c -@@ -69,6 +69,7 @@ - #define DESKTOP_ICONS_STYLE_PROP "/desktop-icons/style" - #define DESKTOP_ICONS_ICON_SIZE_PROP "/desktop-icons/icon-size" - #define DESKTOP_ICONS_FONT_SIZE_PROP "/desktop-icons/font-size" -+#define DESKTOP_ICONS_SINGLE_CLICK_PROP "/desktop-icons/single-click" - #define DESKTOP_ICONS_CUSTOM_FONT_SIZE_PROP "/desktop-icons/use-custom-font-size" - #define DESKTOP_ICONS_SHOW_THUMBNAILS_PROP "/desktop-icons/show-thumbnails" - #define DESKTOP_ICONS_SHOW_HOME "/desktop-icons/file-icons/show-home" -@@ -1263,7 +1264,7 @@ xfdesktop_settings_dialog_new(GtkBuilder - gint i, j, nmonitors, nscreens; - GtkWidget *dialog, *appearance_container, *chk_custom_font_size, - *spin_font_size, *color_style_widget, *w, *box, -- *spin_icon_size, *chk_show_thumbnails; -+ *spin_icon_size, *chk_single_click, *chk_show_thumbnails; - - dialog = GTK_WIDGET(gtk_builder_get_object(main_gxml, "prefs_dialog")); - appearance_container = GTK_WIDGET(gtk_builder_get_object(main_gxml, -@@ -1288,6 +1289,9 @@ xfdesktop_settings_dialog_new(GtkBuilder - G_CALLBACK(cb_xfdesktop_chk_custom_font_size_toggled), - spin_font_size); - -+ chk_single_click = GTK_WIDGET(gtk_builder_get_object(main_gxml, -+ "chk_single_click")); -+ - chk_show_thumbnails = GTK_WIDGET(gtk_builder_get_object(main_gxml, - "chk_show_thumbnails")); - -@@ -1535,6 +1539,9 @@ xfdesktop_settings_dialog_new(GtkBuilder - xfconf_g_property_bind(channel, DESKTOP_ICONS_CUSTOM_FONT_SIZE_PROP, - G_TYPE_BOOLEAN, G_OBJECT(chk_custom_font_size), - "active"); -+ xfconf_g_property_bind(channel, DESKTOP_ICONS_SINGLE_CLICK_PROP, -+ G_TYPE_BOOLEAN, G_OBJECT(chk_single_click), -+ "active"); - xfconf_g_property_bind(channel, DESKTOP_ICONS_SHOW_THUMBNAILS_PROP, - G_TYPE_BOOLEAN, G_OBJECT(chk_show_thumbnails), - "active"); ---- xfdesktop4-4.8.3.orig/settings/xfdesktop-settings-ui.glade -+++ xfdesktop4-4.8.3/settings/xfdesktop-settings-ui.glade -@@ -685,6 +685,16 @@ - - - -+ -+ True -+ True -+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK -+ _Single click to activate items -+ True -+ True -+ -+ -+ - - True - True ---- xfdesktop4-4.8.3.orig/src/xfdesktop-icon-view.c -+++ xfdesktop4-4.8.3/src/xfdesktop-icon-view.c -@@ -49,10 +49,12 @@ - #include "xfdesktop-icon-view.h" - #include "xfdesktop-file-icon-manager.h" - #include "xfdesktop-marshal.h" -+#include "xfdesktop-common.h" - #include "xfce-desktop.h" - - #include - #include -+#include - - #define DEFAULT_FONT_SIZE 12 - #define DEFAULT_ICON_SIZE 32 -@@ -137,6 +139,8 @@ struct _XfdesktopIconViewPrivate - gint press_start_y; - GdkRectangle band_rect; - -+ XfconfChannel *channel; -+ - GdkColor *selection_box_color; - guchar selection_box_alpha; - -@@ -170,9 +174,19 @@ struct _XfdesktopIconViewPrivate - gdouble cell_text_width_proportion; - - gboolean ellipsize_icon_labels; -+ gboolean single_click; - guint tooltip_size; - }; - -+static void xfce_icon_view_set_property(GObject *object, -+ guint property_id, -+ const GValue *value, -+ GParamSpec *pspec); -+static void xfce_icon_view_get_property(GObject *object, -+ guint property_id, -+ GValue *value, -+ GParamSpec *pspec); -+ - static gboolean xfdesktop_icon_view_button_press(GtkWidget *widget, - GdkEventButton *evt, - gpointer user_data); -@@ -340,6 +354,13 @@ enum - TARGET_XFDESKTOP_ICON = 9999, - }; - -+enum -+{ -+ PROP_0 = 0, -+ PROP_SINGLE_CLICK, -+}; -+ -+ - static const GtkTargetEntry icon_view_targets[] = { - { "XFDESKTOP_ICON", GTK_TARGET_SAME_APP, TARGET_XFDESKTOP_ICON } - }; -@@ -365,6 +386,8 @@ xfdesktop_icon_view_class_init(Xfdesktop - g_type_class_add_private(klass, sizeof(XfdesktopIconViewPrivate)); - - gobject_class->finalize = xfdesktop_icon_view_finalize; -+ gobject_class->set_property = xfce_icon_view_set_property; -+ gobject_class->get_property = xfce_icon_view_get_property; - - widget_class->style_set = xfdesktop_icon_view_style_set; - widget_class->realize = xfdesktop_icon_view_realize; -@@ -555,6 +578,21 @@ xfdesktop_icon_view_class_init(Xfdesktop - 0, 512, 0, - G_PARAM_READABLE)); - -+#define XFDESKTOP_PARAM_FLAGS (G_PARAM_READWRITE \ -+ | G_PARAM_CONSTRUCT \ -+ | G_PARAM_STATIC_NAME \ -+ | G_PARAM_STATIC_NICK \ -+ | G_PARAM_STATIC_BLURB) -+ -+ g_object_class_install_property(gobject_class, PROP_SINGLE_CLICK, -+ g_param_spec_boolean("single-click", -+ "single-click", -+ "single-click", -+ FALSE, -+ XFDESKTOP_PARAM_FLAGS)); -+ -+#undef XFDESKTOP_PARAM_FLAGS -+ - /* same binding entries as GtkIconView */ - gtk_binding_entry_add_signal(binding_set, GDK_a, GDK_CONTROL_MASK, - "select-all", 0); -@@ -643,6 +681,14 @@ xfdesktop_icon_view_init(XfdesktopIconVi - g_object_set(G_OBJECT(icon_view), "has-tooltip", TRUE, NULL); - g_signal_connect(G_OBJECT(icon_view), "query-tooltip", - G_CALLBACK(xfdesktop_icon_view_show_tooltip), NULL); -+ -+ icon_view->priv->channel = xfconf_channel_new (XFDESKTOP_CHANNEL); -+ -+ xfconf_g_property_bind(icon_view->priv->channel, -+ "/desktop-icons/single-click", -+ G_TYPE_BOOLEAN, -+ G_OBJECT(icon_view), -+ "single_click"); - - GTK_WIDGET_SET_FLAGS(GTK_WIDGET(icon_view), GTK_NO_WINDOW); - } -@@ -664,11 +710,54 @@ xfdesktop_icon_view_finalize(GObject *ob - g_list_foreach(icon_view->priv->pending_icons, (GFunc)g_object_unref, NULL); - g_list_free(icon_view->priv->pending_icons); - /* icon_view->priv->icons should be cleared in _unrealize() */ -+ -+ if (icon_view->priv->channel) { -+ g_object_unref (icon_view->priv->channel); -+ icon_view->priv->channel = NULL; -+ } - - G_OBJECT_CLASS(xfdesktop_icon_view_parent_class)->finalize(obj); - } - - static void -+xfce_icon_view_set_property(GObject *object, -+ guint property_id, -+ const GValue *value, -+ GParamSpec *pspec) -+{ -+ XfdesktopIconView *icon_view = XFDESKTOP_ICON_VIEW(object); -+ -+ switch(property_id) { -+ case PROP_SINGLE_CLICK: -+ icon_view->priv->single_click = g_value_get_boolean (value); -+ break; -+ -+ default: -+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); -+ break; -+ } -+} -+ -+static void -+xfce_icon_view_get_property(GObject *object, -+ guint property_id, -+ GValue *value, -+ GParamSpec *pspec) -+{ -+ XfdesktopIconView *icon_view = XFDESKTOP_ICON_VIEW(object); -+ -+ switch(property_id) { -+ case PROP_SINGLE_CLICK: -+ g_value_set_boolean(value, icon_view->priv->single_click); -+ break; -+ -+ default: -+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); -+ break; -+ } -+} -+ -+static void - xfdesktop_icon_view_add_move_binding(GtkBindingSet *binding_set, - guint keyval, - guint modmask, -@@ -808,6 +897,14 @@ xfdesktop_icon_view_button_press(GtkWidg - } - - static gboolean -+xfdesktop_icon_view_get_single_click(XfdesktopIconView *icon_view) -+{ -+ g_return_val_if_fail(XFDESKTOP_IS_ICON_VIEW(icon_view), FALSE); -+ -+ return icon_view->priv->single_click; -+} -+ -+static gboolean - xfdesktop_icon_view_button_release(GtkWidget *widget, - GdkEventButton *evt, - gpointer user_data) -@@ -816,6 +913,24 @@ xfdesktop_icon_view_button_release(GtkWi - - TRACE("entering btn=%d", evt->button); - -+ /* single-click */ -+ if(xfdesktop_icon_view_get_single_click(icon_view) -+ && evt->button == 1 -+ && !(evt->state & GDK_SHIFT_MASK) -+ && !icon_view->priv->definitely_dragging -+ && !icon_view->priv->definitely_rubber_banding) { -+ XfdesktopIcon *icon; -+ GList *icon_l = g_list_find_custom(icon_view->priv->icons, evt, -+ (GCompareFunc)xfdesktop_check_icon_clicked); -+ if(icon_l && (icon = icon_l->data)) { -+ icon_view->priv->cursor = icon; -+ g_signal_emit(G_OBJECT(icon_view), __signals[SIG_ICON_ACTIVATED], -+ 0, NULL); -+ xfdesktop_icon_activated(icon); -+ } -+ } -+ -+ - if((evt->button == 3 || (evt->button == 1 && (evt->state & GDK_SHIFT_MASK))) && - icon_view->priv->definitely_dragging == FALSE && - icon_view->priv->definitely_rubber_banding == FALSE) -@@ -889,6 +1004,12 @@ xfdesktop_icon_view_focus_out(GtkWidget - xfdesktop_icon_view_invalidate_icon(icon_view, l->data, FALSE); - } - -+ if(G_UNLIKELY(icon_view->priv->single_click)) { -+ if(G_LIKELY(icon_view->priv->parent_window->window != NULL)) { -+ gdk_window_set_cursor(icon_view->priv->parent_window->window, NULL); -+ } -+ } -+ - return FALSE; - } - -@@ -1076,6 +1197,11 @@ xfdesktop_icon_view_motion_notify(GtkWid - /* normal movement; highlight icons as they go under the pointer */ - - if(icon_view->priv->item_under_pointer) { -+ if(G_UNLIKELY(icon_view->priv->single_click)) { -+ GdkCursor *cursor = gdk_cursor_new(GDK_HAND2); -+ gdk_window_set_cursor(evt->window, cursor); -+ gdk_cursor_unref(cursor); -+ } - if(!xfdesktop_icon_get_extents(icon_view->priv->item_under_pointer, - NULL, NULL, &extents) - || !xfdesktop_rectangle_contains_point(&extents, evt->x, evt->y)) -@@ -1087,6 +1213,9 @@ xfdesktop_icon_view_motion_notify(GtkWid - #endif - } - } else { -+ if(G_UNLIKELY(icon_view->priv->single_click)) { -+ gdk_window_set_cursor(evt->window, NULL); -+ } - icon = xfdesktop_icon_view_widget_coords_to_item(icon_view, - evt->x, - evt->y); -@@ -1122,6 +1251,12 @@ xfdesktop_icon_view_leave_notify(GtkWidg - xfdesktop_icon_view_invalidate_icon(icon_view, icon, FALSE); - #endif - } -+ -+ if(G_UNLIKELY(icon_view->priv->single_click)) { -+ if(GTK_WIDGET_REALIZED(widget)) { -+ gdk_window_set_cursor(widget->window, NULL); -+ } -+ } - - return FALSE; - }