summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorXisco Fauli <xiscofauli@libreoffice.org>2022-08-19 12:53:16 +0200
committerXisco Fauli <xiscofauli@libreoffice.org>2022-08-23 11:30:15 +0200
commit105d129683b0e88bbb8e682d308786a587aa895f (patch)
treeb43cd6bc0021767c209198b68d1f24f433ac93dd /vcl
parent8f2c68e5d85602b2472db5e5836c934cae5805a2 (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.cxx29
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)