Skip to content

Commit

Permalink
Fix insertion order of the arrow option widgets, and simplify the code.
Browse files Browse the repository at this point in the history
Fixes: #2012959
  • Loading branch information
cameronwhite committed Mar 28, 2023
1 parent 8271ce1 commit 9b19e8b
Showing 1 changed file with 20 additions and 16 deletions.
36 changes: 20 additions & 16 deletions Pinta.Tools/Editable/EditEngines/ArrowedEditEngine.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
// THE SOFTWARE.

using System;
using System.Collections.Generic;
using Cairo;
using Gtk;
using Pinta.Core;
Expand Down Expand Up @@ -122,28 +123,21 @@ private void ArrowEnabledToggled (bool arrow1)

private void UpdateArrowOptionToolbarItems ()
{
// Carefully insert after the dash pattern box, since the Antialiasing dropdown may have been added already.
var after_widget = dash_pattern_box.comboBox;

if (ArrowOneEnabled || ArrowTwoEnabled) {
if (extra_toolbar_items_added)
return;

toolbar.InsertChildAfter (ArrowSizeLabel, after_widget);
toolbar.InsertChildAfter (ArrowSize, after_widget);
toolbar.InsertChildAfter (ArrowAngleOffsetLabel, after_widget);
toolbar.InsertChildAfter (ArrowAngleOffset, after_widget);
toolbar.InsertChildAfter (ArrowLengthOffsetLabel, after_widget);
toolbar.InsertChildAfter (ArrowLengthOffset, after_widget);
// Carefully insert after our last toolbar widget, since the Antialiasing dropdown may have been added already.
Widget after_widget = ArrowTwoEnabledCheckBox;
foreach (var widget in GetArrowOptionToolbarItems ()) {
toolbar.InsertChildAfter (widget, after_widget);
after_widget = widget;
}

extra_toolbar_items_added = true;
} else if (extra_toolbar_items_added) {
toolbar.Remove (ArrowSizeLabel);
toolbar.Remove (ArrowSize);
toolbar.Remove (ArrowAngleOffsetLabel);
toolbar.Remove (ArrowAngleOffset);
toolbar.Remove (ArrowLengthOffsetLabel);
toolbar.Remove (ArrowLengthOffset);
foreach (var widget in GetArrowOptionToolbarItems ())
toolbar.Remove (widget);

extra_toolbar_items_added = false;
}
Expand Down Expand Up @@ -351,5 +345,15 @@ protected override void DrawExtras (ref RectangleD? dirty, Context g, ShapeEngin
return arrowLengthOffset;
}
}
}

private IEnumerable<Widget> GetArrowOptionToolbarItems ()
{
yield return ArrowSizeLabel;
yield return ArrowSize;
yield return ArrowAngleOffsetLabel;
yield return ArrowAngleOffset;
yield return ArrowLengthOffsetLabel;
yield return ArrowLengthOffset;
}
};
}

0 comments on commit 9b19e8b

Please sign in to comment.