From 14e4aec081e619ec9b94cb99b8eea191507b84e7 Mon Sep 17 00:00:00 2001 From: robloo Date: Sat, 19 Mar 2022 17:06:43 -0400 Subject: [PATCH] Sync SplitButton with Button changes --- .../SplitButton/SplitButton.cs | 32 +++++++++++++------ 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/src/Avalonia.Controls/SplitButton/SplitButton.cs b/src/Avalonia.Controls/SplitButton/SplitButton.cs index f1d07b2679..2cafba620e 100644 --- a/src/Avalonia.Controls/SplitButton/SplitButton.cs +++ b/src/Avalonia.Controls/SplitButton/SplitButton.cs @@ -1,7 +1,6 @@ using System; using System.Windows.Input; using Avalonia.Controls.Metadata; -using Avalonia.Controls.Mixins; using Avalonia.Controls.Primitives; using Avalonia.Input; using Avalonia.Interactivity; @@ -314,16 +313,9 @@ namespace Avalonia.Controls } // Must unregister events here while a reference to the old flyout still exists - if (oldFlyout != null) - { - UnregisterFlyoutEvents(oldFlyout); - } - - if (newFlyout != null) - { - RegisterFlyoutEvents(newFlyout); - } + UnregisterFlyoutEvents(oldFlyout); + RegisterFlyoutEvents(newFlyout); UpdatePseudoClasses(); } @@ -415,6 +407,22 @@ namespace Avalonia.Controls } } + /// + /// Invoked when the split button's flyout is opened. + /// + protected virtual void OnFlyoutOpened() + { + // Available for derived types + } + + /// + /// Invoked when the split button's flyout is closed. + /// + protected virtual void OnFlyoutClosed() + { + // Available for derived types + } + //////////////////////////////////////////////////////////////////////// // Event Handling //////////////////////////////////////////////////////////////////////// @@ -464,6 +472,8 @@ namespace Avalonia.Controls { _isFlyoutOpen = true; UpdatePseudoClasses(); + + OnFlyoutOpened(); } } @@ -479,6 +489,8 @@ namespace Avalonia.Controls { _isFlyoutOpen = false; UpdatePseudoClasses(); + + OnFlyoutClosed(); } } }