diff options
author | Caolán McNamara <caolanm@redhat.com> | 2019-12-17 17:27:30 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2019-12-19 22:07:19 +0100 |
commit | e3a002c53a544de02e5119c5b0a2fd4f972156a8 (patch) | |
tree | d6bd55210bb93fdc2aae2e398b63c3dddeb38326 /vcl/source | |
parent | e994b3fc3b2c9b7d39a715fc4d9453e06434d457 (diff) |
get native gtk widgets in sidebars working
Change-Id: If65aef1249f54a87d7854c3fa2db4319a24a5a05
Reviewed-on: https://gerrit.libreoffice.org/85326
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'vcl/source')
-rw-r--r-- | vcl/source/app/salvtables.cxx | 7 | ||||
-rw-r--r-- | vcl/source/window/builder.cxx | 2 | ||||
-rw-r--r-- | vcl/source/window/stacking.cxx | 17 |
3 files changed, 15 insertions, 11 deletions
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx index 1d49f779e695..7e56847ae509 100644 --- a/vcl/source/app/salvtables.cxx +++ b/vcl/source/app/salvtables.cxx @@ -6611,13 +6611,6 @@ weld::Builder* SalInstance::CreateInterimBuilder(vcl::Window* pParent, const OUS return new SalInstanceBuilder(pParent, rUIRoot, rUIFile); } -weld::Builder* Application::CreateInterimBuilder(weld::Widget* pParent, const OUString &rUIFile) -{ - SalInstanceWidget* pParentInstance = dynamic_cast<SalInstanceWidget*>(pParent); - vcl::Window* pParentWidget = pParentInstance ? pParentInstance->getWidget() : nullptr; - return Application::CreateInterimBuilder(pParentWidget, rUIFile); -} - void SalInstanceWindow::help() { //show help for widget with keyboard focus diff --git a/vcl/source/window/builder.cxx b/vcl/source/window/builder.cxx index b47ad027188f..91e30d1baf66 100644 --- a/vcl/source/window/builder.cxx +++ b/vcl/source/window/builder.cxx @@ -154,7 +154,7 @@ weld::Builder* Application::CreateBuilder(weld::Widget* pParent, const OUString weld::Builder* Application::CreateInterimBuilder(vcl::Window* pParent, const OUString &rUIFile) { - return SalInstance::CreateInterimBuilder(pParent, VclBuilderContainer::getUIRootDir(), rUIFile); + return ImplGetSVData()->mpDefInst->CreateInterimBuilder(pParent, VclBuilderContainer::getUIRootDir(), rUIFile); } weld::MessageDialog* Application::CreateMessageDialog(weld::Widget* pParent, VclMessageType eMessageType, diff --git a/vcl/source/window/stacking.cxx b/vcl/source/window/stacking.cxx index 718ce76dea66..08b6cbaa987e 100644 --- a/vcl/source/window/stacking.cxx +++ b/vcl/source/window/stacking.cxx @@ -23,6 +23,7 @@ #include <sal/log.hxx> #include <salframe.hxx> +#include <salobj.hxx> #include <svdata.hxx> #include <window.h> #include <brdwin.hxx> @@ -63,8 +64,13 @@ void Window::ImplInsertWindow( vcl::Window* pParent ) { // search frame window and set window frame data vcl::Window* pFrameParent = pParent->mpWindowImpl->mpFrameWindow; - mpWindowImpl->mpFrameData = pFrameParent->mpWindowImpl->mpFrameData; - mpWindowImpl->mpFrame = pFrameParent->mpWindowImpl->mpFrame; + mpWindowImpl->mpFrameData = pFrameParent->mpWindowImpl->mpFrameData; + if (mpWindowImpl->mpFrame != pFrameParent->mpWindowImpl->mpFrame) + { + mpWindowImpl->mpFrame = pFrameParent->mpWindowImpl->mpFrame; + if (mpWindowImpl->mpSysObj) + mpWindowImpl->mpSysObj->Reparent(mpWindowImpl->mpFrame); + } mpWindowImpl->mpFrameWindow = pFrameParent; mpWindowImpl->mbFrame = false; @@ -751,7 +757,12 @@ void Window::ImplUpdateWindowPtr( vcl::Window* pWindow ) } mpWindowImpl->mpFrameData = pWindow->mpWindowImpl->mpFrameData; - mpWindowImpl->mpFrame = pWindow->mpWindowImpl->mpFrame; + if (mpWindowImpl->mpFrame != pWindow->mpWindowImpl->mpFrame) + { + mpWindowImpl->mpFrame = pWindow->mpWindowImpl->mpFrame; + if (mpWindowImpl->mpSysObj) + mpWindowImpl->mpSysObj->Reparent(mpWindowImpl->mpFrame); + } mpWindowImpl->mpFrameWindow = pWindow->mpWindowImpl->mpFrameWindow; if ( pWindow->ImplIsOverlapWindow() ) mpWindowImpl->mpOverlapWindow = pWindow; |