set_tab_detachable
Description:
Sets whether the tab can be detached from this to another notebook or widget.
Note that two notebooks must share a common group identifier (see [method@Gtk.Notebook.set_group_name]) 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 by adding
to it a [class@Gtk.DropTarget] controller that accepts the GType `GTK_TYPE_NOTEBOOK_PAGE`. The `GtkNotebook:value
` of said drop
target will be preloaded with a [class@Gtk.NotebookPage] object that corresponds to the dropped tab, so you can process the value via `
GtkNotebook::accept
` or `GtkNotebook::drop
` signals.
Note that you should use [method@Gtk.Notebook.detach_tab] instead of [method@Gtk.Notebook.remove_page] 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.
```c static void on_drag_data_received (GtkWidget *widget, GdkDrop *drop, GtkSelectionData *data, guint time, gpointer user_data) { GtkDrag *drag; GtkWidget *notebook; GtkWidget **child;
drag = gtk_drop_get_drag (drop); notebook = g_object_get_data (drag, "gtk-notebook-drag-origin"); 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.
Parameters:
this |
a `GtkNotebook` |
child |
a child `GtkWidget` |
detachable |
whether the tab is detachable or not |