From 0d31d5a5a229b597297ed8339e3283b0e6d0b28c Mon Sep 17 00:00:00 2001 From: Rudy Huyn Date: Fri, 19 Apr 2019 18:37:50 -0700 Subject: [PATCH] Fix UI issues with UnitConverter in RtL (#410) Fix #409 - Some content in Currency Converter not right-aligned properly in RtL Fix #59 Currency symbol precedence is opposite of system setting in RTL languages Description of the changes: Add a property FlowDirectionHorizontalAlignment in UnitConverter to align some controls to the right (without modifying the FlowDirection of their parent items) Force FlowDirection of Value1Container and Value2Container to LeftToRight (but align panels to the right) How changes were validated: Tested with LtR and RtL languages and with currency symbols on the left and on the right. --- src/Calculator/Views/UnitConverter.xaml | 12 ++++++------ src/Calculator/Views/UnitConverter.xaml.cpp | 11 +++-------- src/Calculator/Views/UnitConverter.xaml.h | 3 ++- 3 files changed, 11 insertions(+), 15 deletions(-) diff --git a/src/Calculator/Views/UnitConverter.xaml b/src/Calculator/Views/UnitConverter.xaml index 28dea2e6..1d52c3eb 100644 --- a/src/Calculator/Views/UnitConverter.xaml +++ b/src/Calculator/Views/UnitConverter.xaml @@ -476,9 +476,8 @@ @@ -511,6 +510,7 @@ @@ -564,6 +563,7 @@ GetFlowDirection(); + m_FlowDirectionHorizontalAlignment = m_layoutDirection == ::FlowDirection::RightToLeft ? ::HorizontalAlignment::Right : ::HorizontalAlignment::Left; + InitializeComponent(); // adding ESC key shortcut binding to clear button ClearEntryButtonPos0->SetValue(Common::KeyboardShortcutManager::VirtualKeyProperty, Common::MyVirtualKey::Escape); - m_layoutDirection = LocalizationService::GetInstance()->GetFlowDirection(); - if (m_layoutDirection == ::FlowDirection::RightToLeft) - { - Units1->HorizontalContentAlignment = ::HorizontalAlignment::Right; - Units2->HorizontalContentAlignment = ::HorizontalAlignment::Right; - } - // Is currency symbol preference set to right side bool preferRight = LocalizationSettings::GetInstance().GetCurrencySymbolPrecedence() == 0; VisualStateManager::GoToState(this, preferRight ? "CurrencySymbolRightState" : "CurrencySymbolLeftState", false); diff --git a/src/Calculator/Views/UnitConverter.xaml.h b/src/Calculator/Views/UnitConverter.xaml.h index df370eaa..65545fbb 100644 --- a/src/Calculator/Views/UnitConverter.xaml.h +++ b/src/Calculator/Views/UnitConverter.xaml.h @@ -1,4 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. +// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. // UnitConverter.xaml.h @@ -22,6 +22,7 @@ namespace CalculatorApp public: UnitConverter(); DEPENDENCY_PROPERTY_OWNER(UnitConverter); + PROPERTY_R(Windows::UI::Xaml::HorizontalAlignment, FlowDirectionHorizontalAlignment); void AnimateConverter();