diff options
author | Michael Stahl <mstahl@redhat.com> | 2017-09-22 11:13:39 +0200 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2017-09-22 17:59:36 +0200 |
commit | 8b690f22c9deb6d1171328dfe5607d4c673dc993 (patch) | |
tree | a7fa3f5c5d4b0b4fd2db338df001c078eb61dbbc | |
parent | c75a3ffd88732f424f8f557c94e580ecc54f551f (diff) |
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 <ci@libreoffice.org>
Reviewed-by: Michael Stahl <mstahl@redhat.com>
-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]; |