/src/libreoffice/vcl/inc/svdata.hxx
Line | Count | Source |
1 | | /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ |
2 | | /* |
3 | | * This file is part of the LibreOffice project. |
4 | | * |
5 | | * This Source Code Form is subject to the terms of the Mozilla Public |
6 | | * License, v. 2.0. If a copy of the MPL was not distributed with this |
7 | | * file, You can obtain one at http://mozilla.org/MPL/2.0/. |
8 | | * |
9 | | * This file incorporates work covered by the following license notice: |
10 | | * |
11 | | * Licensed to the Apache Software Foundation (ASF) under one or more |
12 | | * contributor license agreements. See the NOTICE file distributed |
13 | | * with this work for additional information regarding copyright |
14 | | * ownership. The ASF licenses this file to you under the Apache |
15 | | * License, Version 2.0 (the "License"); you may not use this file |
16 | | * except in compliance with the License. You may obtain a copy of |
17 | | * the License at http://www.apache.org/licenses/LICENSE-2.0 . |
18 | | */ |
19 | | |
20 | | #pragma once |
21 | | |
22 | | #include <sal/config.h> |
23 | | |
24 | | #include <o3tl/lru_map.hxx> |
25 | | #include <o3tl/hash_combine.hxx> |
26 | | #include <o3tl/sorted_vector.hxx> |
27 | | #include <osl/conditn.hxx> |
28 | | #include <tools/fldunit.hxx> |
29 | | #include <unotools/options.hxx> |
30 | | #include <vcl/bitmap.hxx> |
31 | | #include <vcl/cvtgrf.hxx> |
32 | | #include <vcl/dropcache.hxx> |
33 | | #include <vcl/image.hxx> |
34 | | #include <vcl/settings.hxx> |
35 | | #include <vcl/svapp.hxx> |
36 | | #include <vcl/print.hxx> |
37 | | #include <vcl/uitest/logger.hxx> |
38 | | #include <vcl/virdev.hxx> |
39 | | #include <vcl/wrkwin.hxx> |
40 | | #include <vcl/window.hxx> |
41 | | #include <vcl/task.hxx> |
42 | | #include <LibreOfficeKit/LibreOfficeKitTypes.h> |
43 | | #include <unotools/resmgr.hxx> |
44 | | |
45 | | #include <com/sun/star/lang/XComponent.hpp> |
46 | | #include <com/sun/star/i18n/XCharacterClassification.hpp> |
47 | | #include "vcleventlisteners.hxx" |
48 | | #include "print.h" |
49 | | #include "salwtype.hxx" |
50 | | #include "windowdev.hxx" |
51 | | #include "displayconnectiondispatch.hxx" |
52 | | |
53 | | #include <atomic> |
54 | | #include <list> |
55 | | #include <mutex> |
56 | | #include <optional> |
57 | | #include <vector> |
58 | | #include <unordered_map> |
59 | | #include <unordered_set> |
60 | | #include "schedulerimpl.hxx" |
61 | | #include <basegfx/DrawCommands.hxx> |
62 | | |
63 | | struct ImplPostEventData; |
64 | | struct ImplTimerData; |
65 | | struct ImplIdleData; |
66 | | struct ImplConfigData; |
67 | | namespace rtl |
68 | | { |
69 | | class OStringBuffer; |
70 | | } |
71 | | namespace vcl::font |
72 | | { |
73 | | class DirectFontSubstitution; |
74 | | class PhysicalFontCollection; |
75 | | } |
76 | | struct BlendFrameCache; |
77 | | struct ImplHotKey; |
78 | | struct ImplEventHook; |
79 | | class Point; |
80 | | class ImplAccelManager; |
81 | | class ImplFontCache; |
82 | | class HelpTextWindow; |
83 | | class ImplTBDragMgr; |
84 | | class ImplIdleMgr; |
85 | | class FloatingWindow; |
86 | | class AllSettings; |
87 | | class NotifyEvent; |
88 | | class Timer; |
89 | | class AutoTimer; |
90 | | class Idle; |
91 | | class Help; |
92 | | class PopupMenu; |
93 | | class Application; |
94 | | class OutputDevice; |
95 | | class SvFileStream; |
96 | | class SystemWindow; |
97 | | class WorkWindow; |
98 | | class Dialog; |
99 | | class VirtualDevice; |
100 | | class Printer; |
101 | | class SalFrame; |
102 | | class SalInstance; |
103 | | class SalSystem; |
104 | | class ImplPrnQueueList; |
105 | | class UnoWrapperBase; |
106 | | class GraphicConverter; |
107 | | class ImplWheelWindow; |
108 | | class SalTimer; |
109 | | class DockingManager; |
110 | | class VclEventListeners2; |
111 | | class SalData; |
112 | | class OpenGLContext; |
113 | | class UITestLogger; |
114 | | |
115 | | #define SV_ICON_ID_OFFICE 1 |
116 | | #define SV_ICON_ID_TEXT 2 |
117 | | #define SV_ICON_ID_TEXT_TEMPLATE 3 |
118 | | #define SV_ICON_ID_SPREADSHEET 4 |
119 | | #define SV_ICON_ID_SPREADSHEET_TEMPLATE 5 |
120 | | #define SV_ICON_ID_DRAWING 6 |
121 | | #define SV_ICON_ID_PRESENTATION 8 |
122 | | #define SV_ICON_ID_MASTER_DOCUMENT 10 |
123 | | #define SV_ICON_ID_TEMPLATE 11 |
124 | | #define SV_ICON_ID_DATABASE 12 |
125 | | #define SV_ICON_ID_FORMULA 13 |
126 | | |
127 | | const FloatWinPopupFlags LISTBOX_FLOATWINPOPUPFLAGS = FloatWinPopupFlags::Down | |
128 | | FloatWinPopupFlags::NoHorzPlacement | FloatWinPopupFlags::AllMouseButtonClose; |
129 | | |
130 | | namespace com::sun::star::datatransfer::clipboard { class XClipboard; } |
131 | | |
132 | | namespace vcl |
133 | | { |
134 | | class DisplayConnectionDispatch; |
135 | | class Window; |
136 | | } |
137 | | |
138 | | namespace basegfx |
139 | | { |
140 | | class SystemDependentDataManager; |
141 | | } |
142 | | |
143 | | class LocaleConfigurationListener final : public utl::ConfigurationListener |
144 | | { |
145 | | public: |
146 | | virtual void ConfigurationChanged( utl::ConfigurationBroadcaster*, ConfigurationHints ) override; |
147 | | }; |
148 | | |
149 | | typedef std::pair<VclPtr<vcl::Window>, ImplPostEventData *> ImplPostEventPair; |
150 | | |
151 | | struct ImplSVAppData |
152 | | { |
153 | | ImplSVAppData(); |
154 | | ~ImplSVAppData(); |
155 | | |
156 | | std::optional<AllSettings> mxSettings; // Application settings |
157 | | LocaleConfigurationListener* mpCfgListener = nullptr; |
158 | | VclEventListeners maEventListeners; // listeners for vcl events (eg, extended toolkit) |
159 | | std::vector<Link<VclWindowEvent&,bool> > |
160 | | maKeyListeners; // listeners for key events only (eg, extended toolkit) |
161 | | std::vector<ImplPostEventPair> maPostedEventList; |
162 | | ImplAccelManager* mpAccelMgr = nullptr; // Accelerator Manager |
163 | | std::optional<OUString> mxAppName; // Application name |
164 | | std::optional<OUString> mxAppFileName; // Abs. Application FileName |
165 | | std::optional<OUString> mxDisplayName; // Application Display Name |
166 | | Help* mpHelp = nullptr; // Application help |
167 | | VclPtr<PopupMenu> mpActivePopupMenu; // Actives Popup-Menu (in Execute) |
168 | | VclPtr<ImplWheelWindow> mpWheelWindow; // WheelWindow |
169 | | sal_uInt64 mnLastInputTime = 0; // GetLastInputTime() |
170 | | sal_uInt16 mnDispatchLevel = 0; // DispatchLevel |
171 | | sal_uInt16 mnModalMode = 0; // ModalMode Count |
172 | | SystemWindowFlags mnSysWinMode = SystemWindowFlags(0); // Mode, when SystemWindows should be created |
173 | | bool mbInAppMain = false; // is Application::Main() on stack |
174 | | bool mbInAppExecute = false; // is Application::Execute() on stack |
175 | | std::atomic<bool> mbAppQuit = false; // is Application::Quit() called, volatile because we read/write from different threads |
176 | | bool mbSettingsInit = false; // true: Settings are initialized |
177 | | DialogCancelMode meDialogCancel = DialogCancelMode::Off; // true: All Dialog::Execute() calls will be terminated immediately with return false |
178 | | bool mbRenderToBitmaps = false; // set via svp / headless plugin |
179 | | bool m_bUseSystemLoop = false; |
180 | | |
181 | | DECL_STATIC_LINK(ImplSVAppData, ImplQuitMsg, void*, void); |
182 | | }; |
183 | | |
184 | | /// Cache multiple scalings for the same bitmap |
185 | | struct ScaleCacheKey { |
186 | | SalBitmap *mpBitmap; |
187 | | Size maDestSize; |
188 | | ScaleCacheKey(SalBitmap *pBitmap, const Size &aDestSize) |
189 | 1.92k | { |
190 | 1.92k | mpBitmap = pBitmap; |
191 | 1.92k | maDestSize = aDestSize; |
192 | 1.92k | } |
193 | | ScaleCacheKey(const ScaleCacheKey &key) |
194 | 5.77k | { |
195 | 5.77k | mpBitmap = key.mpBitmap; |
196 | 5.77k | maDestSize = key.maDestSize; |
197 | 5.77k | } |
198 | | bool operator==(ScaleCacheKey const& rOther) const |
199 | 1.92k | { |
200 | 1.92k | return mpBitmap == rOther.mpBitmap && maDestSize == rOther.maDestSize; |
201 | 1.92k | } |
202 | | }; |
203 | | |
204 | | namespace std |
205 | | { |
206 | | template <> struct hash<ScaleCacheKey> |
207 | | { |
208 | | std::size_t operator()(ScaleCacheKey const& k) const noexcept |
209 | 7.26k | { |
210 | 7.26k | std::size_t seed = 0; |
211 | 7.26k | o3tl::hash_combine(seed, k.mpBitmap); |
212 | 7.26k | o3tl::hash_combine(seed, k.maDestSize.getWidth()); |
213 | 7.26k | o3tl::hash_combine(seed, k.maDestSize.getHeight()); |
214 | 7.26k | return seed; |
215 | 7.26k | } |
216 | | }; |
217 | | |
218 | | } // end std namespace |
219 | | |
220 | | typedef o3tl::lru_map<ScaleCacheKey, Bitmap> lru_scale_cache; |
221 | | |
222 | | struct ImplSVGDIData |
223 | | { |
224 | | ~ImplSVGDIData(); |
225 | | |
226 | | VclPtr<vcl::WindowOutputDevice> mpFirstWinGraphics; // First OutputDevice with a Frame Graphics |
227 | | VclPtr<vcl::WindowOutputDevice> mpLastWinGraphics; // Last OutputDevice with a Frame Graphics |
228 | | VclPtr<OutputDevice> mpFirstVirGraphics; // First OutputDevice with a VirtualDevice Graphics |
229 | | VclPtr<OutputDevice> mpLastVirGraphics; // Last OutputDevice with a VirtualDevice Graphics |
230 | | VclPtr<Printer> mpFirstPrnGraphics; // First OutputDevice with an InfoPrinter Graphics |
231 | | VclPtr<Printer> mpLastPrnGraphics; // Last OutputDevice with an InfoPrinter Graphics |
232 | | VclPtr<VirtualDevice> mpFirstVirDev; // First VirtualDevice |
233 | | std::list<OpenGLContext*> maOpenGLContexts; // OpenGL contexts |
234 | | VclPtr<Printer> mpFirstPrinter; // First Printer |
235 | | std::unique_ptr<ImplPrnQueueList> mpPrinterQueueList; // List of all printer queue |
236 | | std::shared_ptr<vcl::font::PhysicalFontCollection> mxScreenFontList; // Screen-Font-List |
237 | | std::shared_ptr<ImplFontCache> mxScreenFontCache; // Screen-Font-Cache |
238 | | lru_scale_cache maScaleCache = lru_scale_cache(10); // Cache for scaled images |
239 | | vcl::font::DirectFontSubstitution* mpDirectFontSubst = nullptr; // Font-Substitutions defined in Tools->Options->Fonts |
240 | | std::unique_ptr<GraphicConverter> mxGrfConverter; // Converter for graphics |
241 | | tools::Long mnAppFontX = 0; // AppFont X-Numenator for 40/tel Width |
242 | | tools::Long mnAppFontY = 0; // AppFont Y-Numenator for 80/tel Height |
243 | | bool mbFontSubChanged = false; // true: FontSubstitution was changed between Begin/End |
244 | | |
245 | | o3tl::lru_map<OUString, Bitmap> maThemeImageCache = o3tl::lru_map<OUString, Bitmap>(10); |
246 | | o3tl::lru_map<OUString, gfx::DrawRoot> maThemeDrawCommandsCache = o3tl::lru_map<OUString, gfx::DrawRoot>(50); |
247 | | }; |
248 | | |
249 | | struct ImplSVFrameData |
250 | | { |
251 | | ~ImplSVFrameData(); |
252 | | VclPtr<vcl::Window> mpFirstFrame; // First FrameWindow |
253 | | VclPtr<vcl::Window> mpActiveApplicationFrame; // the last active application frame, can be used as DefModalDialogParent if no focuswin set |
254 | | VclPtr<WorkWindow> mpAppWin; // Application-Window |
255 | | |
256 | | std::unique_ptr<UITestLogger> m_pUITestLogger; |
257 | | }; |
258 | | |
259 | | struct ImplSVWinData |
260 | | { |
261 | | ~ImplSVWinData(); |
262 | | VclPtr<vcl::Window> mpFocusWin; // window, that has the focus |
263 | | VclPtr<vcl::Window> mpCaptureWin; // window, that has the mouse capture |
264 | | VclPtr<vcl::Window> mpLastDeacWin; // Window, that need a deactivate (FloatingWindow-Handling) |
265 | | VclPtr<FloatingWindow> mpFirstFloat; // First FloatingWindow in PopupMode |
266 | | std::vector<VclPtr<Dialog>> mpExecuteDialogs; ///< Stack of dialogs that are Execute()'d - the last one is the top most one. |
267 | | VclPtr<vcl::Window> mpExtTextInputWin; // Window, which is in ExtTextInput |
268 | | VclPtr<vcl::Window> mpTrackWin; // window, that is in tracking mode |
269 | | std::unique_ptr<AutoTimer> mpTrackTimer; // tracking timer |
270 | | std::vector<Image> maMsgBoxImgList; // ImageList for MessageBox |
271 | | VclPtr<vcl::Window> mpAutoScrollWin; // window, that is in AutoScrollMode mode |
272 | | VclPtr<vcl::Window> mpLastWheelWindow; // window, that last received a mouse wheel event |
273 | | SalWheelMouseEvent maLastWheelEvent; // the last received mouse wheel event |
274 | | |
275 | | StartTrackingFlags mnTrackFlags = StartTrackingFlags::NONE; // tracking flags |
276 | | StartAutoScrollFlags mnAutoScrollFlags = StartAutoScrollFlags::NONE; // auto scroll flags |
277 | | bool mbNoDeactivate = false; // true: do not execute Deactivate |
278 | | bool mbNoSaveFocus = false; // true: menus must not save/restore focus |
279 | | bool mbIsLiveResize = false; // true: skip waiting for events and low priority timers |
280 | | bool mbIsWaitingForNativeEvent = false; // true: code is executing via a native callback while waiting for the next native event |
281 | | }; |
282 | | |
283 | | typedef std::vector< std::pair< OUString, FieldUnit > > FieldUnitStringList; |
284 | | |
285 | | struct ImplSVCtrlData |
286 | | { |
287 | | std::vector<Image> maCheckImgList; // ImageList for CheckBoxes |
288 | | std::vector<Image> maRadioImgList; // ImageList for RadioButtons |
289 | | std::optional<Image> moDisclosurePlus; |
290 | | std::optional<Image> moDisclosureMinus; |
291 | | ImplTBDragMgr* mpTBDragMgr = nullptr; // DragMgr for ToolBox |
292 | | sal_uInt16 mnCheckStyle = 0; // CheckBox-Style for ImageList-Update |
293 | | sal_uInt16 mnRadioStyle = 0; // Radio-Style for ImageList-Update |
294 | | Color mnLastCheckFColor; // Last FaceColor for CheckImage |
295 | | Color mnLastCheckWColor; // Last WindowColor for CheckImage |
296 | | Color mnLastCheckLColor; // Last LightColor for CheckImage |
297 | | Color mnLastRadioFColor; // Last FaceColor for RadioImage |
298 | | Color mnLastRadioWColor; // Last WindowColor for RadioImage |
299 | | Color mnLastRadioLColor; // Last LightColor for RadioImage |
300 | | FieldUnitStringList maFieldUnitStrings; // list with field units |
301 | | FieldUnitStringList maCleanUnitStrings; // same list but with some "fluff" like spaces removed |
302 | | }; |
303 | | |
304 | | struct ImplSVHelpData |
305 | | { |
306 | | ~ImplSVHelpData(); |
307 | | bool mbContextHelp = false; // is ContextHelp enabled |
308 | | bool mbExtHelp = false; // is ExtendedHelp enabled |
309 | | bool mbExtHelpMode = false; // is in ExtendedHelp Mode |
310 | | bool mbOldBalloonMode = false; // BalloonMode, before ExtHelpMode started |
311 | | bool mbBalloonHelp = false; // is BalloonHelp enabled |
312 | | bool mbQuickHelp = false; // is QuickHelp enabled |
313 | | bool mbSetKeyboardHelp = false; // tiphelp was activated by keyboard |
314 | | bool mbKeyboardHelp = false; // tiphelp was activated by keyboard |
315 | | bool mbRequestingHelp = false; // In Window::RequestHelp |
316 | | VclPtr<HelpTextWindow> mpHelpWin; // HelpWindow |
317 | | sal_uInt64 mnLastHelpHideTime = 0; // ticks of last show |
318 | | }; |
319 | | |
320 | | // "NWF" means "Native Widget Framework" and was the term used for the |
321 | | // idea that StarView/OOo "widgets" should *look* (and feel) like the |
322 | | // "native widgets" on each platform, even if not at all implemented |
323 | | // using them. See http://people.redhat.com/dcbw/ooo-nwf.html . |
324 | | |
325 | | struct ImplSVNWFData |
326 | | { |
327 | | int mnStatusBarLowerRightOffset = 0; // amount in pixel to avoid in the lower righthand corner |
328 | | int mnMenuFormatBorderX = 0; // horizontal inner popup menu border |
329 | | int mnMenuFormatBorderY = 0; // vertical inner popup menu border |
330 | | ::Color maMenuBarHighlightTextColor = COL_TRANSPARENT; // override highlight text color |
331 | | // in menubar if not transparent |
332 | | bool mbMenuBarDockingAreaCommonBG = false; // e.g. WinXP default theme |
333 | | bool mbDockingAreaSeparateTB = false; // individual toolbar backgrounds |
334 | | // instead of one for docking area |
335 | | bool mbDockingAreaAvoidTBFrames = false; ///< don't draw frames around the individual toolbars if mbDockingAreaSeparateTB is false |
336 | | bool mbFlatMenu = false; // no popup 3D border |
337 | | bool mbNoFocusRects = false; // on Aqua/Gtk3 use native focus rendering, except for flat buttons |
338 | | bool mbNoFocusRectsForFlatButtons = false; // on Gtk3 native focusing is also preferred for flat buttons |
339 | | bool mbNoFrameJunctionForPopups = false; // on Gtk4 popups are done via popovers and a toolbar menu won't align to its toolitem, so |
340 | | // omit the effort the creation a visual junction |
341 | | bool mbCenteredTabs = false; // on Aqua, tabs are centered |
342 | | bool mbNoActiveTabTextRaise = false; // on Aqua the text for the selected tab |
343 | | // should not "jump up" a pixel |
344 | | bool mbProgressNeedsErase = false; // set true for platforms that should draw the |
345 | | // window background before drawing the native |
346 | | // progress bar |
347 | | bool mbCanDrawWidgetAnySize = false; // set to true currently on gtk |
348 | | |
349 | | /// entire drop down listbox resembles a button, no textarea/button parts (as currently on Windows) |
350 | | bool mbDDListBoxNoTextArea = false; |
351 | | bool mbAutoAccel = false; // whether accelerators are only shown when Alt is held down |
352 | | bool mbRolloverMenubar = false; // theming engine supports rollover in menubar |
353 | | // gnome#768128 I cannot see a route under wayland at present to support |
354 | | // floating toolbars that can be redocked because there's no way to track |
355 | | // that the toolbar is over a dockable area. |
356 | | bool mbCanDetermineWindowPosition = true; |
357 | | |
358 | | int mnListBoxEntryMargin = 0; |
359 | | }; |
360 | | |
361 | | struct ImplSchedulerContext |
362 | | { |
363 | | ImplSchedulerData* mpFirstSchedulerData[PRIO_COUNT] = { nullptr, }; ///< list of all active tasks per priority |
364 | | ImplSchedulerData* mpLastSchedulerData[PRIO_COUNT] = { nullptr, }; ///< last item of each mpFirstSchedulerData list |
365 | | ImplSchedulerData* mpSchedulerStack = nullptr; ///< stack of invoked tasks |
366 | | ImplSchedulerData* mpSchedulerStackTop = nullptr; ///< top most stack entry to detect needed rescheduling during pop |
367 | | SalTimer* mpSalTimer = nullptr; ///< interface to sal event loop / system timer |
368 | | sal_uInt64 mnTimerStart = 0; ///< start time of the timer |
369 | | sal_uInt64 mnTimerPeriod = SAL_MAX_UINT64; ///< current timer period |
370 | | std::mutex maMutex; ///< the "scheduler mutex" (see |
371 | | ///< vcl/README.scheduler) |
372 | | bool mbActive = true; ///< is the scheduler active? |
373 | | oslInterlockedCount mnIdlesLockCount = 0; ///< temporary ignore idles |
374 | | }; |
375 | | |
376 | | struct ImplSVData |
377 | | { |
378 | | ImplSVData(); |
379 | | ~ImplSVData(); |
380 | | SalData* mpSalData = nullptr; |
381 | | SalInstance* mpDefInst = nullptr; // Default SalInstance |
382 | | Application* mpApp = nullptr; // pApp |
383 | | VclPtr<WorkWindow> mpDefaultWin; // Default-Window |
384 | | bool mbDeInit = false; // Is VCL deinitializing |
385 | | std::unique_ptr<SalSystem> mpSalSystem; // SalSystem interface |
386 | | bool mbResLocaleSet = false; // SV-Resource-Manager |
387 | | std::locale maResLocale; // Resource locale |
388 | | ImplSchedulerContext maSchedCtx; // Data for class Scheduler |
389 | | ImplSVAppData maAppData; // Data for class Application |
390 | | ImplSVGDIData maGDIData; // Data for Output classes |
391 | | ImplSVFrameData maFrameData; // Data for Frame classes |
392 | | ImplSVWinData* mpWinData = nullptr; // Data for per-view Windows classes |
393 | | ImplSVCtrlData maCtrlData; // Data for Control classes |
394 | | ImplSVHelpData* mpHelpData; // Data for Help classes |
395 | | ImplSVNWFData maNWFData; |
396 | | UnoWrapperBase* mpUnoWrapper = nullptr; |
397 | | VclPtr<vcl::Window> mpIntroWindow; // the splash screen |
398 | | std::unique_ptr<DockingManager> mpDockingManager; |
399 | | std::unique_ptr<BlendFrameCache> mpBlendFrameCache; |
400 | | |
401 | | oslThreadIdentifier mnMainThreadId = 0; |
402 | | rtl::Reference< vcl::DisplayConnectionDispatch > mxDisplayConnection; |
403 | | |
404 | | css::uno::Reference< css::lang::XComponent > mxAccessBridge; |
405 | | std::unordered_map< int, OUString > maPaperNames; |
406 | | std::unordered_set<CacheOwner*> maCacheOwners; |
407 | | |
408 | | css::uno::Reference<css::i18n::XCharacterClassification> m_xCharClass; |
409 | | |
410 | | #if defined _WIN32 |
411 | | css::uno::Reference<css::datatransfer::clipboard::XClipboard> m_xSystemClipboard; |
412 | | #endif |
413 | | |
414 | | osl::Condition m_inExecuteCondtion; // Set when code returns to Application::Execute, |
415 | | // i.e. no nested message loops run |
416 | | |
417 | | Link<LinkParamNone*,void> maDeInitHook; |
418 | | |
419 | | // LOK & headless backend specific hooks |
420 | | LibreOfficeKitPollCallback mpPollCallback = nullptr; |
421 | | LibreOfficeKitWakeCallback mpWakeCallback = nullptr; |
422 | | void *mpPollClosure = nullptr; |
423 | | |
424 | | void registerCacheOwner(CacheOwner&); |
425 | | void deregisterCacheOwner(CacheOwner&); |
426 | | void dropCaches(); |
427 | | void dumpState(rtl::OStringBuffer &rState); |
428 | | }; |
429 | | |
430 | | css::uno::Reference<css::i18n::XCharacterClassification> const& ImplGetCharClass(); |
431 | | |
432 | | void ImplDeInitSVData(); |
433 | | VCL_PLUGIN_PUBLIC basegfx::SystemDependentDataManager& ImplGetSystemDependentDataManager(); |
434 | | VCL_PLUGIN_PUBLIC vcl::Window* ImplGetDefaultWindow(); |
435 | | vcl::Window* ImplGetDefaultContextWindow(); |
436 | | const std::locale& ImplGetResLocale(); |
437 | | VCL_PLUGIN_PUBLIC OUString VclResId(TranslateId sContextAndId); |
438 | | DockingManager* ImplGetDockingManager(); |
439 | | void GenerateAutoMnemonicsOnHierarchy(const vcl::Window* pWindow); |
440 | | |
441 | | VCL_PLUGIN_PUBLIC ImplSVHelpData& ImplGetSVHelpData(); |
442 | | |
443 | | VCL_DLLPUBLIC bool ImplCallPreNotify( NotifyEvent& rEvt ); |
444 | | |
445 | | VCL_PLUGIN_PUBLIC ImplSVData* ImplGetSVData(); |
446 | | VCL_PLUGIN_PUBLIC void ImplHideSplash(); |
447 | | |
448 | | const FieldUnitStringList& ImplGetFieldUnits(); |
449 | | const FieldUnitStringList& ImplGetCleanedFieldUnits(); |
450 | | |
451 | | struct ImplSVEvent |
452 | | { |
453 | | void* mpData; |
454 | | Link<void*,void> maLink; |
455 | | VclPtr<vcl::Window> mpInstanceRef; |
456 | | VclPtr<vcl::Window> mpWindow; |
457 | | bool mbCall; |
458 | | }; |
459 | | |
460 | | extern int nImplSysDialog; |
461 | | |
462 | 210k | inline SalData* GetSalData() { return ImplGetSVData()->mpSalData; } |
463 | 106 | inline void SetSalData(SalData* pData) { ImplGetSVData()->mpSalData = pData; } |
464 | 968M | inline SalInstance* GetSalInstance() { return ImplGetSVData()->mpDefInst; } |
465 | | |
466 | | /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |