52 #include <com/sun/star/accessibility/MSAAService.hpp>
54 #include <config_features.h>
64 struct private_aImplSVData :
65 public rtl::Static<ImplSVData, private_aImplSVData> {};
67 struct private_aImplSVHelpData :
68 public rtl::Static<ImplSVHelpData, private_aImplSVHelpData> {};
71 struct private_aImplSVWinData :
72 public rtl::Static<ImplSVWinData, private_aImplSVWinData> {};
77 return &private_aImplSVData::get();
104 typedef ::std::map< basegfx::SystemDependentData_SharedPtr, sal_uInt32 > EntryMap;
109 std::unique_ptr<AutoTimer> maTimer;
115 SystemDependentDataBuffer(
const char* pDebugName)
118 maTimer->SetTimeout(1000);
119 maTimer->SetInvokeHandler(
LINK(
this, SystemDependentDataBuffer, implTimeoutHdl));
122 virtual ~SystemDependentDataBuffer()
override
129 ::osl::MutexGuard aGuard(m_aMutex);
130 EntryMap::iterator aFound(maEntries.find(rData));
132 if(aFound == maEntries.end())
134 if(maTimer && !maTimer->IsActive())
139 maEntries[rData] = rData->calculateCombinedHoldCyclesInSeconds();
145 ::osl::MutexGuard aGuard(m_aMutex);
146 EntryMap::iterator aFound(maEntries.find(rData));
148 if(aFound != maEntries.end())
150 maEntries.erase(aFound);
156 ::osl::MutexGuard aGuard(m_aMutex);
157 EntryMap::iterator aFound(maEntries.find(rData));
159 if(aFound != maEntries.end())
161 aFound->second = rData->calculateCombinedHoldCyclesInSeconds();
165 void flushAll()
override
167 ::osl::MutexGuard aGuard(m_aMutex);
181 ::osl::MutexGuard aGuard(m_aMutex);
182 EntryMap::iterator aIter(maEntries.begin());
184 while(aIter != maEntries.end())
193 aIter = maEntries.erase(aIter);
197 if (maEntries.empty())
204 static SystemDependentDataBuffer aSystemDependentDataBuffer(
"vcl SystemDependentDataBuffer aSystemDependentDataBuffer");
206 return aSystemDependentDataBuffer;
233 SAL_INFO(
"vcl",
"ImplGetDefaultWindow(): No AppWindow" );
238 catch (
const css::uno::Exception&)
271 for (sal_uInt32
i = 0;
i < nUnits;
i++)
273 std::pair<OUString, FieldUnit> aElement(
VclResId(SV_FUNIT_STRINGS[
i].
first), SV_FUNIT_STRINGS[
i].second);
285 for (sal_uInt32
i = 0;
i < nUnits; ++
i)
287 if (rEnglishMetricString == SV_FUNIT_STRINGS[
i].
first.mpId)
288 return SV_FUNIT_STRINGS[i].second;
290 return FieldUnit::NONE;
300 size_t nUnits = rUnits.size();
302 for (
size_t i = 0;
i < nUnits; ++
i)
304 OUString aUnit(rUnits[
i].
first);
305 aUnit = aUnit.replaceAll(
" ",
"");
306 aUnit = aUnit.toAsciiLowerCase();
307 std::pair<OUString, FieldUnit> aElement(aUnit, rUnits[
i].second);
333 bool ImplInitAccessBridge()
340 if (!HasAtHook() && !getenv(
"SAL_FORCE_IACCESSIBLE2"))
342 SAL_INFO(
"vcl",
"Apparently no running AT -> "
343 "not enabling IAccessible2 integration");
349 = css::accessibility::MSAAService::create(xContext);
350 SAL_INFO(
"vcl",
"got IAccessible2 bridge");
352 }
catch (css::uno::DeploymentException &) {
355 "got no IAccessible2 bridge");
395 assert(pSVData !=
nullptr);
401 if (pSVData->
mpWinData == &private_aImplSVWinData::get())
409 pSVData->
mpWinData = &private_aImplSVWinData::get();
415 mpHelpData = &private_aImplSVHelpData::get();
416 mpWinData = &private_aImplSVWinData::get();
466 if (pSVData->
mpHelpData == &private_aImplSVHelpData::get())
474 pSVData->
mpHelpData = &private_aImplSVHelpData::get();
487 return private_aImplSVHelpData::get();
495 m_bUseSystemLoop = getenv(
"SAL_USE_SYSTEM_LOOP") !=
nullptr;
496 SAL_WARN_IF(m_bUseSystemLoop,
"vcl.schedule",
"Overriding to run LO on system event loop!");
ImplSVHelpData & ImplGetSVHelpData()
#define LINK(Instance, Class, Member)
DECL_LINK(CheckNameHdl, SvxNameDialog &, bool)
VclPtr< HelpTextWindow > mpHelpWin
std::unique_ptr< SalSystem > mpSalSystem
VclPtr< vcl::Window > mpFocusWin
const FieldUnitStringList & ImplGetCleanedFieldUnits()
void SetSVWinData(ImplSVWinData *pSVWinData)
std::unique_ptr< vcl::SettingsConfigItem > mpSettingsConfigItem
css::uno::Reference< css::lang::XComponent > mxAccessBridge
void DestroySVHelpData(ImplSVHelpData *pSVHelpData)
ImplSVHelpData * CreateSVHelpData()
BlendFrameCache * ImplGetBlendFrameCache()
ImplSVCtrlData maCtrlData
ImplSVHelpData * mpHelpData
std::unique_ptr< BlendFrameCache > mpBlendFrameCache
basegfx::SystemDependentDataManager & ImplGetSystemDependentDataManager()
OUString VclResId(TranslateId aId)
#define SAL_N_ELEMENTS(arr)
std::locale Create(std::string_view aPrefixName, const LanguageTag &rLocale)
FieldUnit EnglishStringToMetric(std::string_view rEnglishMetricString)
vcl::Window * ImplGetDefaultContextWindow()
returns the default window created to hold the persistent VCL GL context.
ImplSVData * ImplGetSVData()
An auto-timer is a multi-shot timer re-emitting itself at interval until destroyed or stopped...
SalSystem * ImplGetSalSystem()
#define TOOLS_WARN_EXCEPTION(area, stream)
virtual SalSystem * CreateSalSystem()=0
FieldUnitStringList maCleanUnitStrings
VclPtr< WorkWindow > mpAppWin
OUString get(TranslateId sContextAndId, const std::locale &loc)
static SAL_DLLPRIVATE void LocaleSettingsChanged(ConfigurationHints nHint)
void reset(reference_type *pBody)
const std::locale & ImplGetResLocale()
virtual void ConfigurationChanged(utl::ConfigurationBroadcaster *, ConfigurationHints) override
DockingManager * ImplGetDockingManager()
#define SAL_WARN_IF(condition, area, stream)
ImplSVFrameData maFrameData
#define SAL_INFO(area, stream)
void SetSVHelpData(ImplSVHelpData *pSVHelpData)
virtual void SetText(const OUString &rStr) override
static VclPtr< reference_type > Create(Arg &&...arg)
A construction helper for VclPtr.
void DestroySVWinData(ImplSVWinData *pData)
Reference< XComponentContext > getProcessComponentContext()
std::vector< std::pair< OUString, FieldUnit > > FieldUnitStringList
IMPL_LINK_NOARG(Animation, ImplTimeoutHdl, Timer *, void)
WinBits const WB_DEFAULTWIN
ImplSVWinData * CreateSVWinData()
FieldUnitStringList maFieldUnitStrings
std::unique_ptr< DockingManager > mpDockingManager
const FieldUnitStringList & ImplGetFieldUnits()
constexpr OUStringLiteral first
vcl::Window * ImplGetDefaultWindow()
Returns either the application window, or the default GL context window.
std::unordered_map< int, OUString > maPaperNames
void ImplDestroyHelpWindow(bool bUpdateHideTime)
ImplSVWinData * mpWinData
std::shared_ptr< SystemDependentData > SystemDependentData_SharedPtr
VclPtr< WorkWindow > mpDefaultWin