app: Destory the dock window from the dock window, not the dock

This commit is contained in:
Martin Nordholts 2009-09-26 15:24:05 +02:00
parent 0be33be0dc
commit 12a0ea1063
2 changed files with 20 additions and 2 deletions

View File

@ -288,8 +288,6 @@ static void
gimp_dock_real_book_removed (GimpDock *dock,
GimpDockbook *dockbook)
{
if (dock->p->dockbooks == NULL)
gtk_widget_destroy (GTK_WIDGET (dock));
}

View File

@ -104,6 +104,9 @@ static void gimp_dock_window_image_flush (GimpImage *ima
GimpDockWindow *dock_window);
static void gimp_dock_window_update_title (GimpDockWindow *dock_window);
static gboolean gimp_dock_window_update_title_idle (GimpDockWindow *dock_window);
static void gimp_dock_window_dock_book_removed (GimpDockWindow *dock_window,
GimpDockbook *dockbook,
GimpDock *dock);
G_DEFINE_TYPE (GimpDockWindow, gimp_dock_window, GIMP_TYPE_WINDOW)
@ -251,6 +254,12 @@ gimp_dock_window_constructor (GType type,
G_CALLBACK (gimp_dock_set_host_geometry_hints),
dock_window, 0);
/* Destroy the dock window when the last book is removed */
g_signal_connect_object (dock, "book-removed",
G_CALLBACK (gimp_dock_window_dock_book_removed),
dock_window,
G_CONNECT_SWAPPED);
/* Done! */
return object;
}
@ -502,6 +511,17 @@ gimp_dock_window_update_title_idle (GimpDockWindow *dock_window)
return FALSE;
}
static void
gimp_dock_window_dock_book_removed (GimpDockWindow *dock_window,
GimpDockbook *dockbook,
GimpDock *dock)
{
g_return_if_fail (GIMP_IS_DOCK (dock));
if (gimp_dock_get_dockbooks (dock) == NULL)
gtk_widget_destroy (GTK_WIDGET (dock_window));
}
gint
gimp_dock_window_get_id (GimpDockWindow *dock_window)
{