From f71499c9c62393a1758a6f9497f23f456dd3b4e5 Mon Sep 17 00:00:00 2001 From: Ishmaeel Date: Sat, 2 Oct 2021 21:56:46 +0300 Subject: [PATCH] Fix Ellipse and Highlight duplication bug (#322). (#331) Fixes #322. Ellipse only created default adorners in constructor, never after deserialization. Having zero adorners triggered a Linq exception down the code path. Fixed by duplicating the deserialization logic from RectangleContainer. Highlight also failed to create its default adorners. Fixed by just adding a correct call to CreateDefaultAdorners call in the existing Init method. --- src/Greenshot.Editor/Drawing/EllipseContainer.cs | 12 ++++++++++++ src/Greenshot.Editor/Drawing/HighlightContainer.cs | 1 + 2 files changed, 13 insertions(+) diff --git a/src/Greenshot.Editor/Drawing/EllipseContainer.cs b/src/Greenshot.Editor/Drawing/EllipseContainer.cs index d2c854cb1..f7799ac71 100644 --- a/src/Greenshot.Editor/Drawing/EllipseContainer.cs +++ b/src/Greenshot.Editor/Drawing/EllipseContainer.cs @@ -22,6 +22,7 @@ using System; using System.Drawing; using System.Drawing.Drawing2D; +using System.Runtime.Serialization; using Greenshot.Base.Interfaces.Drawing; using Greenshot.Editor.Drawing.Fields; using Greenshot.Editor.Helpers; @@ -35,6 +36,17 @@ namespace Greenshot.Editor.Drawing public class EllipseContainer : DrawableContainer { public EllipseContainer(Surface parent) : base(parent) + { + Init(); + } + + protected override void OnDeserialized(StreamingContext streamingContext) + { + base.OnDeserialized(streamingContext); + Init(); + } + + private void Init() { CreateDefaultAdorners(); } diff --git a/src/Greenshot.Editor/Drawing/HighlightContainer.cs b/src/Greenshot.Editor/Drawing/HighlightContainer.cs index 3e104b85f..417725322 100644 --- a/src/Greenshot.Editor/Drawing/HighlightContainer.cs +++ b/src/Greenshot.Editor/Drawing/HighlightContainer.cs @@ -56,6 +56,7 @@ namespace Greenshot.Editor.Drawing { FieldChanged += HighlightContainer_OnFieldChanged; ConfigurePreparedFilters(); + CreateDefaultAdorners(); } protected void HighlightContainer_OnFieldChanged(object sender, FieldChangedEventArgs e)