[brasero] Fix a long time nagging warning in eggtreemultidnd and GtkFileChooserDialog when you double clicked
- From: Philippe Rouquier <philippr src gnome org>
- To: svn-commits-list gnome org
- Subject: [brasero] Fix a long time nagging warning in eggtreemultidnd and GtkFileChooserDialog when you double clicked
- Date: Sun, 24 May 2009 16:30:04 -0400 (EDT)
commit 1ae053cfb8107278c98feb072ecac7eb82cdd6f8
Author: Philippe Rouquier <bonfire-app wanadoo fr>
Date: Sun May 24 11:14:13 2009 +0200
Fix a long time nagging warning in eggtreemultidnd and GtkFileChooserDialog when you double clicked on a file
---
src/eggtreemultidnd.c | 32 +++++++++++++++++++++++++-------
1 files changed, 25 insertions(+), 7 deletions(-)
diff --git a/src/eggtreemultidnd.c b/src/eggtreemultidnd.c
index b694846..35a085f 100644
--- a/src/eggtreemultidnd.c
+++ b/src/eggtreemultidnd.c
@@ -28,9 +28,9 @@ typedef struct
guint pressed_button;
gint x;
gint y;
- guint motion_notify_handler;
- guint button_release_handler;
- guint drag_data_get_handler;
+ gulong motion_notify_handler;
+ gulong button_release_handler;
+ gulong drag_data_get_handler;
GSList *event_list;
} EggTreeMultiDndData;
@@ -173,8 +173,6 @@ stop_drag_check (GtkWidget *widget)
g_slist_free (priv_data->event_list);
priv_data->event_list = NULL;
- g_signal_handler_disconnect (widget, priv_data->motion_notify_handler);
- g_signal_handler_disconnect (widget, priv_data->button_release_handler);
}
static gboolean
@@ -187,9 +185,20 @@ egg_tree_multi_drag_button_release_event (GtkWidget *widget,
priv_data = g_object_get_data (G_OBJECT (widget), EGG_TREE_MULTI_DND_STRING);
+ /* disconnect before sending all queued events to avoid a warning with
+ * GtkFileChooserDialog and double click. */
+ if (priv_data->motion_notify_handler) {
+ g_signal_handler_disconnect (widget, priv_data->motion_notify_handler);
+ priv_data->motion_notify_handler = 0;
+ }
+ if (priv_data->button_release_handler) {
+ g_signal_handler_disconnect (widget, priv_data->button_release_handler);
+ priv_data->button_release_handler = 0;
+ }
+
for (l = priv_data->event_list; l != NULL; l = l->next)
gtk_propagate_event (widget, l->data);
-
+
stop_drag_check (widget);
return FALSE;
@@ -309,6 +318,14 @@ egg_tree_multi_drag_motion_event (GtkWidget *widget,
return FALSE;
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (widget));
+ if (priv_data->motion_notify_handler) {
+ g_signal_handler_disconnect (widget, priv_data->motion_notify_handler);
+ priv_data->motion_notify_handler = 0;
+ }
+ if (priv_data->button_release_handler) {
+ g_signal_handler_disconnect (widget, priv_data->button_release_handler);
+ priv_data->button_release_handler = 0;
+ }
stop_drag_check (widget);
gtk_tree_selection_selected_foreach (selection, selection_foreach, &path_list);
path_list = g_list_reverse (path_list);
@@ -399,9 +416,10 @@ egg_tree_multi_drag_button_press_event (GtkWidget *widget,
priv_data->x = event->x;
priv_data->y = event->y;
priv_data->event_list = g_slist_append (priv_data->event_list, gdk_event_copy ((GdkEvent*)event));
+
priv_data->motion_notify_handler =
g_signal_connect (G_OBJECT (tree_view), "motion_notify_event", G_CALLBACK (egg_tree_multi_drag_motion_event), NULL);
- priv_data->button_release_handler =
+ priv_data->button_release_handler =
g_signal_connect (G_OBJECT (tree_view), "button_release_event", G_CALLBACK (egg_tree_multi_drag_button_release_event), NULL);
if (priv_data->drag_data_get_handler == 0)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]