From ca5438c6daeb4ce33f69079d1e5a997f5b2fa41b Mon Sep 17 00:00:00 2001 From: Alx Sa Date: Thu, 26 Mar 2026 15:26:10 +0000 Subject: [PATCH] widgets: Prevent deleting temporary filters Resolves #12791 (again) After cleaning up and separating the filter pop-up code from GimpItemTreeView to GimpDrawableTreeView-Filters, we accidentally lost the checks that prevent deleting filters that have not yet been applied (thus causing a crash). This patch restores the checks for the filter to not be temporary before you can delete it. --- app/widgets/gimpdrawabletreeview-filters.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/app/widgets/gimpdrawabletreeview-filters.c b/app/widgets/gimpdrawabletreeview-filters.c index 8fc185c150..b2e359cc3c 100644 --- a/app/widgets/gimpdrawabletreeview-filters.c +++ b/app/widgets/gimpdrawabletreeview-filters.c @@ -433,6 +433,7 @@ gimp_drawable_filters_editor_set_sensitive (GimpDrawableTreeView *view) GimpContainer *filters; gboolean is_group = FALSE; gboolean is_editable = FALSE; + gboolean is_temporary; gboolean has_visible_filters; gint index; @@ -440,6 +441,8 @@ gimp_drawable_filters_editor_set_sensitive (GimpDrawableTreeView *view) index = gimp_container_get_child_index (filters, GIMP_OBJECT (editor->filter)); + is_temporary = (gimp_drawable_filter_get_temporary (editor->filter) || + ! gimp_drawable_filter_get_mask (editor->filter)); /* do not allow merging down effects on group layers */ if (gimp_viewable_get_children (GIMP_VIEWABLE (editor->drawable))) @@ -456,7 +459,7 @@ gimp_drawable_filters_editor_set_sensitive (GimpDrawableTreeView *view) gtk_widget_set_sensitive (editor->visible_button, TRUE); gtk_widget_set_sensitive (editor->edit_button, - is_editable); + is_editable && ! is_temporary); gtk_widget_set_sensitive (editor->raise_button, index > first_editable); gtk_widget_set_sensitive (editor->lower_button, @@ -464,10 +467,11 @@ gimp_drawable_filters_editor_set_sensitive (GimpDrawableTreeView *view) gtk_widget_set_sensitive (editor->merge_button, ! is_group && has_visible_filters && + ! is_temporary && (! GIMP_IS_RASTERIZABLE (editor->drawable) || gimp_rasterizable_is_rasterized (GIMP_RASTERIZABLE (editor->drawable)))); gtk_widget_set_sensitive (editor->remove_button, - is_editable); + is_editable && ! is_temporary); if (is_group || (GIMP_IS_RASTERIZABLE (editor->drawable) &&