Author: kelnos
Date: 2007-11-07 06:13:50 +0000 (Wed, 07 Nov 2007)
New Revision: 26269
Modified:
xfdesktop/branches/xfce_4_4/src/xfdesktop-icon-view.c
xfdesktop/trunk/src/xfdesktop-icon-view.c
Log:
possibly fix fake drag when double-clicking an icon causes an error dialog
to pop up (bug 3426)
Modified: xfdesktop/branches/xfce_4_4/src/xfdesktop-icon-view.c
===================================================================
--- xfdesktop/branches/xfce_4_4/src/xfdesktop-icon-view.c 2007-11-07
06:12:01 UTC (rev 26268)
+++ xfdesktop/branches/xfce_4_4/src/xfdesktop-icon-view.c 2007-11-07
06:13:50 UTC (rev 26269)
@@ -410,6 +410,32 @@
}
static gboolean
+xfdesktop_icon_view_icon_selected_idled(gpointer data)
+{
+ XfdesktopIcon *icon = data;
+
+ g_signal_emit(G_OBJECT(xfdesktop_icon_peek_icon_view(icon)),
+ __signals[SIG_ICON_SELECTED], 0, NULL);
+ xfdesktop_icon_selected(icon);
+ g_object_unref(G_OBJECT(icon));
+
+ return FALSE;
+}
+
+static gboolean
+xfdesktop_icon_view_icon_activated_idled(gpointer data)
+{
+ XfdesktopIcon *icon = data;
+
+ g_signal_emit(G_OBJECT(xfdesktop_icon_peek_icon_view(icon)),
+ __signals[SIG_ICON_ACTIVATED], 0, NULL);
+ xfdesktop_icon_activated(icon);
+ g_object_unref(G_OBJECT(icon));
+
+ return FALSE;
+}
+
+static gboolean
xfdesktop_icon_view_button_press(GtkWidget *widget,
GdkEventButton *evt,
gpointer user_data)
@@ -513,10 +539,8 @@
icon1);
xfdesktop_icon_view_clear_icon_extents(icon_view,
icon1);
- g_signal_emit(G_OBJECT(icon_view),
- __signals[SIG_ICON_SELECTED],
- 0, NULL);
- xfdesktop_icon_selected(icon1);
+
g_idle_add(xfdesktop_icon_view_icon_selected_idled,
+ g_object_ref(G_OBJECT(icon1)));
}
}
}
@@ -525,11 +549,8 @@
icon_view->priv->selected_icons =
g_list_prepend(icon_view->priv->selected_icons,
icon);
xfdesktop_icon_view_clear_icon_extents(icon_view, icon);
-
- g_signal_emit(G_OBJECT(icon_view),
- __signals[SIG_ICON_SELECTED],
- 0, NULL);
- xfdesktop_icon_selected(icon);
+ g_idle_add(xfdesktop_icon_view_icon_selected_idled,
+ g_object_ref(G_OBJECT(icon)));
}
}
@@ -569,9 +590,8 @@
(GCompareFunc)xfdesktop_check_icon_clicked);
if(icon_l && (icon = icon_l->data)) {
icon_view->priv->last_clicked_item = icon;
- g_signal_emit(G_OBJECT(icon_view),
__signals[SIG_ICON_ACTIVATED],
- 0, NULL);
- xfdesktop_icon_activated(icon);
+ g_idle_add(xfdesktop_icon_view_icon_activated_idled,
+ g_object_ref(G_OBJECT(icon)));
}
}
Modified: xfdesktop/trunk/src/xfdesktop-icon-view.c
===================================================================
--- xfdesktop/trunk/src/xfdesktop-icon-view.c 2007-11-07 06:12:01 UTC (rev
26268)
+++ xfdesktop/trunk/src/xfdesktop-icon-view.c 2007-11-07 06:13:50 UTC (rev
26269)
@@ -410,6 +410,32 @@
}
static gboolean
+xfdesktop_icon_view_icon_selected_idled(gpointer data)
+{
+ XfdesktopIcon *icon = data;
+
+ g_signal_emit(G_OBJECT(xfdesktop_icon_peek_icon_view(icon)),
+ __signals[SIG_ICON_SELECTED], 0, NULL);
+ xfdesktop_icon_selected(icon);
+ g_object_unref(G_OBJECT(icon));
+
+ return FALSE;
+}
+
+static gboolean
+xfdesktop_icon_view_icon_activated_idled(gpointer data)
+{
+ XfdesktopIcon *icon = data;
+
+ g_signal_emit(G_OBJECT(xfdesktop_icon_peek_icon_view(icon)),
+ __signals[SIG_ICON_ACTIVATED], 0, NULL);
+ xfdesktop_icon_activated(icon);
+ g_object_unref(G_OBJECT(icon));
+
+ return FALSE;
+}
+
+static gboolean
xfdesktop_icon_view_button_press(GtkWidget *widget,
GdkEventButton *evt,
gpointer user_data)
@@ -513,10 +539,8 @@
icon1);
xfdesktop_icon_view_clear_icon_extents(icon_view,
icon1);
- g_signal_emit(G_OBJECT(icon_view),
- __signals[SIG_ICON_SELECTED],
- 0, NULL);
- xfdesktop_icon_selected(icon1);
+
g_idle_add(xfdesktop_icon_view_icon_selected_idled,
+ g_object_ref(G_OBJECT(icon1)));
}
}
}
@@ -525,11 +549,8 @@
icon_view->priv->selected_icons =
g_list_prepend(icon_view->priv->selected_icons,
icon);
xfdesktop_icon_view_clear_icon_extents(icon_view, icon);
-
- g_signal_emit(G_OBJECT(icon_view),
- __signals[SIG_ICON_SELECTED],
- 0, NULL);
- xfdesktop_icon_selected(icon);
+ g_idle_add(xfdesktop_icon_view_icon_selected_idled,
+ g_object_ref(G_OBJECT(icon)));
}
}
@@ -570,9 +591,8 @@
(GCompareFunc)xfdesktop_check_icon_clicked);
if(icon_l && (icon = icon_l->data)) {
icon_view->priv->last_clicked_item = icon;
- g_signal_emit(G_OBJECT(icon_view),
__signals[SIG_ICON_ACTIVATED],
- 0, NULL);
- xfdesktop_icon_activated(icon);
+ g_idle_add(xfdesktop_icon_view_icon_activated_idled,
+ g_object_ref(G_OBJECT(icon)));
}
}
_______________________________________________
Xfce4-commits mailing list
[email protected]
http://foo-projects.org/mailman/listinfo/xfce4-commits