diff --git a/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml b/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml index a863a7c8..871314c0 100644 --- a/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml +++ b/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml @@ -346,13 +346,13 @@ + Placement="Bottom" + Opened="BitShiftFlyout_Opened"> + Checked="BitshiftFlyout_Checked"/> GetResourceString(L"logicalShiftButtonSelected"); m_rotateCircularButtonContent = resProvider->GetResourceString(L"rotateCircularButtonSelected"); m_rotateCarryShiftButtonContent = resProvider->GetResourceString(L"rotateCarryShiftButtonSelected"); + m_selectedShiftButtonContent = m_arithmeticShiftButtonContent; } void CalculatorProgrammerRadixOperators::FlyoutButton_Clicked(_In_ Platform::Object ^ /*sender*/, _In_ Windows::UI::Xaml::RoutedEventArgs ^ /*e*/) @@ -45,11 +46,6 @@ void CalculatorProgrammerRadixOperators::FlyoutButton_Clicked(_In_ Platform::Obj this->BitwiseFlyout->Hide(); } -void CalculatorProgrammerRadixOperators::checkDefaultBitShift() -{ - this->ArithmeticShiftButton->IsChecked = true; -} - void CalculatorProgrammerRadixOperators::BitshiftFlyout_Checked(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e) { // Load deferred load buttons @@ -109,7 +105,12 @@ void CalculatorProgrammerRadixOperators::BitshiftFlyout_Checked(Platform::Object announcementString = m_rotateCarryShiftButtonContent; } - this->BitShiftFlyout->Hide(); + if (announcementString != m_selectedShiftButtonContent) + { + this->BitShiftFlyout->Hide(); + m_selectedShiftButtonContent = announcementString; + } + Model->SetBitshiftRadioButtonCheckedAnnouncement(announcementString); } @@ -176,3 +177,23 @@ void CalculatorProgrammerRadixOperators::ClearButton_LostFocus(Object ^ sender, ClearEntryButton->Focus(::FocusState::Programmatic); } } + +void CalculatorApp::CalculatorProgrammerRadixOperators::BitShiftFlyout_Opened(Platform::Object ^ sender, Platform::Object ^ e) +{ + if (m_selectedShiftButtonContent == m_arithmeticShiftButtonContent) + { + ArithmeticShiftButton->IsChecked = true; + } + else if (m_selectedShiftButtonContent == m_logicalShiftButtonContent) + { + LogicalShiftButton->IsChecked = true; + } + else if (m_selectedShiftButtonContent == m_rotateCircularButtonContent) + { + RotateCircularButton->IsChecked = true; + } + else if (m_selectedShiftButtonContent == m_rotateCarryShiftButtonContent) + { + RotateCarryShiftButton->IsChecked = true; + } +} diff --git a/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml.h b/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml.h index 2412bfc5..176c7ee5 100644 --- a/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml.h +++ b/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml.h @@ -30,8 +30,6 @@ namespace CalculatorApp DEPENDENCY_PROPERTY_OWNER(CalculatorProgrammerRadixOperators); - void checkDefaultBitShift(); - private: void BitshiftFlyout_Checked(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e); void FlyoutButton_Clicked(_In_ Platform::Object ^ sender, _In_ Windows::UI::Xaml::RoutedEventArgs ^ e); @@ -42,6 +40,8 @@ namespace CalculatorApp void OpenParenthesisButton_GotFocus(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e); void ClearEntryButton_LostFocus(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e); void ClearButton_LostFocus(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e); + void BitShiftFlyout_Opened(Platform::Object ^ sender, Platform::Object ^ e); + Platform::String ^ m_selectedShiftButtonContent; Platform::String ^ m_arithmeticShiftButtonContent; Platform::String ^ m_logicalShiftButtonContent; Platform::String ^ m_rotateCircularButtonContent; diff --git a/src/Calculator/Views/OperatorsPanel.xaml.cpp b/src/Calculator/Views/OperatorsPanel.xaml.cpp index 810a8e20..d771ad0a 100644 --- a/src/Calculator/Views/OperatorsPanel.xaml.cpp +++ b/src/Calculator/Views/OperatorsPanel.xaml.cpp @@ -71,11 +71,6 @@ void OperatorsPanel::EnsureProgrammerRadixOps() { this->FindName(L"ProgrammerRadixOperators"); } - - if (ProgrammerRadixOperators) - { - ProgrammerRadixOperators->checkDefaultBitShift(); - } } void OperatorsPanel::EnsureProgrammerBitFlipPanel()