Skip to content

Commit e93336b

Browse files
Fix a few rendering issues.
1 parent 031811f commit e93336b

File tree

2 files changed

+56
-42
lines changed

2 files changed

+56
-42
lines changed

src/System.Windows.Forms/System/Windows/Forms/Controls/ToolStrips/ToolStripRenderer.cs

Lines changed: 47 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@ public abstract class ToolStripRenderer
5353

5454
// Used in building up the half pyramid of rectangles that are drawn in a
5555
// status strip sizing grip.
56-
private static readonly Rectangle[] s_baseSizeGripRectangles = [
56+
private static readonly Rectangle[] s_baseSizeGripRectangles =
57+
[
5758
new(8, 0, 2, 2),
5859
new(8, 4, 2, 2),
5960
new(8, 8, 2, 2),
@@ -66,10 +67,8 @@ protected ToolStripRenderer()
6667
{
6768
}
6869

69-
internal ToolStripRenderer(bool isAutoGenerated)
70-
{
70+
internal ToolStripRenderer(bool isAutoGenerated) =>
7171
_isAutoGenerated = isAutoGenerated;
72-
}
7372

7473
// Used in building disabled images.
7574
private static ColorMatrix DisabledImageColorMatrix
@@ -91,20 +90,20 @@ private static ColorMatrix DisabledImageColorMatrix
9190
float[][] greyscale =
9291
[
9392
[0.2125f, 0.2125f, 0.2125f, 0, 0],
94-
[0.2577f, 0.2577f, 0.2577f, 0, 0],
95-
[0.0361f, 0.0361f, 0.0361f, 0, 0],
96-
[0, 0, 0, 1, 0],
97-
[-0.1f, -0.1f, -0.1f, 0, 1],
98-
];
93+
[0.2577f, 0.2577f, 0.2577f, 0, 0],
94+
[0.0361f, 0.0361f, 0.0361f, 0, 0],
95+
[0, 0, 0, 1, 0],
96+
[-0.1f, -0.1f, -0.1f, 0, 1],
97+
];
9998

10099
float[][] transparency =
101100
[
102101
[1, 0, 0, 0, 0],
103-
[0, 1, 0, 0, 0],
104-
[0, 0, 1, 0, 0],
105-
[0, 0, 0, 0.8f, 0],
106-
[0, 0, 0, 0, 0],
107-
];
102+
[0, 1, 0, 0, 0],
103+
[0, 0, 1, 0, 0],
104+
[0, 0, 0, 0.8f, 0],
105+
[0, 0, 0, 0, 0],
106+
];
108107

109108
s_disabledImageColorMatrix = ControlPaint.MultiplyColorMatrix(transparency, greyscale);
110109
}
@@ -114,20 +113,20 @@ private static ColorMatrix DisabledImageColorMatrix
114113
float[][] greyscale =
115114
[
116115
[0.2125f, 0.2125f, 0.2125f, 0, 0],
117-
[0.2577f, 0.2577f, 0.2577f, 0, 0],
118-
[0.0361f, 0.0361f, 0.0361f, 0, 0],
119-
[0, 0, 0, 1, 0],
120-
[0.38f, 0.38f, 0.38f, 0, 1],
121-
];
116+
[0.2577f, 0.2577f, 0.2577f, 0, 0],
117+
[0.0361f, 0.0361f, 0.0361f, 0, 0],
118+
[0, 0, 0, 1, 0],
119+
[0.38f, 0.38f, 0.38f, 0, 1],
120+
];
122121

123122
float[][] transparency =
124123
[
125124
[1, 0, 0, 0, 0],
126-
[0, 1, 0, 0, 0],
127-
[0, 0, 1, 0, 0],
128-
[0, 0, 0, 0.7f, 0],
129-
[0, 0, 0, 0, 0],
130-
];
125+
[0, 1, 0, 0, 0],
126+
[0, 0, 1, 0, 0],
127+
[0, 0, 0, 0.7f, 0],
128+
[0, 0, 0, 0, 0],
129+
];
131130

132131
s_disabledImageColorMatrix = ControlPaint.MultiplyColorMatrix(transparency, greyscale);
133132
}
@@ -529,7 +528,6 @@ public void DrawToolStripStatusLabelBackground(ToolStripItemRenderEventArgs e)
529528
}
530529
}
531530

532-
//
533531
public void DrawStatusStripSizingGrip(ToolStripRenderEventArgs e)
534532
{
535533
OnRenderStatusStripSizingGrip(e);
@@ -635,7 +633,9 @@ protected virtual void OnRenderArrow(ToolStripArrowRenderEventArgs e)
635633
/// <param name="e">The event arguments containing rendering information.</param>
636634
/// <param name="arrowColor">The color to use for the arrow.</param>
637635
/// <returns>The rendered arrow points.</returns>
638-
private protected Point[] RenderArrowCore(ToolStripArrowRenderEventArgs e, Color arrowColor)
636+
private protected Point[] RenderArrowCore(
637+
ToolStripArrowRenderEventArgs e,
638+
Color arrowColor)
639639
{
640640
ArgumentNullException.ThrowIfNull(e);
641641

@@ -660,34 +660,37 @@ private protected Point[] RenderArrowCore(ToolStripArrowRenderEventArgs e, Color
660660
ScaleArrowOffsetsIfNeeded();
661661
}
662662

663-
// Using (offset4X - Offset2X) instead of (Offset2X) to compensate for rounding error in scaling
664-
int horizontalOffset = ScaleHelper.IsScalingRequirementMet ? s_offset4X - Offset2X : Offset2X;
663+
// Using (offset4X - Offset2X) instead of (Offset2X) to compensate
664+
// for rounding error in scaling
665+
int horizontalOffset = ScaleHelper.IsScalingRequirementMet
666+
? s_offset4X - Offset2X
667+
: Offset2X;
665668

666669
Point[] arrow = e.Direction switch
667670
{
668671
ArrowDirection.Up =>
669672
[
670673
new(middle.X - Offset2X, middle.Y + 1),
671-
new(middle.X + Offset2X + 1, middle.Y + 1),
672-
new(middle.X, middle.Y - Offset2Y)
674+
new(middle.X + Offset2X + 1, middle.Y + 1),
675+
new(middle.X, middle.Y - Offset2Y)
673676
],
674677
ArrowDirection.Left =>
675678
[
676679
new(middle.X + Offset2X, middle.Y - s_offset4Y),
677-
new(middle.X + Offset2X, middle.Y + s_offset4Y),
678-
new(middle.X - horizontalOffset, middle.Y)
680+
new(middle.X + Offset2X, middle.Y + s_offset4Y),
681+
new(middle.X - horizontalOffset, middle.Y)
679682
],
680683
ArrowDirection.Right =>
681684
[
682685
new(middle.X - Offset2X, middle.Y - s_offset4Y),
683-
new(middle.X - Offset2X, middle.Y + s_offset4Y),
684-
new(middle.X + horizontalOffset, middle.Y)
686+
new(middle.X - Offset2X, middle.Y + s_offset4Y),
687+
new(middle.X + horizontalOffset, middle.Y)
685688
],
686689
_ =>
687690
[
688691
new(middle.X - Offset2X, middle.Y - 1),
689-
new(middle.X + Offset2X + 1, middle.Y - 1),
690-
new(middle.X, middle.Y + Offset2Y)
692+
new(middle.X + Offset2X + 1, middle.Y - 1),
693+
new(middle.X, middle.Y + Offset2Y)
691694
],
692695
};
693696

@@ -1014,7 +1017,10 @@ protected virtual void OnRenderStatusStripSizingGrip(ToolStripRenderEventArgs e)
10141017
shadowBrush: SystemBrushes.ButtonShadow);
10151018
}
10161019

1017-
private protected void OnRenderStatusStripSizingGrip(ToolStripRenderEventArgs eArgs, Brush highLightBrush, Brush shadowBrush)
1020+
private protected void OnRenderStatusStripSizingGrip(
1021+
ToolStripRenderEventArgs eArgs,
1022+
Brush highLightBrush,
1023+
Brush shadowBrush)
10181024
{
10191025
if (RendererOverride is not null)
10201026
{
@@ -1062,11 +1068,11 @@ private protected void OnRenderStatusStripSizingGrip(ToolStripRenderEventArgs eA
10621068

10631069
if (statusStrip.RightToLeft == RightToLeft.Yes)
10641070
{
1065-
baseRect.Offset(1, -1 + offset);
1071+
baseRect.Offset(1, -1 - offset);
10661072
}
10671073
else
10681074
{
1069-
baseRect.Offset(-1, -1 + offset);
1075+
baseRect.Offset(-1, -1 - offset);
10701076
}
10711077

10721078
greyRectangles[i] = baseRect;
@@ -1109,7 +1115,8 @@ protected virtual void OnRenderSplitButtonBackground(ToolStripItemRenderEventArg
11091115
}
11101116
}
11111117

1112-
// Only paint background effects if no BackColor has been set or no background image has been set.
1118+
// Only paint background effects if no BackColor has been set
1119+
// or no background image has been set.
11131120
internal static bool ShouldPaintBackground(Control control) =>
11141121
control.RawBackColor == Color.Empty && control.BackgroundImage is null;
11151122

src/System.Windows.Forms/System/Windows/Forms/Controls/ToolStrips/ToolStripSystemDarkModeRenderer.cs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -307,7 +307,7 @@ protected override void OnRenderButtonBackground(ToolStripItemRenderEventArgs e)
307307

308308
if (isPressed || isSelected)
309309
{
310-
var fillColor = isPressed
310+
using var fillColor = isPressed
311311
? GetDarkModeBrush(SystemColors.ControlDark)
312312
: GetDarkModeBrush(SystemColors.Highlight);
313313

@@ -343,7 +343,7 @@ protected override void OnRenderSplitButtonBackground(ToolStripItemRenderEventAr
343343
// Render the background based on state
344344
if (splitButton.Selected || splitButton.Pressed)
345345
{
346-
var fillColor = splitButton.Pressed
346+
using var fillColor = splitButton.Pressed
347347
? GetDarkModeBrush(SystemColors.ControlDark)
348348
: GetDarkModeBrush(SystemColors.Highlight);
349349

@@ -360,6 +360,13 @@ protected override void OnRenderSplitButtonBackground(ToolStripItemRenderEventAr
360360
dropDownRect.Top + 2,
361361
dropDownRect.Left - 1,
362362
dropDownRect.Bottom - 2);
363+
364+
DrawArrow(new ToolStripArrowRenderEventArgs(
365+
e.Graphics,
366+
e.Item,
367+
dropDownRect,
368+
SystemColors.ControlText,
369+
ArrowDirection.Down));
363370
}
364371

365372
/// <summary>

0 commit comments

Comments
 (0)