diff options
author | Xisco Fauli <xiscofauli@libreoffice.org> | 2022-08-19 12:53:16 +0200 |
---|---|---|
committer | Xisco Fauli <xiscofauli@libreoffice.org> | 2022-08-23 11:30:15 +0200 |
commit | 105d129683b0e88bbb8e682d308786a587aa895f (patch) | |
tree | b43cd6bc0021767c209198b68d1f24f433ac93dd /vcl | |
parent | 8f2c68e5d85602b2472db5e5836c934cae5805a2 (diff) |
tdf#150236: Revert "avoid uninitialized data when handling WindowState"
This reverts commit 8b46093b27b065ac9b537348ed909530b5ffd588.
Reason for revert: Considering the number of bugs already reported
for this issue since LibreOffice 7.4 was released, I would like
to revert this commit only on libreoffice-7-4 branch.
In master, the issue got fixed by 8b6000f6075725b2e17b8fa745251ea96d7185f1
< WIN drop window state redundancies > but reading the discussion
in https://gerrit.libreoffice.org/c/core/+/135809, it might be risky
to backport it to libreoffice-7-4, thus I prefer to revert this patch
Change-Id: I5c78d165afed59a3d578f53356682425c9de2cd3
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138534
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/source/window/syswin.cxx | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/vcl/source/window/syswin.cxx b/vcl/source/window/syswin.cxx index 113b2da02689..fa053499d623 100644 --- a/vcl/source/window/syswin.cxx +++ b/vcl/source/window/syswin.cxx @@ -755,10 +755,7 @@ void SystemWindow::GetWindowState(vcl::WindowData& rData) const return; if ( mbSysChild ) - { - rData.setMask( vcl::WindowDataMask::NONE ); return; - } const vcl::Window* pWindow = this; while ( pWindow->mpWindowImpl->mpBorderWindow ) @@ -767,11 +764,9 @@ void SystemWindow::GetWindowState(vcl::WindowData& rData) const if ( pWindow->mpWindowImpl->mbFrame ) { vcl::WindowData aState; + aState.setMask(vcl::WindowDataMask::All); if ( mpWindowImpl->mpFrame->GetWindowState( &aState ) ) { - // Limit mask only to what we've received, the rest is not set. - nValidMask &= aState.mask(); - rData.setMask( nValidMask ); if ( nValidMask & vcl::WindowDataMask::X ) rData.setX( aState.x() ); if ( nValidMask & vcl::WindowDataMask::Y ) @@ -780,14 +775,26 @@ void SystemWindow::GetWindowState(vcl::WindowData& rData) const rData.setWidth( aState.width() ); if ( nValidMask & vcl::WindowDataMask::Height ) rData.setHeight( aState.height() ); - if ( nValidMask & vcl::WindowDataMask::MaximizedX ) + if ( aState.mask() & vcl::WindowDataMask::MaximizedX ) + { rData.SetMaximizedX( aState.GetMaximizedX() ); - if ( nValidMask & vcl::WindowDataMask::MaximizedY ) + nValidMask |= vcl::WindowDataMask::MaximizedX; + } + if ( aState.mask() & vcl::WindowDataMask::MaximizedY ) + { rData.SetMaximizedY( aState.GetMaximizedY() ); - if ( nValidMask & vcl::WindowDataMask::MaximizedWidth ) + nValidMask |= vcl::WindowDataMask::MaximizedY; + } + if ( aState.mask() & vcl::WindowDataMask::MaximizedWidth ) + { rData.SetMaximizedWidth( aState.GetMaximizedWidth() ); - if ( nValidMask & vcl::WindowDataMask::MaximizedHeight ) + nValidMask |= vcl::WindowDataMask::MaximizedWidth; + } + if ( aState.mask() & vcl::WindowDataMask::MaximizedHeight ) + { rData.SetMaximizedHeight( aState.GetMaximizedHeight() ); + nValidMask |= vcl::WindowDataMask::MaximizedHeight; + } if ( nValidMask & vcl::WindowDataMask::State ) { // #94144# allow Minimize again, should be masked out when read from configuration @@ -807,8 +814,6 @@ void SystemWindow::GetWindowState(vcl::WindowData& rData) const Size aSize = GetSizePixel(); vcl::WindowState nState = vcl::WindowState::NONE; - nValidMask &= vcl::WindowDataMask::PosSizeState; - rData.setMask( nValidMask ); if (nValidMask & vcl::WindowDataMask::X) rData.setX(aPos.X()); if (nValidMask & vcl::WindowDataMask::Y) |