Bug 86948 - Aspect ratio hints should be ignored in fullscreen mode
Summary: Aspect ratio hints should be ignored in fullscreen mode
Status: RESOLVED FIXED
Alias: None
Product: kwin
Classification: Plasma
Component: general (show other bugs)
Version: unspecified
Platform: Debian testing Linux
: NOR normal
Target Milestone: ---
Assignee: KWin default assignee
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2004-08-11 02:42 UTC by Billy Biggs
Modified: 2004-08-16 17:05 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Billy Biggs 2004-08-11 02:42:39 UTC
Version:            (using KDE KDE 3.2.2)
Installed from:    Debian testing/unstable Packages
OS:                Linux

When an application is in the state _NET_WM_STATE_FULLSCREEN, changes to the aspect ratio hint should be ignored and not applied until the window leaves fullscreen mode.

To reproduce the problem, use tvtime 0.9.12.  Hitting the 'a' key changes the aspect ratio from 4:3 to 16:9 and updates the aspect ratio hints.  Hitting the 'f' key changes from fullscreen and back.  tvtime does not require a capture card for these features to work.

When the aspect ratio is changed but the application is in fullscreen mode, kwin 3.2.2 incorectly resizes the fullscreened window.  kwin correctly handles a 16:9 aspect window going fullscreen, but breaks if the aspect ratio is changed while in fullscreen mode.

For some prior art, this problem does not appear in metacity 2.8.1.
Comment 1 Lubos Lunak 2004-08-16 17:05:35 UTC
CVS commit by lunakl: 

Don't resize windows in fullscreen mode.
CCMAIL: 86948-done@bugs.kde.org


  M +2 -2      geometry.cpp   2.90


--- kdebase/kwin/geometry.cpp  #2.89:2.90
@@ -1231,5 +1231,5 @@ void Client::getWmNormalHints()
         { // update to match restrictions
         QSize new_size = adjustedSize( size());
-        if( new_size != size() && !isShade()) // SHADE
+        if( new_size != size() && !isShade() && !isFullScreen()) // SHADE
             resizeWithChecks( new_size );
         }
@@ -1912,5 +1912,5 @@ void Client::setFullScreen( bool set, bo
             changeMaximize( false, false, true ); // adjust size
         else if( !geom_fs_restore.isNull())
-            setGeometry( geom_fs_restore );
+            setGeometry( QRect( geom_fs_restore.topLeft(), adjustedSize( geom_fs_restore.size())));
         // TODO isShaded() ?
         else