mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Fix drag and drop error
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>
This commit is contained in:
parent
55352a051c
commit
f89aec94e2
1 changed files with 6 additions and 6 deletions
12
gtk-gui.c
12
gtk-gui.c
|
@ -694,23 +694,21 @@ static GtkNotebook *create_new_notebook_window(GtkNotebook *source,
|
||||||
return GTK_NOTEBOOK(notebook);
|
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,
|
gint x, gint y, guint time,
|
||||||
gpointer user_data)
|
gpointer user_data)
|
||||||
{
|
{
|
||||||
GtkWidget *source;
|
GtkWidget *source;
|
||||||
notebook_data_t *nbdp;
|
notebook_data_t *nbdp;
|
||||||
|
|
||||||
|
gtk_drag_finish(context, TRUE, TRUE, time);
|
||||||
source = gtk_drag_get_source_widget(context);
|
source = gtk_drag_get_source_widget(context);
|
||||||
if (nbd[0].name && ! strcmp(nbd[0].name,gtk_widget_get_name(source)))
|
if (nbd[0].name && ! strcmp(nbd[0].name,gtk_widget_get_name(source)))
|
||||||
nbdp = nbd;
|
nbdp = nbd;
|
||||||
else if (nbd[1].name && ! strcmp(nbd[1].name,gtk_widget_get_name(source)))
|
else if (nbd[1].name && ! strcmp(nbd[1].name,gtk_widget_get_name(source)))
|
||||||
nbdp = nbd + 1;
|
nbdp = nbd + 1;
|
||||||
else
|
else /* just on ourselves */
|
||||||
/* HU? */
|
return TRUE;
|
||||||
return;
|
|
||||||
|
|
||||||
gtk_drag_finish(context, TRUE, TRUE, time);
|
|
||||||
|
|
||||||
/* we no longer need the widget - but getting rid of this is hard;
|
/* we no longer need the widget - but getting rid of this is hard;
|
||||||
* remove the signal handler, remove the notebook from the box
|
* 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;
|
nbdp->widget = NULL;
|
||||||
free(nbdp->name);
|
free(nbdp->name);
|
||||||
nbdp->name = NULL;
|
nbdp->name = NULL;
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
|
|
Loading…
Add table
Reference in a new issue