include/vcl/settings.hxx | 1 + svx/source/sidebar/possize/PosSizePropertyPanel.cxx | 6 ++++-- vcl/source/app/settings.cxx | 10 ++++++++++ vcl/source/control/field.cxx | 6 +++++- 4 files changed, 20 insertions(+), 3 deletions(-)
New commits: commit 5d6c71151e8c3ae710e4f57dccebf5f1073a399c Author: Henry Castro <hcas...@collabora.com> AuthorDate: Thu Apr 16 22:24:23 2020 -0400 Commit: Henry Castro <hcas...@collabora.com> CommitDate: Tue Apr 28 03:12:25 2020 +0200 lok: fix wrong metric conversion of the metric input control The client side does not work well if the browser has different locale, and the input element conversion fails or change to a different value, so the value is converted to a neutral locale. Change-Id: I89f96844603a8552609d486590c7de752cb5a95c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/92395 Reviewed-by: Henry Castro <hcas...@collabora.com> Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> diff --git a/include/vcl/settings.hxx b/include/vcl/settings.hxx index bd020ec0ee9a..61a960dacd8d 100644 --- a/include/vcl/settings.hxx +++ b/include/vcl/settings.hxx @@ -707,6 +707,7 @@ public: static bool GetMathLayoutRTL(); // returns true if UI language requires right-to-left Math Layout const LocaleDataWrapper& GetLocaleDataWrapper() const; const LocaleDataWrapper& GetUILocaleDataWrapper() const; + const LocaleDataWrapper& GetNeutroLocaleDataWrapper() const; const vcl::I18nHelper& GetLocaleI18nHelper() const; const vcl::I18nHelper& GetUILocaleI18nHelper() const; diff --git a/svx/source/sidebar/possize/PosSizePropertyPanel.cxx b/svx/source/sidebar/possize/PosSizePropertyPanel.cxx index 120b753a29d6..dc94e0d8603f 100644 --- a/svx/source/sidebar/possize/PosSizePropertyPanel.cxx +++ b/svx/source/sidebar/possize/PosSizePropertyPanel.cxx @@ -846,7 +846,7 @@ void PosSizePropertyPanel::NotifyItemUpdate( void PosSizePropertyPanel::GetControlState(const sal_uInt16 nSID, boost::property_tree::ptree& rState) { - VclPtr<vcl::Window> pControl; + VclPtr<MetricField> pControl; switch (nSID) { case SID_ATTR_TRANSFORM_POS_X: @@ -865,7 +865,9 @@ void PosSizePropertyPanel::GetControlState(const sal_uInt16 nSID, boost::propert if (pControl && !pControl->GetText().isEmpty()) { - rState.put(pControl->get_id().toUtf8().getStr(),pControl->GetText().toUtf8().getStr()); + OUString sValue = Application::GetSettings().GetNeutroLocaleDataWrapper(). + getNum(pControl->GetValue(), pControl->GetDecimalDigits(), false, false); + rState.put(pControl->get_id().toUtf8().getStr(), sValue.toUtf8().getStr()); } } diff --git a/vcl/source/app/settings.cxx b/vcl/source/app/settings.cxx index 7e15ab5bb4b8..a072d02e272b 100644 --- a/vcl/source/app/settings.cxx +++ b/vcl/source/app/settings.cxx @@ -233,6 +233,7 @@ struct ImplAllSettingsData LanguageTag maUILocale; std::unique_ptr<LocaleDataWrapper> mpLocaleDataWrapper; std::unique_ptr<LocaleDataWrapper> mpUILocaleDataWrapper; + std::unique_ptr<LocaleDataWrapper> mpNeutroLocaleDataWrapper; std::unique_ptr<vcl::I18nHelper> mpI18nHelper; std::unique_ptr<vcl::I18nHelper> mpUII18nHelper; SvtSysLocale maSysLocale; @@ -2639,6 +2640,7 @@ ImplAllSettingsData::~ImplAllSettingsData() { mpLocaleDataWrapper.reset(); mpUILocaleDataWrapper.reset(); + mpNeutroLocaleDataWrapper.reset(); mpI18nHelper.reset(); mpUII18nHelper.reset(); } @@ -2875,6 +2877,14 @@ const LocaleDataWrapper& AllSettings::GetUILocaleDataWrapper() const return *mxData->mpUILocaleDataWrapper; } +const LocaleDataWrapper& AllSettings::GetNeutroLocaleDataWrapper() const +{ + if ( !mxData->mpNeutroLocaleDataWrapper ) + const_cast<AllSettings*>(this)->mxData->mpNeutroLocaleDataWrapper.reset( new LocaleDataWrapper( + comphelper::getProcessComponentContext(), LanguageTag("en_US") ) ); + return *mxData->mpNeutroLocaleDataWrapper; +} + const vcl::I18nHelper& AllSettings::GetLocaleI18nHelper() const { if ( !mxData->mpI18nHelper ) { diff --git a/vcl/source/control/field.cxx b/vcl/source/control/field.cxx index 3e82d4f7d398..e75a55b52c5c 100644 --- a/vcl/source/control/field.cxx +++ b/vcl/source/control/field.cxx @@ -22,7 +22,7 @@ #include <osl/diagnose.h> #include <comphelper/string.hxx> - +#include <comphelper/lok.hxx> #include <vcl/dialog.hxx> #include <vcl/field.hxx> @@ -1708,6 +1708,10 @@ boost::property_tree::ptree MetricField::DumpAsPropertyTree() aTree.put("min", GetMin()); aTree.put("max", GetMax()); aTree.put("unit", FieldUnitToString(GetUnit())); + OUString sValue = Application::GetSettings().GetNeutroLocaleDataWrapper(). + getNum(GetValue(), GetDecimalDigits(), false, false); + aTree.put("value", sValue.toUtf8().getStr()); + return aTree; } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits