mirror of https://github.com/GNOME/gimp.git
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:
parent
00c2d15a3a
commit
0f19471e22
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -735,17 +735,24 @@ gimp_ui_not_toolbox_window (GObject *object)
|
|||
static gboolean
|
||||
gimp_ui_multicolumn_not_toolbox_window (GObject *object)
|
||||
{
|
||||
gboolean not_toolbox_window;
|
||||
GimpDockWindow *dock_window;
|
||||
GimpDockContainer *dock_container;
|
||||
GList *docks;
|
||||
|
||||
if (! GIMP_IS_DOCK_WINDOW (object))
|
||||
return FALSE;
|
||||
|
||||
dock_window = GIMP_DOCK_WINDOW (object);
|
||||
dock_container = GIMP_DOCK_CONTAINER (object);
|
||||
docks = gimp_dock_container_get_docks (dock_container);
|
||||
|
||||
return (! gimp_dock_window_has_toolbox (dock_window) &&
|
||||
g_list_length (gimp_dock_container_get_docks (dock_container)) > 1);
|
||||
not_toolbox_window = (! gimp_dock_window_has_toolbox (dock_window) &&
|
||||
g_list_length (docks) > 1);
|
||||
|
||||
g_list_free (docks);
|
||||
|
||||
return not_toolbox_window;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
|
|
|
@ -68,6 +68,13 @@ gimp_dock_container_iface_base_init (GimpDockContainerInterface *container_iface
|
|||
container_iface->get_docks = NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* gimp_dock_container_get_docks:
|
||||
* @container: A #GimpDockContainer
|
||||
*
|
||||
* Returns: A list of #GimpDock:s in the dock container. Free with
|
||||
* g_list_free() when done.
|
||||
**/
|
||||
GList *
|
||||
gimp_dock_container_get_docks (GimpDockContainer *container)
|
||||
{
|
||||
|
|
|
@ -681,13 +681,6 @@ gimp_dock_window_delete_event (GtkWidget *widget,
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
/**
|
||||
* gimp_dock_window_get_docks:
|
||||
*
|
||||
* Get a list of docks in the dock window.
|
||||
*
|
||||
* Returns:
|
||||
**/
|
||||
static GList *
|
||||
gimp_dock_window_get_docks (GimpDockContainer *dock_container)
|
||||
{
|
||||
|
@ -697,7 +690,7 @@ gimp_dock_window_get_docks (GimpDockContainer *dock_container)
|
|||
|
||||
dock_window = GIMP_DOCK_WINDOW (dock_container);
|
||||
|
||||
return gimp_dock_columns_get_docks (dock_window->p->dock_columns);
|
||||
return g_list_copy (gimp_dock_columns_get_docks (dock_window->p->dock_columns));
|
||||
}
|
||||
|
||||
static GimpUIManager *
|
||||
|
@ -765,6 +758,8 @@ gimp_dock_window_should_add_to_recent (GimpDockWindow *dock_window)
|
|||
}
|
||||
}
|
||||
|
||||
g_list_free (docks);
|
||||
|
||||
return should_add;
|
||||
}
|
||||
|
||||
|
@ -823,9 +818,12 @@ gimp_dock_window_get_description (GimpDockWindow *dock_window,
|
|||
gboolean complete)
|
||||
{
|
||||
GString *complete_desc = g_string_new (NULL);
|
||||
GList *docks = NULL;
|
||||
GList *iter = NULL;
|
||||
|
||||
for (iter = gimp_dock_container_get_docks (GIMP_DOCK_CONTAINER (dock_window));
|
||||
docks = gimp_dock_container_get_docks (GIMP_DOCK_CONTAINER (dock_window));
|
||||
|
||||
for (iter = docks;
|
||||
iter;
|
||||
iter = g_list_next (iter))
|
||||
{
|
||||
|
@ -837,6 +835,8 @@ gimp_dock_window_get_description (GimpDockWindow *dock_window,
|
|||
g_string_append (complete_desc, GIMP_DOCK_COLUMN_SEPARATOR);
|
||||
}
|
||||
|
||||
g_list_free (docks);
|
||||
|
||||
return g_string_free (complete_desc, FALSE /*free_segment*/);
|
||||
}
|
||||
|
||||
|
|
|
@ -750,8 +750,11 @@ gimp_session_info_get_info (GimpSessionInfo *info)
|
|||
{
|
||||
GimpDockContainer *dock_container = GIMP_DOCK_CONTAINER (info->p->widget);
|
||||
GList *iter = NULL;
|
||||
GList *docks;
|
||||
|
||||
for (iter = gimp_dock_container_get_docks (dock_container);
|
||||
docks = gimp_dock_container_get_docks (dock_container);
|
||||
|
||||
for (iter = docks;
|
||||
iter;
|
||||
iter = g_list_next (iter))
|
||||
{
|
||||
|
@ -761,6 +764,8 @@ gimp_session_info_get_info (GimpSessionInfo *info)
|
|||
g_list_append (info->p->docks,
|
||||
gimp_session_info_dock_from_widget (dock));
|
||||
}
|
||||
|
||||
g_list_free (docks);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue