From d0bbb6d059d8a63af6be7e41b17442a78279f16e Mon Sep 17 00:00:00 2001 From: nathbrow Date: Thu, 17 Jul 2025 13:37:32 -0700 Subject: [PATCH] Only apply the first blur and brightness filters (cherry picked from commit 73ddbc8ac919b2400d446f0cf36191c9ecd55846) --- .../Drawing/DrawableContainer.cs | 24 ++++++++++++++++++- .../Drawing/DrawableContainerList.cs | 3 +++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/Greenshot.Editor/Drawing/DrawableContainer.cs b/src/Greenshot.Editor/Drawing/DrawableContainer.cs index 08371753b..04d79af04 100644 --- a/src/Greenshot.Editor/Drawing/DrawableContainer.cs +++ b/src/Greenshot.Editor/Drawing/DrawableContainer.cs @@ -57,6 +57,9 @@ namespace Greenshot.Editor.Drawing private const int M11 = 0; private const int M22 = 3; + public static bool IsBlurFilterApplied = false; + public static bool IsBrightnessFilterApplied = false; + [OnDeserialized] private void OnDeserializedInit(StreamingContext context) { @@ -416,7 +419,26 @@ namespace Greenshot.Editor.Drawing { if (filter.Invert) { - filter.Apply(graphics, bmp, Bounds, renderMode, areasToExcludeFromFilters); + if (filter is BlurFilter) + { + if (!IsBlurFilterApplied) + { + filter.Apply(graphics, bmp, Bounds, renderMode, areasToExcludeFromFilters); + IsBlurFilterApplied = true; + } + } + else if (filter is BrightnessFilter) + { + if (!IsBrightnessFilterApplied) + { + filter.Apply(graphics, bmp, Bounds, renderMode, areasToExcludeFromFilters); + IsBrightnessFilterApplied = true; + } + } + else + { + filter.Apply(graphics, bmp, Bounds, renderMode, areasToExcludeFromFilters); + } } else { diff --git a/src/Greenshot.Editor/Drawing/DrawableContainerList.cs b/src/Greenshot.Editor/Drawing/DrawableContainerList.cs index c4cbbc17b..a9050f80e 100644 --- a/src/Greenshot.Editor/Drawing/DrawableContainerList.cs +++ b/src/Greenshot.Editor/Drawing/DrawableContainerList.cs @@ -328,6 +328,9 @@ namespace Greenshot.Editor.Drawing return; } + DrawableContainer.IsBlurFilterApplied = false; + DrawableContainer.IsBrightnessFilterApplied = false; + foreach (var drawableContainer in this) { var dc = (DrawableContainer) drawableContainer;