diff options
Diffstat (limited to 'vcl/source/window')
-rw-r--r-- | vcl/source/window/builder.cxx | 2 | ||||
-rw-r--r-- | vcl/source/window/stacking.cxx | 17 |
2 files changed, 15 insertions, 4 deletions
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; |