Bug 86948

Summary: Aspect ratio hints should be ignored in fullscreen mode
Product: [Plasma] kwin Reporter: Billy Biggs <vektor>
Component: generalAssignee: KWin default assignee <kwin-bugs-null>
Status: RESOLVED FIXED    
Severity: normal    
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: Debian testing   
OS: Linux   
Latest Commit: Version Fixed In:

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