Notebook.setTabDetachable

Sets whether the tab can be detached from notebook to another notebook or widget.

Note that 2 notebooks must share a common group identificator (see Notebook.setGroupName) to allow automatic tabs interchange between them.

If you want a widget to interact with a notebook through DnD (i.e.: accept dragged tabs from it) it must be set as a drop destination and accept the target “GTK_NOTEBOOK_TAB”. The notebook will fill the selection with a GtkWidget** pointing to the child widget that corresponds to the dropped tab.

Note that you should use Notebook.detachTab instead of Container.remove if you want to remove the tab from the source notebook as part of accepting a drop. Otherwise, the source notebook will think that the dragged tab was removed from underneath the ongoing drag operation, and will initiate a drag cancel animation.

static void
on_drag_data_received (GtkWidget        *widget,
GdkDragContext   *context,
gint              x,
gint              y,
GtkSelectionData *data,
guint             info,
guint             time,
gpointer          user_data)
{
GtkWidget *notebook;
GtkWidget **child;

notebook = gtk_drag_get_source_widget (context);
child = (void*) gtk_selection_data_get_data (data);

// process_widget (*child);

gtk_notebook_detach_tab (GTK_NOTEBOOK (notebook), *child);
}

If you want a notebook to accept drags from other widgets, you will have to set your own DnD code to do it.

class Notebook
void
setTabDetachable

Parameters

child Widget

a child gtk.Widget

detachable bool

whether the tab is detachable or not

Meta

Since

2.10