diff options
-rw-r--r-- | include/vcl/dockwin.hxx | 2 | ||||
-rw-r--r-- | sd/uiconfig/simpress/ui/dockinganimation.ui | 1 | ||||
-rw-r--r-- | starmath/uiconfig/smath/ui/dockingelements.ui | 1 | ||||
-rw-r--r-- | svx/uiconfig/ui/docking3deffects.ui | 1 | ||||
-rw-r--r-- | svx/uiconfig/ui/dockingcolorreplace.ui | 1 | ||||
-rw-r--r-- | svx/uiconfig/ui/dockingfontwork.ui | 1 | ||||
-rw-r--r-- | vcl/source/window/dockwin.cxx | 58 |
7 files changed, 22 insertions, 43 deletions
diff --git a/include/vcl/dockwin.hxx b/include/vcl/dockwin.hxx index 92637db78771..723aef49d4a6 100644 --- a/include/vcl/dockwin.hxx +++ b/include/vcl/dockwin.hxx @@ -244,7 +244,7 @@ protected: private: SAL_DLLPRIVATE void ImplInitDockingWindowData(); - SAL_DLLPRIVATE void setPosSizeOnContainee(Size aSize, Window &rBox); + SAL_DLLPRIVATE void setPosSizeOnContainee(); DECL_DLLPRIVATE_LINK( ImplHandleLayoutTimerHdl, Timer*, void ); DockingWindow (const DockingWindow &) = delete; diff --git a/sd/uiconfig/simpress/ui/dockinganimation.ui b/sd/uiconfig/simpress/ui/dockinganimation.ui index 9fc5a1fea4c9..3c44f27cf176 100644 --- a/sd/uiconfig/simpress/ui/dockinganimation.ui +++ b/sd/uiconfig/simpress/ui/dockinganimation.ui @@ -55,7 +55,6 @@ <property name="stock">gtk-goto-last</property> </object> <object class="GtkWindow" id="DockingAnimation"> - <property name="visible">True</property> <property name="can_focus">False</property> <property name="hexpand">True</property> <property name="vexpand">True</property> diff --git a/starmath/uiconfig/smath/ui/dockingelements.ui b/starmath/uiconfig/smath/ui/dockingelements.ui index 652ae360d439..01ef235c60a6 100644 --- a/starmath/uiconfig/smath/ui/dockingelements.ui +++ b/starmath/uiconfig/smath/ui/dockingelements.ui @@ -3,7 +3,6 @@ <interface domain="sm"> <requires lib="gtk+" version="3.0"/> <object class="GtkWindow" id="DockingElements"> - <property name="visible">True</property> <property name="can_focus">False</property> <property name="hexpand">True</property> <property name="vexpand">True</property> diff --git a/svx/uiconfig/ui/docking3deffects.ui b/svx/uiconfig/ui/docking3deffects.ui index f491b35ed0d7..2e0e47ecc465 100644 --- a/svx/uiconfig/ui/docking3deffects.ui +++ b/svx/uiconfig/ui/docking3deffects.ui @@ -256,7 +256,6 @@ <property name="pixbuf">svx/res/normflat.png</property> </object> <object class="GtkWindow" id="Docking3DEffects"> - <property name="visible">True</property> <property name="can_focus">False</property> <property name="hexpand">True</property> <property name="vexpand">True</property> diff --git a/svx/uiconfig/ui/dockingcolorreplace.ui b/svx/uiconfig/ui/dockingcolorreplace.ui index 77a44d403feb..1d7454ed3465 100644 --- a/svx/uiconfig/ui/dockingcolorreplace.ui +++ b/svx/uiconfig/ui/dockingcolorreplace.ui @@ -10,7 +10,6 @@ <property name="page_increment">10</property> </object> <object class="GtkWindow" id="DockingColorReplace"> - <property name="visible">True</property> <property name="can_focus">False</property> <property name="hexpand">True</property> <property name="vexpand">True</property> diff --git a/svx/uiconfig/ui/dockingfontwork.ui b/svx/uiconfig/ui/dockingfontwork.ui index b1abc2dea0fb..b17936df2e43 100644 --- a/svx/uiconfig/ui/dockingfontwork.ui +++ b/svx/uiconfig/ui/dockingfontwork.ui @@ -10,7 +10,6 @@ <property name="page_increment">1</property> </object> <object class="GtkWindow" id="DockingFontwork"> - <property name="visible">True</property> <property name="can_focus">False</property> <property name="hexpand">True</property> <property name="vexpand">True</property> diff --git a/vcl/source/window/dockwin.cxx b/vcl/source/window/dockwin.cxx index e50bcf08f76b..64a6aa4673c1 100644 --- a/vcl/source/window/dockwin.cxx +++ b/vcl/source/window/dockwin.cxx @@ -707,9 +707,12 @@ void DockingWindow::SetFloatingMode( bool bFloatMode ) if ( bFloatMode ) { - Show( false, ShowFlags::NoFocusChange ); + // set deferred properties early, so border width will end up + // in our mpWindowImpl->mnBorderWidth, not in mpBorderWindow. + // (see its usage in setPosSizeOnContainee and GetOptimalSize.) + setDeferredProperties(); - sal_Int32 nBorderWidth = get_border_width(); + Show( false, ShowFlags::NoFocusChange ); maDockPos = Window::GetPosPixel(); @@ -757,19 +760,13 @@ void DockingWindow::SetFloatingMode( bool bFloatMode ) ToggleFloatingMode(); - set_border_width(nBorderWidth); - if ( bVisible ) Show(); - - mpFloatWin->queue_resize(); } else { Show( false, ShowFlags::NoFocusChange ); - sal_Int32 nBorderWidth = get_border_width(); - // store FloatingData in FloatingWindow maFloatPos = mpFloatWin->GetPosPixel(); mbDockBtn = mpFloatWin->IsTitleButtonVisible( TitleButton::Docking ); @@ -795,8 +792,6 @@ void DockingWindow::SetFloatingMode( bool bFloatMode ) ToggleFloatingMode(); - set_border_width(nBorderWidth); - if ( bVisible ) Show(); } @@ -844,19 +839,7 @@ void DockingWindow::setPosSizePixel( long nX, long nY, } if (::isLayoutEnabled(this)) - { - Size aSize(GetSizePixel()); - - sal_Int32 nBorderWidth = get_border_width(); - - aSize.Width() -= 2 * nBorderWidth; - aSize.Height() -= 2 * nBorderWidth; - - Point aPos(nBorderWidth, nBorderWidth); - Window *pBox = GetWindow(GetWindowType::FirstChild); - assert(pBox); - VclContainer::setLayoutAllocation(*pBox, aPos, aSize); - } + setPosSizeOnContainee(); } Point DockingWindow::GetPosPixel() const @@ -998,8 +981,6 @@ void DockingWindow::setOptimalLayoutSize() maLayoutIdle.Stop(); //resize DockingWindow to fit requisition on initial show - Window *pBox = GetWindow(GetWindowType::FirstChild); - Size aSize = get_preferred_size(); Size aMax(bestmaxFrameSizeForScreenSize(GetDesktopRectPixel().GetSize())); @@ -1008,19 +989,23 @@ void DockingWindow::setOptimalLayoutSize() aSize.Height() = std::min(aMax.Height(), aSize.Height()); SetMinOutputSizePixel(aSize); - SetSizePixel(aSize); - setPosSizeOnContainee(aSize, *pBox); + setPosSizeOnContainee(); } -void DockingWindow::setPosSizeOnContainee(Size aSize, Window &rBox) +void DockingWindow::setPosSizeOnContainee() { - sal_Int32 nBorderWidth = get_border_width(); + Size aSize = GetOutputSizePixel(); + + // Can't use get_border_width() here, because we don't want + // the border to be also visible to the floating window. + sal_Int32 nBorderWidth = mpWindowImpl->mnBorderWidth; aSize.Width() -= 2 * nBorderWidth; aSize.Height() -= 2 * nBorderWidth; - Point aPos(nBorderWidth, nBorderWidth); - VclContainer::setLayoutAllocation(rBox, aPos, aSize); + Window* pBox = GetWindow(GetWindowType::FirstChild); + assert(pBox); + VclContainer::setLayoutAllocation(*pBox, Point(nBorderWidth, nBorderWidth), aSize); } Size DockingWindow::GetOptimalSize() const @@ -1030,12 +1015,14 @@ Size DockingWindow::GetOptimalSize() const Size aSize = VclContainer::getLayoutRequisition(*GetWindow(GetWindowType::FirstChild)); - sal_Int32 nBorderWidth = get_border_width(); + // Can't use get_border_width() here, because we don't want + // the border to be also visible to the floating window. + sal_Int32 nBorderWidth = mpWindowImpl->mnBorderWidth; aSize.Height() += 2 * nBorderWidth; aSize.Width() += 2 * nBorderWidth; - return Window::CalcWindowSize(aSize); + return aSize; } void DockingWindow::queue_resize(StateChangedType eReason) @@ -1064,10 +1051,7 @@ IMPL_LINK_NOARG(DockingWindow, ImplHandleLayoutTimerHdl, Timer*, void) SAL_WARN("vcl.layout", "DockingWindow has become non-layout because extra children have been added directly to it."); return; } - - Window *pBox = GetWindow(GetWindowType::FirstChild); - assert(pBox); - setPosSizeOnContainee(GetSizePixel(), *pBox); + setPosSizeOnContainee(); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |