Gimp/app/tools
Alx Sa a20d8fa561 tools: Fix crash in passthrough composited preview
Resolves #13087
We use gimp_layer_get_effective_mode () to retrieve
a simplified layer mode for optimization purposes
(e.g. if it's effectively NORMAL, we can do less processing).
GimpTransformGridTool used this function when the user
requests Composited Preview to only apply transforms to
individual layers in a group if absolutely necessary.
This means that sometimes, it returns NORMAL instead of
PASS_THROUGH depending on the number and types of
layers in the group.

Since 71aff497, when we remove a filter we also update the
effective mode of the group layer. However, this leads to an
infinite loop scenario where the effective mode change causes
the TransformGridTool to repeatedly remove and add a filter
until GIMP crashes.

This patch changes the gimp_transform_grid_tool_add_filter ()
check to always get the actual mode rather than the effective mode.
This prevents the effective mode change from causing an infinite loop,
but does mean that we now always apply transforms to all layers of the
group even if the composite preview would work fine.

(cherry picked from commit ede124ff85)
2025-09-17 16:47:15 +02:00
..
gimp-tool-options-manager.c app: Make the layer auto expand options shared between tools 2023-11-25 16:19:43 +00:00
gimp-tool-options-manager.h
gimp-tools.c app: rename GimpContainer's "children-type" property to "child-type" 2025-09-17 16:40:22 +02:00
gimp-tools.h app: add tool-group support to GimpToolEditor 2020-01-30 02:51:56 +02:00
gimpairbrushtool.c app: Add pattern to context props for tools supporting auto-expand 2023-11-25 16:19:43 +00:00
gimpairbrushtool.h
gimpalignoptions.c app, pdb: a lot of vectors -> path renaming 2025-09-17 16:40:20 +02:00
gimpalignoptions.h app: remove the offset feature in the Align/Distribute tool. 2022-11-09 00:08:16 +01:00
gimpaligntool.c app, pdb: a lot of vectors -> path renaming 2025-09-17 16:40:20 +02:00
gimpaligntool.h libgimp, app, pdb: Rename GimpVectors to GimpPath 2024-07-12 06:16:25 +00:00
gimpbrightnesscontrasttool.c app, libgimpwidgets: move gimp_prop_spin_scale_new() and… 2022-02-19 00:14:44 +01:00
gimpbrightnesscontrasttool.h
gimpbrushtool.c app: action names set in GimpToolControl don't need the group name appended. 2023-04-12 22:07:08 +02:00
gimpbrushtool.h
gimpbucketfilloptions.c app: make GimpContainerView behave like a normal widget 2025-09-17 16:40:23 +02:00
gimpbucketfilloptions.h app: make the "Automatic closure" a settings of its own. 2022-03-03 20:05:14 +01:00
gimpbucketfilltool.c app: add accessors for GimpDrawableFilter::temporary and use them 2025-08-09 18:11:14 +02:00
gimpbucketfilltool.h
gimpbycolorselecttool.c app, libgimp, pdb, plug-ins: getting rid of some GimpRGB usage. 2024-02-11 23:28:02 +01:00
gimpbycolorselecttool.h
gimpcageoptions.c app, libgimpwidgets: return visible widgets from all gimp_prop_foo_new() 2019-09-25 20:24:06 +02:00
gimpcageoptions.h
gimpcagetool.c app: add accessors for GimpDrawableFilter::temporary and use them 2025-08-09 18:11:14 +02:00
gimpcagetool.h
gimpcloneoptions-gui.c Issue #8102: crash when using the clone tool. 2022-04-21 19:13:01 +02:00
gimpcloneoptions-gui.h
gimpclonetool.c app: Make the layer auto expand options shared between tools 2023-11-25 16:19:43 +00:00
gimpclonetool.h
gimpcoloroptions.c app, libgimpwidgets: move gimp_prop_spin_scale_new() and… 2022-02-19 00:14:44 +01:00
gimpcoloroptions.h
gimpcolorpickeroptions.c app: GimpFilterTool displays a "Sample merged" checkbox. 2020-09-26 12:40:54 +02:00
gimpcolorpickeroptions.h
gimpcolorpickertool.c app, libgimpwidgets, plug-ins: GimpColorArea is now space-invaded. 2024-02-11 23:28:03 +01:00
gimpcolorpickertool.h
gimpcolortool.c app, libgimp, pdb, plug-ins: gimp_context_[gs]et_foreground() now using GeglColor. 2024-02-11 23:28:02 +01:00
gimpcolortool.h app: some more GimpRGB to GeglColor port. 2024-02-11 23:28:02 +01:00
gimpconvolvetool.c app: Add pattern to context props for tools supporting auto-expand 2023-11-25 16:19:43 +00:00
gimpconvolvetool.h
gimpcropoptions.c gui: Update text of 'Crop tool' option to 'Selected layers only' 2021-02-25 23:02:04 +06:00
gimpcropoptions.h app: make deletion of cropped pixels in crop tool optional 2020-04-01 18:14:20 +00:00
gimpcroptool.c app: big porting of weak pointers to g_set,clear_weak_pointer() 2023-05-22 18:16:09 +02:00
gimpcroptool.h app: Crop tool now multi-layer aware. 2020-05-17 18:57:32 +02:00
gimpcurvestool.c tools: Don't crash when reading invalid Curves preset 2025-04-07 18:57:31 +00:00
gimpcurvestool.h
gimpdodgeburntool.c app, libgimpwidgets: move gimp_prop_spin_scale_new() and… 2022-02-19 00:14:44 +01:00
gimpdodgeburntool.h
gimpdrawtool.c Adding on canvas text for equidistance snapping visualization 2023-07-25 15:31:16 +02:00
gimpdrawtool.h Adding on canvas text for equidistance snapping visualization 2023-07-25 15:31:16 +02:00
gimpeditselectiontool.c app, pdb: a lot of vectors -> path renaming 2025-09-17 16:40:20 +02:00
gimpeditselectiontool.h app: show the tool options in various other error cases. 2022-07-27 10:45:40 +02:00
gimpellipseselecttool.c
gimpellipseselecttool.h
gimperasertool.c app, libgimpwidgets: return visible widgets from all gimp_prop_foo_new() 2019-09-25 20:24:06 +02:00
gimperasertool.h
gimpfilteroptions.c app: the "color-options-expanded" filter option is now bogus. 2025-01-10 23:43:31 +01:00
gimpfilteroptions.h app: the "color-options-expanded" filter option is now bogus. 2025-01-10 23:43:31 +01:00
gimpfiltertool-settings.c
gimpfiltertool-settings.h
gimpfiltertool-widgets.c app/tools: Use NDE filter's drawable for on-canvas widgets 2025-09-17 16:40:16 +02:00
gimpfiltertool-widgets.h
gimpfiltertool.c tools: Don't alter merge filter status unexpectedly 2025-09-17 16:40:17 +02:00
gimpfiltertool.h app, libgimpconfig: GimpFilterTool color_picked() now uses GeglColor. 2024-02-11 23:28:04 +01:00
gimpflipoptions.c app, libgimpwidgets: return visible widgets from all gimp_prop_foo_new() 2019-09-25 20:24:06 +02:00
gimpflipoptions.h
gimpfliptool.c app, devel-docs, libgimp, pdb: remove item link ref in flip code. 2021-12-23 13:45:20 +01:00
gimpfliptool.h
gimpforegroundselectoptions.c app: Specify Levels meaning for translation 2024-07-14 01:31:24 +00:00
gimpforegroundselectoptions.h app: mask colors are GeglColor. 2024-02-11 23:28:03 +01:00
gimpforegroundselecttool.c tools: Don't run Foreground Selection without strokes 2025-09-17 16:40:15 +02:00
gimpforegroundselecttool.h
gimpforegroundselecttoolundo.c app: big porting of weak pointers to g_set,clear_weak_pointer() 2023-05-22 18:16:09 +02:00
gimpforegroundselecttoolundo.h
gimpfreeselecttool.c app: improve empty-selection check in GimpSelectionTool 2020-02-03 12:40:54 +02:00
gimpfreeselecttool.h
gimpfuzzyselecttool.c app: rework and fix the logic for copy-pasting multiple drawables. 2022-11-12 18:28:58 +01:00
gimpfuzzyselecttool.h
gimpgegltool.c core: Initial non-destructive editing implementation 2024-01-23 15:39:09 +00:00
gimpgegltool.h app: clean up forgotten conflict removals from the reverts below 2023-05-25 02:31:28 +02:00
gimpgenerictransformtool.c Make transform matrix selectable 2023-06-21 21:02:23 +00:00
gimpgenerictransformtool.h Make transform matrix selectable 2023-06-21 21:02:23 +00:00
gimpgradientoptions.c app, libgimpwidgets: move gimp_prop_spin_scale_new() and… 2022-02-19 00:14:44 +01:00
gimpgradientoptions.h
gimpgradienttool-editor.c Issue #8900 and #9923: reimplementing GimpUnit as a proper class. 2024-08-02 10:46:38 +02:00
gimpgradienttool-editor.h
gimpgradienttool.c app: add accessors for GimpDrawableFilter::temporary and use them 2025-08-09 18:11:14 +02:00
gimpgradienttool.h
gimpguidetool.c gimpguidetool: fix somewhat pointless warning about uninitalized variable 2023-05-20 18:47:14 +02:00
gimpguidetool.h
gimphandletransformoptions.c app, libgimpwidgets: move GimpSpinScale to libgimpwidgets. 2022-02-17 23:13:42 +01:00
gimphandletransformoptions.h
gimphandletransformtool.c
gimphandletransformtool.h
gimphealtool.c app: Add pattern to context props for tools supporting auto-expand 2023-11-25 16:19:43 +00:00
gimphealtool.h
gimphistogramoptions.c libgimbase: merge gimpparam.h into gimpparamspecs.h 2019-07-31 10:16:21 +02:00
gimphistogramoptions.h
gimpinkoptions-gui.c app: mark missing tool option as translatable 2024-01-18 13:20:21 +00:00
gimpinkoptions-gui.h
gimpinktool.c app: Add pattern to context props for tools supporting auto-expand 2023-11-25 16:19:43 +00:00
gimpinktool.h
gimpiscissorsoptions.c app, libgimpwidgets: return visible widgets from all gimp_prop_foo_new() 2019-09-25 20:24:06 +02:00
gimpiscissorsoptions.h
gimpiscissorstool.c tools: Close iscissors curve on pressing Enter 2025-05-11 16:23:12 +00:00
gimpiscissorstool.h
gimplevelstool.c Issue #3015: Space invasion: Using Levels Pick white point for all… 2024-10-29 00:27:22 +01:00
gimplevelstool.h
gimpmagnifyoptions.c app, libgimpwidgets: return visible widgets from all gimp_prop_foo_new() 2019-09-25 20:24:06 +02:00
gimpmagnifyoptions.h
gimpmagnifytool.c
gimpmagnifytool.h
gimpmeasureoptions.c libgimbase: merge gimpparam.h into gimpparamspecs.h 2019-07-31 10:16:21 +02:00
gimpmeasureoptions.h
gimpmeasuretool.c Issue #434: remove broken plural support for GimpUnit. 2024-08-06 11:39:57 +02:00
gimpmeasuretool.h
gimpmoveoptions.c tools: Connect MoveOptions and TransformOptions to icon size 2025-04-04 10:46:23 +00:00
gimpmoveoptions.h
gimpmovetool.c app, pdb: a lot of vectors -> path renaming 2025-09-17 16:40:20 +02:00
gimpmovetool.h app, pdb: a lot of vectors -> path renaming 2025-09-17 16:40:20 +02:00
gimpmybrushoptions-gui.c tools: Standardize MyPaint Brush tool layout 2025-04-27 23:18:28 +00:00
gimpmybrushoptions-gui.h
gimpmybrushtool.c app: Add pattern to context props for tools supporting auto-expand 2023-11-25 16:19:43 +00:00
gimpmybrushtool.h
gimpnpointdeformationoptions.c app, libgimpwidgets: move gimp_prop_spin_scale_new() and… 2022-02-19 00:14:44 +01:00
gimpnpointdeformationoptions.h
gimpnpointdeformationtool.c app: GimpTool multi-drawable aware. 2020-05-26 14:15:17 +02:00
gimpnpointdeformationtool.h
gimpoffsettool.c pdb, operations, tool: Replace GimpContext with GeglColor... 2024-11-29 00:29:36 -05:00
gimpoffsettool.h pdb, operations, tool: Replace GimpContext with GeglColor... 2024-11-29 00:29:36 -05:00
gimpoperationtool.c app: auxiliary input pads should have nicer names as registered by the operation. 2024-08-13 22:32:44 +00:00
gimpoperationtool.h core: Initial non-destructive editing implementation 2024-01-23 15:39:09 +00:00
gimppaintbrushtool.c app: Add pattern to context props for tools supporting auto-expand 2023-11-25 16:19:43 +00:00
gimppaintbrushtool.h
gimppaintoptions-gui.c tools: Hide Force slider for Pencil Tool 2025-04-11 02:58:42 +00:00
gimppaintoptions-gui.h
gimppaintselectoptions.c app/tools: Add shortcuts for Paint Select modes 2024-10-05 14:54:20 +00:00
gimppaintselectoptions.h Paint Select tool: add a temporary option to show painted scribbles 2020-12-04 18:56:28 +01:00
gimppaintselecttool.c app/tools: Add shortcuts for Paint Select modes 2024-10-05 14:54:20 +00:00
gimppaintselecttool.h app/tools: Add shortcuts for Paint Select modes 2024-10-05 14:54:20 +00:00
gimppainttool-paint.c app: Blink lock when layer expansion is prevented by lock 2023-11-25 16:19:43 +00:00
gimppainttool-paint.h
gimppainttool.c app/tools: Allow locked layers to be used as sources 2024-06-20 13:13:47 +00:00
gimppainttool.h app: display the brush outline (or fallback or circle) when resizing. 2022-08-17 14:20:18 +02:00
gimppenciltool.c app: Add pattern to context props for tools supporting auto-expand 2023-11-25 16:19:43 +00:00
gimppenciltool.h
gimpperspectiveclonetool.c app: action names set in GimpToolControl don't need the group name appended. 2023-04-12 22:07:08 +02:00
gimpperspectiveclonetool.h
gimpperspectivetool.c
gimpperspectivetool.h
gimppolygonselecttool.c Issue #4285 - [Free Select Tool] functionality bug with Ctrl/Shift combination 2020-02-03 12:40:54 +02:00
gimppolygonselecttool.h
gimprectangleoptions.c Issue #8900 and #9923: reimplementing GimpUnit as a proper class. 2024-08-02 10:46:38 +02:00
gimprectangleoptions.h Issue #8900 and #9923: reimplementing GimpUnit as a proper class. 2024-08-02 10:46:38 +02:00
gimprectangleselectoptions.c app, libgimpwidgets: move gimp_prop_spin_scale_new() and… 2022-02-19 00:14:44 +01:00
gimprectangleselectoptions.h
gimprectangleselecttool.c app: in Rectangle/Ellipse tools, update selection when clicking inside existing one 2019-09-19 17:39:22 +03:00
gimprectangleselecttool.h
gimpregionselectoptions.c app, libgimpwidgets: move gimp_prop_spin_scale_new() and… 2022-02-19 00:14:44 +01:00
gimpregionselectoptions.h
gimpregionselecttool.c app: mask colors are GeglColor. 2024-02-11 23:28:03 +01:00
gimpregionselecttool.h
gimprotatetool.c Issue #8900 and #9923: reimplementing GimpUnit as a proper class. 2024-08-02 10:46:38 +02:00
gimprotatetool.h app: add a pivot selector to the Rotate tool 2020-01-06 21:49:54 +02:00
gimpsamplepointtool.c
gimpsamplepointtool.h
gimpscaletool.c app: in GimpTransformGridTool, compress successive undo steps 2020-01-06 21:35:52 +02:00
gimpscaletool.h
gimpseamlesscloneoptions.c app, libgimpwidgets: move gimp_prop_spin_scale_new() and… 2022-02-19 00:14:44 +01:00
gimpseamlesscloneoptions.h
gimpseamlessclonetool.c tools: Update Seamless Clone paste check 2025-09-17 16:40:23 +02:00
gimpseamlessclonetool.h
gimpselectionoptions.c tools, libgimpwidgets: Connect SelectionOptions to icon size 2024-08-15 19:07:14 +00:00
gimpselectionoptions.h
gimpselectiontool.c app: big porting of weak pointers to g_set,clear_weak_pointer() 2023-05-22 18:16:09 +02:00
gimpselectiontool.h app: improve empty-selection check in GimpSelectionTool 2020-02-03 12:40:54 +02:00
gimpsheartool.c app, libgimpwidgets: move GimpSpinScale to libgimpwidgets. 2022-02-17 23:13:42 +01:00
gimpsheartool.h
gimpsmudgetool.c app: Add pattern to context props for tools supporting auto-expand 2023-11-25 16:19:43 +00:00
gimpsmudgetool.h
gimpsourcetool.c app: get rid of unused variable warning. 2023-04-20 15:38:17 +02:00
gimpsourcetool.h
gimptextoptions.c app, libgimp*: more g_set_str() and some other stuff in the same 2025-09-17 16:40:21 +02:00
gimptextoptions.h Issue #8900 and #9923: reimplementing GimpUnit as a proper class. 2024-08-02 10:46:38 +02:00
gimptexttool-editor.c app: use GeglColor in GimpTextBuffer and GimpTextTag. 2024-02-11 23:28:04 +01:00
gimptexttool-editor.h
gimptexttool.c app, pdb: a lot of vectors -> path renaming 2025-09-17 16:40:20 +02:00
gimptexttool.h app, pdb: a lot of vectors -> path renaming 2025-09-17 16:40:20 +02:00
gimpthresholdtool.c app: GimpTool multi-drawable aware. 2020-05-26 14:15:17 +02:00
gimpthresholdtool.h
gimptilehandleriscissors.c libgimbase: merge gimpparam.h into gimpparamspecs.h 2019-07-31 10:16:21 +02:00
gimptilehandleriscissors.h
gimptool-progress.c
gimptool-progress.h
gimptool.c app: add some doc comment to internal API. 2022-02-02 22:42:03 +01:00
gimptool.h app: GimpTool multi-drawable aware. 2020-05-26 14:15:17 +02:00
gimptoolcontrol.c app: new double action "tools-mypaint-brush-pixel-size-set", used as… 2022-08-17 14:20:18 +02:00
gimptoolcontrol.h app: new double action "tools-mypaint-brush-pixel-size-set", used as… 2022-08-17 14:20:18 +02:00
gimptooloptions-gui.c
gimptooloptions-gui.h
gimptools-utils.c libgimp, app, pdb: Rename GimpVectors to GimpPath 2024-07-12 06:16:25 +00:00
gimptools-utils.h Issue #7795: fix CRITICAL when tool options dockable is absent. 2022-07-27 10:13:40 +02:00
gimptransform3doptions.c app: set the default 3D Transform tool mode to rotation 2020-02-05 09:28:46 +02:00
gimptransform3doptions.h app: add unified interaction mode to the 3D Transform tool 2020-01-10 23:21:36 +02:00
gimptransform3dtool.c Issue #8900 and #9923: reimplementing GimpUnit as a proper class. 2024-08-02 10:46:38 +02:00
gimptransform3dtool.h app, icons: add 3D Transform tool 2020-01-06 21:52:54 +02:00
gimptransformgridoptions.c app, libgimpwidgets: move gimp_prop_spin_scale_new() and… 2022-02-19 00:14:44 +01:00
gimptransformgridoptions.h app: more removal of item link related code. 2021-12-23 13:45:20 +01:00
gimptransformgridtool.c tools: Fix crash in passthrough composited preview 2025-09-17 16:47:15 +02:00
gimptransformgridtool.h app: fix preview for multi-layer transform. 2022-10-12 17:52:04 +02:00
gimptransformgridtoolundo.c app: big porting of weak pointers to g_set,clear_weak_pointer() 2023-05-22 18:16:09 +02:00
gimptransformgridtoolundo.h
gimptransformoptions.c tools: Connect MoveOptions and TransformOptions to icon size 2025-04-04 10:46:23 +00:00
gimptransformoptions.h
gimptransformtool.c tools: Make transform boundary multi-select aware 2025-09-17 16:40:22 +02:00
gimptransformtool.h app: GimpTransformTool multi-layer aware. 2020-05-28 14:28:01 +02:00
gimpunifiedtransformtool.c app: in Unified Transform tool, avoid moving pivot when locked 2020-04-27 16:51:21 +03:00
gimpunifiedtransformtool.h
gimpvectoroptions.c app: more vectors -> path, mostly in GimpToolPath 2025-09-17 16:40:20 +02:00
gimpvectoroptions.h app: more vectors -> path, mostly in GimpToolPath 2025-09-17 16:40:20 +02:00
gimpvectortool.c app: more vectors -> path, mostly in GimpToolPath 2025-09-17 16:40:20 +02:00
gimpvectortool.h app: more vectors -> path, mostly in GimpToolPath 2025-09-17 16:40:20 +02:00
gimpwarpoptions.c app: big porting of weak pointers to g_set,clear_weak_pointer() 2023-05-22 18:16:09 +02:00
gimpwarpoptions.h
gimpwarptool.c app: add accessors for GimpDrawableFilter::temporary and use them 2025-08-09 18:11:14 +02:00
gimpwarptool.h app: respect brush-outline preferences in the Warp tool 2020-02-05 21:36:59 +02:00
meson.build meson: fix warnings of deprecated features. 2022-08-31 01:29:37 +02:00
tool_manager.c app: fix #11612 CRITICAL no emission of signal "tool-changed"... 2024-08-16 11:05:53 +00:00
tool_manager.h
tools-enums.c app, libgimp*: commit the newly generated *enums.c files. 2022-08-01 20:00:01 +02:00
tools-enums.h app, pdb: a lot of vectors -> path renaming 2025-09-17 16:40:20 +02:00
tools-types.h