From 8b690f22c9deb6d1171328dfe5607d4c673dc993 Mon Sep 17 00:00:00 2001 From: Michael Stahl Date: Fri, 22 Sep 2017 11:13:39 +0200 Subject: vcl: [loplugin:badstatics] xCharClass There's even 2 of these; move them to struct ImplSVData which is deleted on shutdown. Change-Id: I8040cd6f9f31c0a1ab48987a490395f316d52220 Reviewed-on: https://gerrit.libreoffice.org/42630 Tested-by: Jenkins Reviewed-by: Michael Stahl --- vcl/inc/svdata.hxx | 5 +++++ vcl/source/control/field2.cxx | 12 ++++++++---- 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 #include +#include #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 m_xCharClass; + Link maDeInitHook; }; +css::uno::Reference 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 const xCharClass(ImplGetCharClass()); const css::lang::Locale& rLocale = Application::GetSettings().GetUILanguageTag().getLocale(); cCharCode = xCharClass->toUpper( OUString(cCharCode), 0, 1, rLocale )[0]; -- cgit