diff options
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/inc/svdata.hxx | 5 | ||||
-rw-r--r-- | vcl/source/control/field2.cxx | 12 | ||||
-rw-r--r-- | vcl/source/window/dlgctrl.cxx | 5 |
3 files changed, 14 insertions, 8 deletions
diff --git a/vcl/inc/svdata.hxx b/vcl/inc/svdata.hxx index 65e1c1010b36..a1d6fbb5beb1 100644 --- a/vcl/inc/svdata.hxx +++ b/vcl/inc/svdata.hxx @@ -28,6 +28,7 @@ #include <vcl/window.hxx> #include <com/sun/star/lang/XComponent.hpp> +#include <com/sun/star/i18n/XCharacterClassification.hpp> #include "vcleventlisteners.hxx" #include "impfontcache.hxx" @@ -361,9 +362,13 @@ struct ImplSVData std::list< vcl::DeleteOnDeinitBase* >* mpDeinitDeleteList = nullptr; std::unordered_map< int, OUString >* mpPaperNames = nullptr; + css::uno::Reference<css::i18n::XCharacterClassification> m_xCharClass; + Link<LinkParamNone*,void> maDeInitHook; }; +css::uno::Reference<css::i18n::XCharacterClassification> const& ImplGetCharClass(); + void ImplDeInitSVData(); VCL_PLUGIN_PUBLIC vcl::Window* ImplGetDefaultWindow(); VCL_PLUGIN_PUBLIC vcl::Window* ImplGetDefaultContextWindow(); diff --git a/vcl/source/control/field2.cxx b/vcl/source/control/field2.cxx index 3712fc004d24..87885679dead 100644 --- a/vcl/source/control/field2.cxx +++ b/vcl/source/control/field2.cxx @@ -58,11 +58,15 @@ using namespace ::comphelper; uno::Reference< i18n::XCharacterClassification > const & ImplGetCharClass() { - static uno::Reference< i18n::XCharacterClassification > xCharClass; - if ( !xCharClass.is() ) - xCharClass = vcl::unohelper::CreateCharacterClassification(); + ImplSVData *const pSVData = ImplGetSVData(); + assert(pSVData); - return xCharClass; + if (!pSVData->m_xCharClass.is()) + { + pSVData->m_xCharClass = vcl::unohelper::CreateCharacterClassification(); + } + + return pSVData->m_xCharClass; } static sal_Unicode* ImplAddString( sal_Unicode* pBuf, const OUString& rStr ) diff --git a/vcl/source/window/dlgctrl.cxx b/vcl/source/window/dlgctrl.cxx index 703b547423ce..6b2ae73ba503 100644 --- a/vcl/source/window/dlgctrl.cxx +++ b/vcl/source/window/dlgctrl.cxx @@ -390,10 +390,7 @@ vcl::Window* ImplFindAccelWindow( vcl::Window* pParent, sal_uInt16& rIndex, sal_ sal_uInt16 i = rIndex; vcl::Window* pWindow; - // MT: Where can we keep the CharClass?! - static uno::Reference< i18n::XCharacterClassification > xCharClass; - if ( !xCharClass.is() ) - xCharClass = vcl::unohelper::CreateCharacterClassification(); + uno::Reference<i18n::XCharacterClassification> const xCharClass(ImplGetCharClass()); const css::lang::Locale& rLocale = Application::GetSettings().GetUILanguageTag().getLocale(); cCharCode = xCharClass->toUpper( OUString(cCharCode), 0, 1, rLocale )[0]; |