Skip to content

Commit

Permalink
Pager: Fix bug where setting button visibility would be ignored (#4121)
Browse files Browse the repository at this point in the history
  • Loading branch information
marcelwgn committed Apr 14, 2021
1 parent 3cc79d0 commit 945c8cd
Show file tree
Hide file tree
Showing 7 changed files with 1,437 additions and 11 deletions.
11 changes: 11 additions & 0 deletions dev/PagerControl/InteractionTests/PagerControlTestPageElements.cs
Original file line number Diff line number Diff line change
Expand Up @@ -236,6 +236,17 @@ public Button GetIncreaseNumberOfPagesButton()
}
private Button IncreaseNumberOfPagesButton;

public Button GetCheckIfButtonsHiddenButton()
{
return GetElement(ref CheckIfButtonsHiddenButton, "CheckIfButtonsHiddenButton");
}
private Button CheckIfButtonsHiddenButton;
public TextBlock GetCheckIfButtonsHiddenLabel()
{
return GetElement(ref CheckIfButtonsHiddenLabel, "CheckIfButtonsHiddenLabel");
}
private TextBlock CheckIfButtonsHiddenLabel;

public Button GetEnterInfinityModeButton()
{
return GetElement(ref EnterInfinityModeButton, "NumberOfPagesInfinityButton");
Expand Down
18 changes: 18 additions & 0 deletions dev/PagerControl/InteractionTests/PagerControlTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -555,5 +555,23 @@ public void ChangingDisplayModeTest()
VerifyAutoDisplayMode();
}
}

[TestMethod]
[TestProperty("TestSuite", "C")]
public void VerifyButtonVisibilitySetInXAMLApplied()
{
using (var setup = new TestSetupHelper("PagerControl Tests"))
{
elements = new PagerControlTestPageElements();

// Invoke button
elements.GetCheckIfButtonsHiddenButton().Click();

Wait.ForIdle();

// Check result
Verify.AreEqual("Passed", elements.GetCheckIfButtonsHiddenLabel().GetText(), "Not all buttons where hidden and as such, the test result was not 'Passed'");
}
}
}
}
24 changes: 24 additions & 0 deletions dev/PagerControl/PagerControl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,7 @@ void PagerControl::OnApplyTemplate()
m_comboBox.set(comboBox);
if (comboBox)
{
FillComboBoxCollectionToSize(NumberOfPages());
comboBox.SelectedIndex(SelectedPageIndex() - 1);
winrt::AutomationProperties::SetName(comboBox, ResourceAccessor::GetLocalizedStringResource(SR_PagerControlPageTextName));
m_comboBoxSelectionChangedRevoker = comboBox.SelectionChanged(winrt::auto_revoke, { this, &PagerControl::ComboBoxSelectionChanged });
Expand All @@ -148,6 +149,29 @@ void PagerControl::OnApplyTemplate()
OnDisplayModeChanged();
UpdateOnEdgeButtonVisualStates();
OnNumberOfPagesChanged(0);

// Update button visibilities
OnButtonVisibilityChanged(FirstButtonVisibility(),
c_firstPageButtonVisibleVisualState,
c_firstPageButtonNotVisibleVisualState,
c_firstPageButtonHiddenVisualState,
0);
OnButtonVisibilityChanged(PreviousButtonVisibility(),
c_previousPageButtonVisibleVisualState,
c_previousPageButtonNotVisibleVisualState,
c_previousPageButtonHiddenVisualState,
0);
OnButtonVisibilityChanged(NextButtonVisibility(),
c_nextPageButtonVisibleVisualState,
c_nextPageButtonNotVisibleVisualState,
c_nextPageButtonHiddenVisualState,
NumberOfPages() - 1);
OnButtonVisibilityChanged(LastButtonVisibility(),
c_lastPageButtonVisibleVisualState,
c_lastPageButtonNotVisibleVisualState,
c_lastPageButtonHiddenVisualState,
NumberOfPages() - 1);

OnSelectedPageIndexChange(-1);
}

Expand Down
18 changes: 17 additions & 1 deletion dev/PagerControl/TestUI/PagerControlPage.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,19 @@
</Style>
</muxc:PagerControl.Resources>
</muxc:PagerControl>
<TextBlock Text="Button state set in XAML test PagerControl"/>
<muxc:PagerControl x:Name="TemplateButtonVisibilitySetPager"
VerticalAlignment="Top"
HorizontalAlignment="Left"
NumberOfPages="10"
SelectedPageIndex="2"
FirstButtonVisibility="Hidden"
PreviousButtonVisibility="Hidden"
NextButtonVisibility="Hidden"
LastButtonVisibility="Hidden"
DisplayMode="ButtonPanel"
ButtonPanelAlwaysShowFirstLastPageIndex="True"/>

</StackPanel>

<ScrollViewer Grid.Column="1" HorizontalScrollMode="Enabled" HorizontalScrollBarVisibility="Visible">
Expand Down Expand Up @@ -116,7 +129,10 @@
<Button x:Name="NumberOfPagesSetterButton" Content="Set NumberOfPages to 100" Click="NumberOfPagesSetterButtonClicked"/>
<Button x:Name="NumberOfPagesInfinityButton" AutomationProperties.Name="NumberOfPagesInfinityButton" Content="Set NumberOfPages to -1 (aka Infinity mode)" Click="NumberOfPagesInfinityButtonClicked"/>
<Button x:Name="IncreaseNumberOfPagesButton" Content="Increase NumberOfPages by 1" Click="IncreaseNumberOfPagesButtonClicked"/>

<StackPanel Orientation="Horizontal">
<Button x:Name="CheckIfButtonsHiddenButton" Content="Check if buttons hidden on last pager" Click="CheckIfButtonsHiddenButtonClicked" AutomationProperties.Name="CheckIfButtonsHiddenButton"/>
<TextBlock x:Name="CheckIfButtonsHiddenLabel" AutomationProperties.Name="CheckIfButtonsHiddenLabel"/>
</StackPanel>
</StackPanel>
</Grid>
<Grid Grid.Column="1" Margin="5">
Expand Down
20 changes: 20 additions & 0 deletions dev/PagerControl/TestUI/PagerControlPage.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,26 @@ private void IncreaseNumberOfPagesButtonClicked(object sender, RoutedEventArgs a
ComboBoxIsEnabledCheckBox.IsChecked = pagerComboBox?.IsEnabled;
}

private void CheckIfButtonsHiddenButtonClicked(object sender, RoutedEventArgs args)
{
var rootGrid = VisualTreeHelper.GetChild(TemplateButtonVisibilitySetPager, 0);
var backButtonsPanel = VisualTreeHelper.GetChild(rootGrid, 0);
var firstPageButtonTemplatePager = VisualTreeHelper.GetChild(backButtonsPanel, 0) as Button;
var previousPageButtonTemplatePager = VisualTreeHelper.GetChild(backButtonsPanel, 1) as Button;

var forwardButtonsPanel = VisualTreeHelper.GetChild(rootGrid, 4);
var nextPageButtonTemplatePager = VisualTreeHelper.GetChild(forwardButtonsPanel, 0) as Button;
var lastPageButtonTemplatePager = VisualTreeHelper.GetChild(forwardButtonsPanel, 1) as Button;

int violationCount = 0;
violationCount += (firstPageButtonTemplatePager?.Visibility == Visibility.Collapsed || firstPageButton?.Opacity == 0) ? 0 : 1;
violationCount += (previousPageButtonTemplatePager?.Visibility == Visibility.Collapsed || previousPageButton?.Opacity == 0) ? 0 : 1;
violationCount += (nextPageButtonTemplatePager?.Visibility == Visibility.Collapsed || nextPageButton?.Opacity == 0) ? 0 : 1;
violationCount += (lastPageButtonTemplatePager?.Visibility == Visibility.Collapsed || lastPageButton?.Opacity == 0) ? 0 : 1;

CheckIfButtonsHiddenLabel.Text = violationCount == 0 ? "Passed" : "Failed";
}

private void OnSelectedIndexChanged(PagerControl sender, PagerControlSelectedIndexChangedEventArgs args)
{
UpdateNumberPanelContentTextBlock(this, null);
Expand Down
Loading

0 comments on commit 945c8cd

Please sign in to comment.