- /*
- * Horrible, horrible hack. We hide the old divelist window, and
- * set it to NULL. So if we drag the thing back out, we'll create
- * a new window. Ugh.
- *
- * Actually destroying the divelist window triggers the whole
- * destroy callback, which we don't want.
- */
- if (source != target) {
- gtk_widget_hide(divelist_window);
- divelist_window = NULL;
- }
+ /* we no longer need the widget - but getting rid of this is hard;
+ * remove the signal handler, remove the notebook from the box
+ * then destroy the widget (and clear out our data structure) */
+ g_signal_handler_disconnect(nbdp->widget,nbdp->delete_handler);
+ g_signal_handler_disconnect(nbdp->widget,nbdp->destroy_handler);
+ gtk_container_remove(GTK_CONTAINER(nbdp->box), source);
+ gtk_widget_destroy(nbdp->widget);
+ nbdp->widget = NULL;
+ free(nbdp->name);
+ nbdp->name = NULL;