diff options
Diffstat (limited to 'vcl/source/window/syswin.cxx')
-rw-r--r-- | vcl/source/window/syswin.cxx | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/vcl/source/window/syswin.cxx b/vcl/source/window/syswin.cxx index 19ec2f944357..080d72a33b99 100644 --- a/vcl/source/window/syswin.cxx +++ b/vcl/source/window/syswin.cxx @@ -641,6 +641,13 @@ void SystemWindow::SetWindowStateData( const WindowStateData& rData ) aState.mnWidth = rData.GetWidth(); aState.mnHeight = rData.GetHeight(); + if ( (aState.mnMask & SAL_FRAME_POSSIZE_X) && + (aState.mnMask & SAL_FRAME_POSSIZE_Y) && + (aState.mnMask & SAL_FRAME_POSSIZE_WIDTH) && + (aState.mnMask & SAL_FRAME_POSSIZE_HEIGHT) ) { + mbInitialLayoutDone = true; + } + if( rData.GetMask() & (WINDOWSTATE_MASK_WIDTH|WINDOWSTATE_MASK_HEIGHT) ) { // #i43799# adjust window state sizes if a minimal output size was set @@ -1100,11 +1107,13 @@ void SystemWindow::DoInitialLayout() if (isLayoutEnabled()) { - mbIsCalculatingInitialLayoutSize = true; - setDeferredProperties(); - setOptimalLayoutSize(); - mbIsCalculatingInitialLayoutSize = false; - mbInitialLayoutDone = true; + if (!mbInitialLayoutDone) { + mbIsCalculatingInitialLayoutSize = true; + setDeferredProperties(); + setOptimalLayoutSize(); + mbIsCalculatingInitialLayoutSize = false; + mbInitialLayoutDone = true; + } } else if (IsDialog() && !(GetStyle() & WB_SIZEABLE)) { |