app: Make GimpDockContainer::get_docks() return a new list

Make GimpDockContainer::get_docks() return a new list and not just a
pointer to a list so that GimpImageWindow can implement it (who needs
to merge its two GimpDockColumns lists).
This commit is contained in:
Martin Nordholts
2011-05-11 18:06:59 +02:00
parent 00c2d15a3a
commit 0f19471e22
5 changed files with 46 additions and 18 deletions

View File

@ -176,7 +176,7 @@ gimp_ui_configurer_move_docks_to_columns (GimpUIConfigurer *ui_configurer,
dock_window = GIMP_DOCK_WINDOW (dialog_iter->data);
dock_container = GIMP_DOCK_CONTAINER (dock_window);
docks = g_list_copy (gimp_dock_container_get_docks (dock_container));
docks = gimp_dock_container_get_docks (dock_container);
for (dock_iter = docks; dock_iter; dock_iter = dock_iter->next)
{
GimpDock *dock = GIMP_DOCK (dock_iter->data);
@ -202,12 +202,21 @@ gimp_ui_configurer_move_docks_to_columns (GimpUIConfigurer *ui_configurer,
* complains about invalid reads when the dock window already is
* destroyed
*/
if (GTK_IS_WIDGET (dock_window) &&
g_list_length (gimp_dock_container_get_docks (dock_container)) == 0)
if (GTK_IS_WIDGET (dock_window))
{
gimp_dialog_factory_remove_dialog (gimp_dialog_factory_get_singleton (),
GTK_WIDGET (dock_window));
gtk_widget_destroy (GTK_WIDGET (dock_window));
guint docks_len;
docks = gimp_dock_container_get_docks (dock_container);
docks_len = g_list_length (docks);
if (docks_len == 0)
{
gimp_dialog_factory_remove_dialog (gimp_dialog_factory_get_singleton (),
GTK_WIDGET (dock_window));
gtk_widget_destroy (GTK_WIDGET (dock_window));
}
g_list_free (docks);
}
}
}