app: set the container last in all GimpContainerView constructors, to

avoid traversing the just-filled view when "context" or "view-size"
changes.
This commit is contained in:
Michael Natterer 2025-08-11 14:38:02 +02:00
parent c114e96096
commit 92e68453df
5 changed files with 31 additions and 56 deletions

View file

@ -238,26 +238,21 @@ gimp_container_combo_box_new (GimpContainer *container,
gint view_size,
gint view_border_width)
{
GtkWidget *combo_box;
GimpContainerView *view;
g_return_val_if_fail (container == NULL || GIMP_IS_CONTAINER (container),
NULL);
g_return_val_if_fail (context == NULL || GIMP_IS_CONTEXT (context), NULL);
g_return_val_if_fail (view_size > 0 &&
view_size <= GIMP_VIEWABLE_MAX_PREVIEW_SIZE, NULL);
g_return_val_if_fail (view_border_width >= 0 &&
view_border_width <= GIMP_VIEW_MAX_BORDER_WIDTH,
NULL);
combo_box = g_object_new (GIMP_TYPE_CONTAINER_COMBO_BOX, NULL);
view = GIMP_CONTAINER_VIEW (combo_box);
gimp_container_view_set_view_size (view, view_size, view_border_width);
if (container)
gimp_container_view_set_container (view, container);
if (context)
gimp_container_view_set_context (view, context);
return combo_box;
return g_object_new (GIMP_TYPE_CONTAINER_COMBO_BOX,
"view-size", view_size,
"view-border-width", view_border_width,
"context", context,
"container", container,
NULL);
}

View file

@ -181,26 +181,16 @@ gimp_container_entry_new (GimpContainer *container,
gint view_size,
gint view_border_width)
{
GtkWidget *entry;
GimpContainerView *view;
g_return_val_if_fail (container == NULL || GIMP_IS_CONTAINER (container),
NULL);
g_return_val_if_fail (context == NULL || GIMP_IS_CONTEXT (context), NULL);
entry = g_object_new (GIMP_TYPE_CONTAINER_ENTRY, NULL);
view = GIMP_CONTAINER_VIEW (entry);
gimp_container_view_set_view_size (view, view_size, view_border_width);
if (container)
gimp_container_view_set_container (view, container);
if (context)
gimp_container_view_set_context (view, context);
return entry;
return g_object_new (GIMP_TYPE_CONTAINER_ENTRY,
"view-size", view_size,
"view-border-width", view_border_width,
"context", context,
"container", container,
NULL);
}

View file

@ -297,12 +297,12 @@ gimp_container_icon_view_new (GimpContainer *container,
gimp_container_view_set_view_size (view, view_size, 0 /* ignore border */);
if (container)
gimp_container_view_set_container (view, container);
if (context)
gimp_container_view_set_context (view, context);
if (container)
gimp_container_view_set_container (view, container);
return GTK_WIDGET (icon_view);
}
@ -375,9 +375,9 @@ gimp_container_icon_view_set_context (GimpContainerView *view,
gimp_container_tree_store_set_context (GIMP_CONTAINER_TREE_STORE (icon_view->model),
context);
if (context != NULL)
if (context)
{
if (icon_view->priv->color_scheme_handler_id == 0)
if (! icon_view->priv->color_scheme_handler_id)
icon_view->priv->color_scheme_handler_id =
g_signal_connect_object (context->gimp->config,
"notify::theme-color-scheme",

View file

@ -231,9 +231,6 @@ gimp_container_list_view_new (GimpContainer *container,
gint view_size,
gint view_border_width)
{
GimpContainerListView *list_view;
GimpContainerView *view;
g_return_val_if_fail (container == NULL || GIMP_IS_CONTAINER (container),
NULL);
g_return_val_if_fail (context == NULL || GIMP_IS_CONTEXT (context), NULL);
@ -243,19 +240,12 @@ gimp_container_list_view_new (GimpContainer *container,
view_border_width <= GIMP_VIEW_MAX_BORDER_WIDTH,
NULL);
list_view = g_object_new (GIMP_TYPE_CONTAINER_LIST_VIEW, NULL);
view = GIMP_CONTAINER_VIEW (list_view);
gimp_container_view_set_view_size (view, view_size, view_border_width);
if (container)
gimp_container_view_set_container (view, container);
if (context)
gimp_container_view_set_context (view, context);
return GTK_WIDGET (list_view);
return g_object_new (GIMP_TYPE_CONTAINER_LIST_VIEW,
"view-size", view_size,
"view-border-width", view_border_width,
"context", context,
"container", container,
NULL);
}
void

View file

@ -457,12 +457,12 @@ gimp_container_tree_view_new (GimpContainer *container,
gimp_container_view_set_view_size (view, view_size, view_border_width);
if (container)
gimp_container_view_set_container (view, container);
if (context)
gimp_container_view_set_context (view, context);
if (container)
gimp_container_view_set_container (view, container);
return GTK_WIDGET (tree_view);
}