vcl/source/window/syswin.cxx | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-)
New commits: commit 105d129683b0e88bbb8e682d308786a587aa895f Author: Xisco Fauli <[email protected]> AuthorDate: Fri Aug 19 12:53:16 2022 +0200 Commit: Xisco Fauli <[email protected]> CommitDate: Tue Aug 23 11:30:15 2022 +0200 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 <[email protected]> Reviewed-by: Luboš Luňák <[email protected]> Reviewed-by: Xisco Fauli <[email protected]> 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)
