diff --git a/src/Calculator/Views/GraphingCalculator/EquationInputArea.xaml b/src/Calculator/Views/GraphingCalculator/EquationInputArea.xaml index 981b776b..d2b1526e 100644 --- a/src/Calculator/Views/GraphingCalculator/EquationInputArea.xaml +++ b/src/Calculator/Views/GraphingCalculator/EquationInputArea.xaml @@ -393,8 +393,7 @@ MinHeight="44" VerticalAlignment="Stretch"> - - + @@ -813,12 +810,11 @@ - + - diff --git a/src/Calculator/Views/GraphingCalculator/EquationInputArea.xaml.cpp b/src/Calculator/Views/GraphingCalculator/EquationInputArea.xaml.cpp index 8dd897b9..7f981de3 100644 --- a/src/Calculator/Views/GraphingCalculator/EquationInputArea.xaml.cpp +++ b/src/Calculator/Views/GraphingCalculator/EquationInputArea.xaml.cpp @@ -386,6 +386,11 @@ double EquationInputArea::validateDouble(String ^ value, double defaultValue) return numberOfVariables == 0 ? ::Visibility::Collapsed : ::Visibility::Visible; } +bool EquationInputArea::ManageEditVariablesButtonLoaded(unsigned int numberOfVariables) +{ + return numberOfVariables != 0; +} + String ^ EquationInputArea::GetChevronIcon(bool isCollapsed) { return isCollapsed ? L"\uE70E" : L"\uE70D"; diff --git a/src/Calculator/Views/GraphingCalculator/EquationInputArea.xaml.h b/src/Calculator/Views/GraphingCalculator/EquationInputArea.xaml.h index 099f3610..20805f9e 100644 --- a/src/Calculator/Views/GraphingCalculator/EquationInputArea.xaml.h +++ b/src/Calculator/Views/GraphingCalculator/EquationInputArea.xaml.h @@ -29,6 +29,7 @@ namespace CalculatorApp public: static Windows::UI::Xaml::Visibility ManageEditVariablesButtonVisibility(unsigned int numberOfVariables); + static bool EquationInputArea::ManageEditVariablesButtonLoaded(unsigned int numberOfVariables); static Platform::String ^ GetChevronIcon(bool isCollapsed); diff --git a/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml b/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml index 7ea25cdb..65df7c3a 100644 --- a/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml +++ b/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml @@ -378,9 +378,9 @@ - + - + @@ -428,7 +428,6 @@ @@ -501,8 +500,7 @@ Glyph=""/> - - + Key = (VirtualKey)187; // OemAdd key virtualKey->Modifiers = VirtualKeyModifiers::Control; ZoomInButton->KeyboardAccelerators->Append(virtualKey); - - // add shadow to the trace pointer - AddTracePointerShadow(); - // hide the shadow in high contrast mode - CursorShadow->Visibility = m_accessibilitySettings->HighContrast ? ::Visibility::Collapsed : ::Visibility::Visible; - m_accessibilitySettings->HighContrastChanged += - ref new TypedEventHandler(this, &GraphingCalculator::OnHighContrastChanged); } void GraphingCalculator::OnShowTracePopupChanged(bool newValue) @@ -193,9 +186,12 @@ void GraphingCalculator::OnTracePointChanged(Point newPoint) void CalculatorApp::GraphingCalculator::OnPointerPointChanged(Windows::Foundation::Point newPoint) { - // Move the pointer glyph to where it is supposed to be. - Canvas::SetLeft(TracePointer, newPoint.X); - Canvas::SetTop(TracePointer, newPoint.Y); + if (TracePointer != nullptr) + { + // Move the pointer glyph to where it is supposed to be. + Canvas::SetLeft(TracePointer, newPoint.X); + Canvas::SetTop(TracePointer, newPoint.Y); + } } GraphingCalculatorViewModel ^ GraphingCalculator::ViewModel::get() @@ -494,6 +490,25 @@ void GraphingCalculator::TraceValuePopup_SizeChanged(Object ^ sender, SizeChange void CalculatorApp::GraphingCalculator::ActiveTracing_Checked(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e) { + if (!m_cursorShadowInitialized) + { + this->FindName(L"TraceCanvas"); + + // add shadow to the trace pointer + AddTracePointerShadow(); + + // hide the shadow in high contrast mode + CursorShadow->Visibility = m_accessibilitySettings->HighContrast ? ::Visibility::Collapsed : ::Visibility::Visible; + + m_accessibilitySettings->HighContrastChanged += + ref new TypedEventHandler(this, &GraphingCalculator::OnHighContrastChanged); + + Canvas::SetLeft(TracePointer, TraceCanvas->ActualWidth / 2 + 40); + Canvas::SetTop(TracePointer, TraceCanvas->ActualHeight / 2 - 40); + + m_cursorShadowInitialized = true; + } + FocusManager::TryFocusAsync(GraphingControl, ::FocusState::Programmatic); m_activeTracingKeyUpToken = Window::Current->CoreWindow->KeyUp += @@ -569,11 +584,14 @@ void GraphingCalculator::OnSettingsFlyout_Closing(FlyoutBase ^ sender, FlyoutBas args->Cancel = graphingSetting->CanBeClose(); } -void GraphingCalculator::LeftGrid_SizeChanged(Object ^ /*sender*/, SizeChangedEventArgs ^ e) +void GraphingCalculator::Canvas_SizeChanged(Object ^ /*sender*/, SizeChangedEventArgs ^ e) { // Initialize the pointer to the correct location to match initial value in GraphControl\DirectX\RenderMain.cpp - Canvas::SetLeft(TracePointer, e->NewSize.Width / 2 + 40); - Canvas::SetTop(TracePointer, e->NewSize.Height / 2 - 40); + if (TracePointer != nullptr) + { + Canvas::SetLeft(TracePointer, e->NewSize.Width / 2 + 40); + Canvas::SetTop(TracePointer, e->NewSize.Height / 2 - 40); + } } void GraphingCalculator::OnHighContrastChanged(AccessibilitySettings ^ sender, Object ^ /*args*/) diff --git a/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml.h b/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml.h index 38f76aaa..2960daa1 100644 --- a/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml.h +++ b/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml.h @@ -86,9 +86,9 @@ public ref class GraphingCalculator sealed : public Windows::UI::Xaml::Data::INo Windows::Foundation::EventRegistrationToken m_ActiveTracingPointerCaptureLost; CalculatorApp::ViewModel::GraphingCalculatorViewModel ^ m_viewModel; Windows::UI::ViewManagement::AccessibilitySettings ^ m_accessibilitySettings; - void - OnSettingsFlyout_Closing(Windows::UI::Xaml::Controls::Primitives::FlyoutBase ^ sender, Windows::UI::Xaml::Controls::Primitives::FlyoutBaseClosingEventArgs ^ args); - void LeftGrid_SizeChanged(Platform::Object ^ sender, Windows::UI::Xaml::SizeChangedEventArgs ^ e); + bool m_cursorShadowInitialized; + void OnSettingsFlyout_Closing(Windows::UI::Xaml::Controls::Primitives::FlyoutBase ^ sender, Windows::UI::Xaml::Controls::Primitives::FlyoutBaseClosingEventArgs ^ args); + void Canvas_SizeChanged(Platform::Object ^ sender, Windows::UI::Xaml::SizeChangedEventArgs ^ e); void OnHighContrastChanged(Windows::UI::ViewManagement::AccessibilitySettings ^ sender, Platform::Object ^ args); void OnEquationFormatRequested(Platform::Object ^ sender, CalculatorApp::Controls::MathRichEditBoxFormatRequest ^ e); };