diff options
author | Ashod Nakashian <ashod.nakashian@collabora.co.uk> | 2019-05-29 23:33:25 -0400 |
---|---|---|
committer | Ashod Nakashian <ashnakash@gmail.com> | 2019-12-11 20:52:12 +0100 |
commit | cde58f1726f8da36968eb8faba76aee83a9d3448 (patch) | |
tree | af37f180de247154d5471ef9f6d0cb997e5600eb /vcl/inc/svdata.hxx | |
parent | 85f3f8de19e63f41e9c304427e9f7a840480f21c (diff) |
vcl: sfx2: LOK: Support per-view popup windows
While we do support multiple views, there is only
one state for popup/floating windows, that also
includes the dialogs open and related windows/data.
This adds support to allow each view to have its own
popups and state, thus allowing multiple users to
interact with the dialogs independently of one
another.
(cherry picked from commit b50c341a53911f1d725947a4d8d3d2f782c94079)
Change-Id: I3786a561ca6ca113ad12425bdb491e5a30bd1a28
Reviewed-on: https://gerrit.libreoffice.org/82440
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Diffstat (limited to 'vcl/inc/svdata.hxx')
-rw-r--r-- | vcl/inc/svdata.hxx | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/vcl/inc/svdata.hxx b/vcl/inc/svdata.hxx index 56912ae5bf5d..1fae7681f8e7 100644 --- a/vcl/inc/svdata.hxx +++ b/vcl/inc/svdata.hxx @@ -208,13 +208,20 @@ struct ImplSVGDIData o3tl::lru_map<OUString, gfx::DrawRoot> maThemeDrawCommandsCache = o3tl::lru_map<OUString, gfx::DrawRoot>(50); }; -struct ImplSVWinData +struct ImplSVFrameData { - ~ImplSVWinData(); + ~ImplSVFrameData(); VclPtr<vcl::Window> mpFirstFrame; // First FrameWindow + VclPtr<vcl::Window> mpActiveApplicationFrame; // the last active application frame, can be used as DefModalDialogParent if no focuswin set VclPtr<WorkWindow> mpAppWin; // Application-Window + + std::unique_ptr<UITestLogger> m_pUITestLogger; +}; + +struct ImplSVWinData +{ + ~ImplSVWinData(); VclPtr<vcl::Window> mpFocusWin; // window, that has the focus - VclPtr<vcl::Window> mpActiveApplicationFrame; // the last active application frame, can be used as DefModalDialogParent if no focuswin set VclPtr<vcl::Window> mpCaptureWin; // window, that has the mouse capture VclPtr<vcl::Window> mpLastDeacWin; // Window, that need a deactivate (FloatingWindow-Handling) VclPtr<FloatingWindow> mpFirstFloat; // First FloatingWindow in PopupMode @@ -231,8 +238,6 @@ struct ImplSVWinData StartAutoScrollFlags mnAutoScrollFlags = StartAutoScrollFlags::NONE; // auto scroll flags bool mbNoDeactivate = false; // true: do not execute Deactivate bool mbNoSaveFocus = false; // true: menus must not save/restore focus - - std::unique_ptr<UITestLogger> m_pUITestLogger; }; typedef std::vector< std::pair< OUString, FieldUnit > > FieldUnitStringList; @@ -363,11 +368,12 @@ struct ImplSVData std::unique_ptr<SalSystem> mpSalSystem; // SalSystem interface bool mbResLocaleSet = false; // SV-Resource-Manager std::locale maResLocale; // Resource locale - ImplSchedulerContext maSchedCtx; // indepen data for class Scheduler - ImplSVAppData maAppData; // indepen data for class Application - ImplSVGDIData maGDIData; // indepen data for Output classes - ImplSVWinData maWinData; // indepen data for Windows classes - ImplSVCtrlData maCtrlData; // indepen data for Control classes + ImplSchedulerContext maSchedCtx; // Data for class Scheduler + ImplSVAppData maAppData; // Data for class Application + ImplSVGDIData maGDIData; // Data for Output classes + ImplSVFrameData maFrameData; // Data for Frame classes + ImplSVWinData* mpWinData = nullptr; // Data for per-view Windows classes + ImplSVCtrlData maCtrlData; // Data for Control classes ImplSVHelpData* mpHelpData; // Data for Help classes ImplSVNWFData maNWFData; UnoWrapperBase* mpUnoWrapper = nullptr; |