]> git.tdb.fi Git - ext/subsurface.git/commitdiff
Fix drag and drop error
authorDirk Hohndel <dirk@hohndel.org>
Wed, 2 Nov 2011 21:35:47 +0000 (14:35 -0700)
committerDirk Hohndel <dirk@hohndel.org>
Wed, 2 Nov 2011 21:35:47 +0000 (14:35 -0700)
Linus noted an odd "CRITICAL" warning when ripping off a page of the
notebook and then dropping it within the same notebook.

Turns out we need to simply accept a drop on ourselves and gtk does the
rest correctly.

I also fixed the fact that we incorrectly declared the callback as 'void'.

Reported-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
gtk-gui.c

index 339b13f4c37c67cbec6681525425d261700f8fe3..c78d7e6677feeadabf850c738f2450dfc5132884 100644 (file)
--- a/gtk-gui.c
+++ b/gtk-gui.c
@@ -694,23 +694,21 @@ static GtkNotebook *create_new_notebook_window(GtkNotebook *source,
        return GTK_NOTEBOOK(notebook);
 }
 
-static void drag_cb(GtkWidget *widget, GdkDragContext *context,
+static gboolean drag_cb(GtkWidget *widget, GdkDragContext *context,
        gint x, gint y, guint time,
        gpointer user_data)
 {
        GtkWidget *source;
        notebook_data_t *nbdp;
 
+       gtk_drag_finish(context, TRUE, TRUE, time);
        source = gtk_drag_get_source_widget(context);
        if (nbd[0].name && ! strcmp(nbd[0].name,gtk_widget_get_name(source)))
                nbdp = nbd;
        else if (nbd[1].name && ! strcmp(nbd[1].name,gtk_widget_get_name(source)))
                nbdp = nbd + 1;
-       else
-               /* HU? */
-               return;
-
-       gtk_drag_finish(context, TRUE, TRUE, time);
+       else /* just on ourselves */
+               return TRUE;
 
        /* we no longer need the widget - but getting rid of this is hard;
         * remove the signal handler, remove the notebook from the box
@@ -722,6 +720,8 @@ static void drag_cb(GtkWidget *widget, GdkDragContext *context,
        nbdp->widget = NULL;
        free(nbdp->name);
        nbdp->name = NULL;
+
+       return TRUE;
 }
 
 #ifdef WIN32