[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-6.4' - include/vcl sfx2/source vcl/source
Henry Castro (via logerrit)
logerrit at kemper.freedesktop.org
Wed May 20 22:34:15 UTC 2020
include/vcl/window.hxx | 1 +
sfx2/source/view/viewfrm.cxx | 5 +++--
sfx2/source/view/viewsh.cxx | 11 ++++++++---
vcl/source/window/window2.cxx | 6 ++++++
4 files changed, 18 insertions(+), 5 deletions(-)
New commits:
commit 29b90f114b986e0d089a65d27fef50c43cbe29a0
Author: Henry Castro <hcastro at collabora.com>
AuthorDate: Sat Nov 30 09:36:27 2019 -0400
Commit: Henry Castro <hcastro at collabora.com>
CommitDate: Thu May 21 00:33:44 2020 +0200
lok: fix welded dialogs
In the tiled rendering case the dialogs, run asynchronous due
to multiple user access. In order to send the messages
to the client side, the dialog has to hook
a LOKNotifier in the constructor of the SfxViewShell.
However, the new weld wrapper classes use the Frame Window,
(i.e. Window::GetFarmeWeld()), as a parent of the dialogs.
On the other hand, in order to avoid getting the interface
implementation inside implementation classes, it has been
created a new method Window::GetFrameWindow(), otherwise
I have to do a bureaucratic conversion between Interfaces
to Implementations ( i.e. UnoWrapperBase::GetUnoWrapper() )
Change-Id: I32c34d82a89211a025250e65a05ce47d30efa0b8
Reviewed-on: https://gerrit.libreoffice.org/84117
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice at gmail.com>
Reviewed-by: Jan Holesovsky <kendy at collabora.com>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94505
Tested-by: Henry Castro <hcastro at collabora.com>
Reviewed-by: Henry Castro <hcastro at collabora.com>
diff --git a/include/vcl/window.hxx b/include/vcl/window.hxx
index f090fef97203..8c87a78510cb 100644
--- a/include/vcl/window.hxx
+++ b/include/vcl/window.hxx
@@ -527,6 +527,7 @@ public:
SAL_DLLPRIVATE vcl::Window* ImplGetFrameWindow() const;
weld::Window* GetFrameWeld() const;
+ vcl::Window* GetFrameWindow() const;
SalFrame* ImplGetFrame() const;
SAL_DLLPRIVATE ImplFrameData* ImplGetFrameData();
diff --git a/sfx2/source/view/viewfrm.cxx b/sfx2/source/view/viewfrm.cxx
index 7c0efa142fda..082c77aeba5a 100644
--- a/sfx2/source/view/viewfrm.cxx
+++ b/sfx2/source/view/viewfrm.cxx
@@ -1460,8 +1460,9 @@ void SfxViewFrame::Notify( SfxBroadcaster& /*rBC*/, const SfxHint& rHint )
case SfxHintId::Deinitializing:
{
- if (GetWindow().GetLOKNotifier())
- GetWindow().ReleaseLOKNotifier();
+ vcl::Window* pFrameWin = GetWindow().GetFrameWindow();
+ if (pFrameWin && pFrameWin->GetLOKNotifier())
+ pFrameWin->ReleaseLOKNotifier();
GetFrame().DoClose();
break;
diff --git a/sfx2/source/view/viewsh.cxx b/sfx2/source/view/viewsh.cxx
index 8a199623fa58..e62a87b06b14 100644
--- a/sfx2/source/view/viewsh.cxx
+++ b/sfx2/source/view/viewsh.cxx
@@ -1094,7 +1094,11 @@ SfxViewShell::SfxViewShell
rViewArr.push_back(this);
if (comphelper::LibreOfficeKit::isActive())
- pViewFrame->GetWindow().SetLOKNotifier(this, true);
+ {
+ vcl::Window* pFrameWin = pViewFrame->GetWindow().GetFrameWindow();
+ if (pFrameWin)
+ pFrameWin->SetLOKNotifier(this, true);
+ }
}
@@ -1119,8 +1123,9 @@ SfxViewShell::~SfxViewShell()
pImpl->m_pController.clear();
}
- if (GetViewFrame()->GetWindow().GetLOKNotifier())
- GetViewFrame()->GetWindow().ReleaseLOKNotifier();
+ vcl::Window* pFrameWin = GetViewFrame()->GetWindow().GetFrameWindow();
+ if (pFrameWin && pFrameWin->GetLOKNotifier())
+ pFrameWin->ReleaseLOKNotifier();
}
bool SfxViewShell::PrepareClose
diff --git a/vcl/source/window/window2.cxx b/vcl/source/window/window2.cxx
index 4b0c7e8f571d..2ad4bfcb4571 100644
--- a/vcl/source/window/window2.cxx
+++ b/vcl/source/window/window2.cxx
@@ -856,6 +856,12 @@ weld::Window* Window::GetFrameWeld() const
return pFrame ? pFrame->GetFrameWeld() : nullptr;
}
+vcl::Window* Window::GetFrameWindow() const
+{
+ SalFrame* pFrame = ImplGetFrame();
+ return pFrame ? pFrame->GetWindow() : nullptr;
+}
+
vcl::Window* Window::ImplGetParent() const
{
return mpWindowImpl ? mpWindowImpl->mpParent.get() : nullptr;
More information about the Libreoffice-commits
mailing list