diff --git a/dev/CommandBarFlyout/CommandBarFlyoutCommandBar.cpp b/dev/CommandBarFlyout/CommandBarFlyoutCommandBar.cpp index 0179d281e9..a48c222fb2 100644 --- a/dev/CommandBarFlyout/CommandBarFlyoutCommandBar.cpp +++ b/dev/CommandBarFlyout/CommandBarFlyoutCommandBar.cpp @@ -78,16 +78,20 @@ CommandBarFlyoutCommandBar::CommandBarFlyoutCommandBar() [this](auto const&, auto const&) { #ifdef _DEBUG - COMMANDBARFLYOUT_TRACE_VERBOSE(*this, TRACE_MSG_METH_STR, METH_NAME, this, L"SizedChanged"); + COMMANDBARFLYOUT_TRACE_VERBOSE(*this, TRACE_MSG_METH_STR, METH_NAME, this, L"SizeChanged"); #endif - UpdateUI(!m_commandBarFlyoutIsOpening); + UpdateUI(!m_commandBarFlyoutIsOpening, true /*isForSizeChange*/); } }); Closing({ [this](auto const&, auto const&) { +#ifdef _DEBUG + COMMANDBARFLYOUT_TRACE_VERBOSE(*this, TRACE_MSG_METH_STR, METH_NAME, this, L"Closing"); +#endif + if (auto owningFlyout = m_owningFlyout.get()) { if (owningFlyout.AlwaysExpanded()) @@ -283,7 +287,7 @@ void CommandBarFlyoutCommandBar::AttachEventHandlers() #endif m_secondaryItemsRootSized = true; - UpdateUI(!m_commandBarFlyoutIsOpening); + UpdateUI(!m_commandBarFlyoutIsOpening, true /*isForSizeChange*/); } }); @@ -499,19 +503,19 @@ void CommandBarFlyoutCommandBar::UpdateFlowsFromAndFlowsTo() } void CommandBarFlyoutCommandBar::UpdateUI( - bool useTransitions, bool isForCommandBarElementDependencyPropertyChange) + bool useTransitions, bool isForSizeChange) { - COMMANDBARFLYOUT_TRACE_VERBOSE(*this, TRACE_MSG_METH_INT_INT, METH_NAME, this, useTransitions, isForCommandBarElementDependencyPropertyChange); + COMMANDBARFLYOUT_TRACE_VERBOSE(*this, TRACE_MSG_METH_INT_INT, METH_NAME, this, useTransitions, isForSizeChange); UpdateTemplateSettings(); - UpdateVisualState(useTransitions, isForCommandBarElementDependencyPropertyChange); + UpdateVisualState(useTransitions, isForSizeChange); UpdateProjectedShadow(); } void CommandBarFlyoutCommandBar::UpdateVisualState( bool useTransitions, - bool isForCommandBarElementDependencyPropertyChange) + bool isForSizeChange) { if (IsOpen()) { @@ -575,14 +579,14 @@ void CommandBarFlyoutCommandBar::UpdateVisualState( } } - if (isForCommandBarElementDependencyPropertyChange) + if (isForSizeChange) { - // UpdateVisualState is called as a result of a secondary command bar element dependency property change. This CommandBarFlyoutCommandBar is already open + // UpdateVisualState is called as a result of a size change (for instance caused by a secondary command bar element dependency property change). This CommandBarFlyoutCommandBar is already open // and expanded. Jump to the Collapsed and back to ExpandedUp/ExpandedDown state to apply all refreshed CommandBarFlyoutCommandBarTemplateSettings values. winrt::VisualStateManager::GoToState(*this, L"Collapsed", false); } - winrt::VisualStateManager::GoToState(*this, shouldExpandUp ? L"ExpandedUp" : L"ExpandedDown", useTransitions && !isForCommandBarElementDependencyPropertyChange); + winrt::VisualStateManager::GoToState(*this, shouldExpandUp ? L"ExpandedUp" : L"ExpandedDown", useTransitions && !isForSizeChange); // Union of AvailableCommandsStates and ExpansionStates bool hasPrimaryCommands = (PrimaryCommands().Size() != 0); @@ -1404,6 +1408,6 @@ void CommandBarFlyoutCommandBar::OnCommandBarElementDependencyPropertyChanged() // Only refresh the UI when the CommandBarFlyoutCommandBar is already open since it will be refreshed anyways in the event it gets opened. if (IsOpen()) { - UpdateUI(!m_commandBarFlyoutIsOpening, true /*isForCommandBarElementDependencyPropertyChange*/); + UpdateUI(!m_commandBarFlyoutIsOpening, true /*isForSizeChange*/); } } diff --git a/dev/CommandBarFlyout/CommandBarFlyoutCommandBar.h b/dev/CommandBarFlyout/CommandBarFlyoutCommandBar.h index 8255b30eed..5c004de1f9 100644 --- a/dev/CommandBarFlyout/CommandBarFlyoutCommandBar.h +++ b/dev/CommandBarFlyout/CommandBarFlyoutCommandBar.h @@ -49,8 +49,8 @@ class CommandBarFlyoutCommandBar : void DetachEventHandlers(); void UpdateFlowsFromAndFlowsTo(); - void UpdateUI(bool useTransitions = true, bool isForCommandBarElementDependencyPropertyChange = false); - void UpdateVisualState(bool useTransitions, bool isForCommandBarElementDependencyPropertyChange = false); + void UpdateUI(bool useTransitions = true, bool isForSizeChange = false); + void UpdateVisualState(bool useTransitions, bool isForSizeChange = false); void UpdateTemplateSettings(); void EnsureAutomationSetCountAndPosition(); void EnsureLocalizedControlTypes(); diff --git a/dev/CommandBarFlyout/InteractionTests/CommandBarFlyoutTests.cs b/dev/CommandBarFlyout/InteractionTests/CommandBarFlyoutTests.cs index 84cea30288..feff081d4b 100644 --- a/dev/CommandBarFlyout/InteractionTests/CommandBarFlyoutTests.cs +++ b/dev/CommandBarFlyout/InteractionTests/CommandBarFlyoutTests.cs @@ -1005,6 +1005,174 @@ public void VerifyDynamicSecondaryCommandLabel() } } + [TestMethod] + public void VerifyDynamicSecondaryCommandVisibility() + { + if (PlatformConfiguration.IsOSVersionLessThan(OSVersion.Redstone2)) + { + Log.Warning("Test is disabled pre-RS2 because CommandBarFlyout is not supported pre-RS2"); + return; + } + + using (var setup = new CommandBarFlyoutTestSetupHelper()) + { + Log.Comment("Retrieving FlyoutTarget6"); + Button showCommandBarFlyoutButton = FindElement.ByName