From 1a9bea59f19f8842ef0cf536d47825c27a39705e Mon Sep 17 00:00:00 2001 From: Michael Natterer Date: Thu, 7 Aug 2025 16:23:35 +0200 Subject: [PATCH] app: GimpFilteredContainer: update sort_func when the src container's sort_func changes. --- app/core/gimpfilteredcontainer.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/app/core/gimpfilteredcontainer.c b/app/core/gimpfilteredcontainer.c index d16e3dc981..01f94dc2b9 100644 --- a/app/core/gimpfilteredcontainer.c +++ b/app/core/gimpfilteredcontainer.c @@ -60,6 +60,9 @@ static void gimp_filtered_container_real_src_thaw (GimpFilteredContainer * static gboolean gimp_filtered_container_object_matches (GimpFilteredContainer *filtered_container, GimpObject *object); +static void gimp_filtered_container_src_sort_func (GimpContainer *src, + GParamSpec *pspec, + GimpFilteredContainer *filtered_container); static void gimp_filtered_container_src_add (GimpContainer *src_container, GimpObject *obj, GimpFilteredContainer *filtered_container); @@ -148,6 +151,9 @@ gimp_filtered_container_dispose (GObject *object) if (filtered_container->src_container) { + g_signal_handlers_disconnect_by_func (filtered_container->src_container, + gimp_filtered_container_src_sort_func, + filtered_container); g_signal_handlers_disconnect_by_func (filtered_container->src_container, gimp_filtered_container_src_add, filtered_container); @@ -188,6 +194,9 @@ gimp_filtered_container_set_property (GObject *object, case PROP_SRC_CONTAINER: filtered_container->src_container = g_value_dup_object (value); + g_signal_connect (filtered_container->src_container, "notify::sort-func", + G_CALLBACK (gimp_filtered_container_src_sort_func), + filtered_container); g_signal_connect (filtered_container->src_container, "add", G_CALLBACK (gimp_filtered_container_src_add), filtered_container); @@ -332,6 +341,16 @@ gimp_filtered_container_object_matches (GimpFilteredContainer *filtered_containe filtered_container->filter_data)); } +static void +gimp_filtered_container_src_sort_func (GimpContainer *src, + GParamSpec *pspec, + GimpFilteredContainer *filtered_container) +{ + GCompareFunc sort_func = gimp_list_get_sort_func (GIMP_LIST (src)); + + gimp_list_set_sort_func (GIMP_LIST (filtered_container), sort_func); +} + static void gimp_filtered_container_src_add (GimpContainer *src_container, GimpObject *object,