From 6ca8f90021904e0cec6a30ca0e2f9183c06e9334 Mon Sep 17 00:00:00 2001 From: Pepe Rivera Date: Fri, 31 Jan 2020 13:45:16 -0800 Subject: [PATCH] Fix focus bug in graphing mode and other small changes (#938) * Fix some bugs * Style fixes from prev PR --- src/Calculator/Controls/MathRichEditBox.cpp | 2 +- src/Calculator/Controls/MathRichEditBox.h | 2 +- .../GraphingCalculator/EquationInputArea.xaml.cpp | 3 +++ .../GraphingCalculator/EquationInputArea.xaml.h | 4 ++-- .../GraphingCalculator/GraphingCalculator.xaml.cpp | 14 +++++++++++++- .../GraphingCalculator/GraphingCalculator.xaml.h | 2 ++ src/Calculator/Views/MainPage.xaml.cpp | 2 +- 7 files changed, 23 insertions(+), 6 deletions(-) diff --git a/src/Calculator/Controls/MathRichEditBox.cpp b/src/Calculator/Controls/MathRichEditBox.cpp index 8b72417e..e97d3822 100644 --- a/src/Calculator/Controls/MathRichEditBox.cpp +++ b/src/Calculator/Controls/MathRichEditBox.cpp @@ -185,7 +185,7 @@ void MathRichEditBox::SubmitEquation(EquationSubmissionSource source) auto formatRequest = ref new MathRichEditBoxFormatRequest(newVal); FormatRequest(this, formatRequest); - if (!formatRequest->FormattedText->IsEmpty()) + if (formatRequest->FormattedText != nullptr && !formatRequest->FormattedText->IsEmpty()) { newVal = formatRequest->FormattedText; } diff --git a/src/Calculator/Controls/MathRichEditBox.h b/src/Calculator/Controls/MathRichEditBox.h index d28cd0f7..2a937083 100644 --- a/src/Calculator/Controls/MathRichEditBox.h +++ b/src/Calculator/Controls/MathRichEditBox.h @@ -39,8 +39,8 @@ namespace CalculatorApp public: MathRichEditBoxFormatRequest(Platform::String^ originalText) + : m_OriginalText(originalText) { - m_OriginalText = originalText; } }; diff --git a/src/Calculator/Views/GraphingCalculator/EquationInputArea.xaml.cpp b/src/Calculator/Views/GraphingCalculator/EquationInputArea.xaml.cpp index 8dd897b9..f5ee56cf 100644 --- a/src/Calculator/Views/GraphingCalculator/EquationInputArea.xaml.cpp +++ b/src/Calculator/Views/GraphingCalculator/EquationInputArea.xaml.cpp @@ -330,6 +330,9 @@ void EquationInputArea::SubmitTextbox(TextBox ^ sender) { val = validateDouble(sender->Text, variableViewModel->Value); variableViewModel->Value = val; + + // Assign back to val in case it gets changed due to min/max + val = variableViewModel->Value; } else if (sender->Name == "MinTextBox") { diff --git a/src/Calculator/Views/GraphingCalculator/EquationInputArea.xaml.h b/src/Calculator/Views/GraphingCalculator/EquationInputArea.xaml.h index 1626c788..099f3610 100644 --- a/src/Calculator/Views/GraphingCalculator/EquationInputArea.xaml.h +++ b/src/Calculator/Views/GraphingCalculator/EquationInputArea.xaml.h @@ -61,12 +61,12 @@ namespace CalculatorApp void TextBoxLosingFocus(Windows::UI::Xaml::Controls::TextBox ^ textbox, Windows::UI::Xaml::Input::LosingFocusEventArgs ^ args); void TextBoxKeyDown(Windows::UI::Xaml::Controls::TextBox ^ textbox, Windows::UI::Xaml::Input::KeyRoutedEventArgs ^ e); void SubmitTextbox(Windows::UI::Xaml::Controls::TextBox ^ textbox); + void VariableAreaTapped(Platform::Object ^ sender, Windows::UI::Xaml::Input::TappedRoutedEventArgs ^ e); + void EquationTextBox_EquationFormatRequested(Platform::Object ^ sender, CalculatorApp::Controls::MathRichEditBoxFormatRequest ^ e); Windows::UI::ViewManagement::AccessibilitySettings ^ m_accessibilitySettings; int m_lastLineColorIndex; int m_lastFunctionLabelIndex; ViewModel::EquationViewModel ^ m_equationToFocus; - void VariableAreaTapped(Platform::Object ^ sender, Windows::UI::Xaml::Input::TappedRoutedEventArgs ^ e); - void EquationTextBox_EquationFormatRequested(Platform::Object ^ sender, CalculatorApp::Controls::MathRichEditBoxFormatRequest ^ e); }; } diff --git a/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml.cpp b/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml.cpp index fc49ddb1..84703320 100644 --- a/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml.cpp +++ b/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml.cpp @@ -552,7 +552,7 @@ void CalculatorApp::GraphingCalculator::AddTracePointerShadow() auto dropShadow = compositor->CreateDropShadow(); dropShadow->BlurRadius = 6; dropShadow->Opacity = 0.33f; - dropShadow->Offset = ::Numerics::float3(2, 2, 0); + dropShadow->Offset = ::Numerics::float3(2, 2, 0); dropShadow->Mask = CursorPath->GetAlphaMask(); auto shadowSpriteVisual = compositor->CreateSpriteVisual(); @@ -587,3 +587,15 @@ void GraphingCalculator::OnEquationFormatRequested(Object ^ sender, MathRichEdit e->FormattedText = GraphingControl->FormatMathML(e->OriginalText); } } + +void GraphingCalculator::SetDefaultFocus() +{ + if (IsSmallState) + { + SwitchModeToggleButton->Focus(::FocusState::Programmatic); + } + else + { + EquationInputAreaControl->Focus(::FocusState::Programmatic); + } +} diff --git a/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml.h b/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml.h index dfc882bd..38f76aaa 100644 --- a/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml.h +++ b/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml.h @@ -38,6 +38,8 @@ public ref class GraphingCalculator sealed : public Windows::UI::Xaml::Data::INo static Platform::String ^ GetInfoForSwitchModeToggleButton(bool isChecked); static Windows::UI::Xaml::Visibility ManageEditVariablesButtonVisibility(unsigned int numberOfVariables); static Platform::String ^ GetTracingLegend(Platform::IBox ^ isTracing); + + void SetDefaultFocus(); private: void GraphingCalculator_DataContextChanged(Windows::UI::Xaml::FrameworkElement ^ sender, Windows::UI::Xaml::DataContextChangedEventArgs ^ args); diff --git a/src/Calculator/Views/MainPage.xaml.cpp b/src/Calculator/Views/MainPage.xaml.cpp index 9a96c1b0..02cc2d82 100644 --- a/src/Calculator/Views/MainPage.xaml.cpp +++ b/src/Calculator/Views/MainPage.xaml.cpp @@ -297,7 +297,7 @@ void MainPage::SetDefaultFocus() } if (m_graphingCalculator != nullptr && m_graphingCalculator->Visibility == ::Visibility::Visible) { - FocusManager::TryFocusAsync(m_graphingCalculator, ::FocusState::Programmatic); + m_graphingCalculator->SetDefaultFocus(); } if (m_converter != nullptr && m_converter->Visibility == ::Visibility::Visible) {