summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
Diffstat (limited to 'vcl')
-rw-r--r--vcl/inc/svdata.hxx5
-rw-r--r--vcl/source/control/field2.cxx12
-rw-r--r--vcl/source/window/dlgctrl.cxx5
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];