summaryrefslogtreecommitdiffstats
path: root/vcl/source/window/syswin.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'vcl/source/window/syswin.cxx')
-rw-r--r--vcl/source/window/syswin.cxx19
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))
{