From c67a19b3cacb601acf1d6016d1bbd988cc8920aa Mon Sep 17 00:00:00 2001 From: Leaf Shi Date: Tue, 23 Sep 2025 00:00:26 -0700 Subject: [PATCH 1/2] Add hover visual effect for Popup button --- .../DarkMode/PopupButtonDarkModeRenderer.cs | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/System.Windows.Forms/System/Windows/Forms/Controls/Buttons/ButtonInternal/DarkMode/PopupButtonDarkModeRenderer.cs b/src/System.Windows.Forms/System/Windows/Forms/Controls/Buttons/ButtonInternal/DarkMode/PopupButtonDarkModeRenderer.cs index 5970ad57fca..05181a62734 100644 --- a/src/System.Windows.Forms/System/Windows/Forms/Controls/Buttons/ButtonInternal/DarkMode/PopupButtonDarkModeRenderer.cs +++ b/src/System.Windows.Forms/System/Windows/Forms/Controls/Buttons/ButtonInternal/DarkMode/PopupButtonDarkModeRenderer.cs @@ -141,9 +141,9 @@ private static void DrawButtonBorder(Graphics graphics, Rectangle bounds, PushBu if (state == PushButtonState.Pressed) { - // In pressed state, invert the 3D effect: highlight bottom/right, shadow top/left - topLeftOuter = DefaultColors.ShadowColor; // shadow - bottomRightOuter = DefaultColors.HighlightColor; // highlight + // In pressed state, invert the 3D effect: brighter highlight bottom/right, deeper shadow top/left + topLeftOuter = DefaultColors.ShadowDarkColor; // deeper shadow + bottomRightOuter = DefaultColors.HighlightBrightColor; // brighter highlight topLeftInner = DefaultColors.ShadowDarkColor; // deeper shadow bottomRightInner = DefaultColors.HighlightBrightColor; // brighter highlight } @@ -155,9 +155,17 @@ private static void DrawButtonBorder(Graphics graphics, Rectangle bounds, PushBu topLeftInner = DefaultColors.DisabledBorderMidColor; bottomRightInner = DefaultColors.DisabledBorderMidColor; } + else if (state == PushButtonState.Hot) + { + // In hover state, invert the 3D effect: highlight bottom/right, shadow top/left + topLeftOuter = DefaultColors.ShadowColor; // shadow + bottomRightOuter = DefaultColors.HighlightColor; // highlight + topLeftInner = DefaultColors.ShadowColor; // shadow + bottomRightInner = DefaultColors.HighlightColor; // highlight + } else { - // Normal/hot: highlight top/left, shadow bottom/right + // Normal: highlight top/left, shadow bottom/right topLeftOuter = DefaultColors.HighlightColor; // highlight bottomRightOuter = DefaultColors.ShadowColor; // shadow topLeftInner = DefaultColors.HighlightBrightColor; // brighter highlight From c6a34f47d7a02c4ded03f39b65110e594886fe12 Mon Sep 17 00:00:00 2001 From: Leaf Shi Date: Tue, 23 Sep 2025 20:28:28 -0700 Subject: [PATCH 2/2] When pressed, highlight all borders --- .../ButtonInternal/DarkMode/PopupButtonDarkModeRenderer.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/System.Windows.Forms/System/Windows/Forms/Controls/Buttons/ButtonInternal/DarkMode/PopupButtonDarkModeRenderer.cs b/src/System.Windows.Forms/System/Windows/Forms/Controls/Buttons/ButtonInternal/DarkMode/PopupButtonDarkModeRenderer.cs index 05181a62734..cebd15e4f8f 100644 --- a/src/System.Windows.Forms/System/Windows/Forms/Controls/Buttons/ButtonInternal/DarkMode/PopupButtonDarkModeRenderer.cs +++ b/src/System.Windows.Forms/System/Windows/Forms/Controls/Buttons/ButtonInternal/DarkMode/PopupButtonDarkModeRenderer.cs @@ -141,10 +141,10 @@ private static void DrawButtonBorder(Graphics graphics, Rectangle bounds, PushBu if (state == PushButtonState.Pressed) { - // In pressed state, invert the 3D effect: brighter highlight bottom/right, deeper shadow top/left - topLeftOuter = DefaultColors.ShadowDarkColor; // deeper shadow + // In pressed state, brighter all borders to simulate the button being pressed. + topLeftOuter = DefaultColors.HighlightBrightColor; // brighter highlight bottomRightOuter = DefaultColors.HighlightBrightColor; // brighter highlight - topLeftInner = DefaultColors.ShadowDarkColor; // deeper shadow + topLeftInner = DefaultColors.HighlightBrightColor; // deeper shadow bottomRightInner = DefaultColors.HighlightBrightColor; // brighter highlight } else if (state == PushButtonState.Disabled)