Improved support for xinerama-fullscreen apps

svn path=/trunk/KDE/kdebase/kwin/; revision=423736
This commit is contained in:
Fred Emmott 2005-06-09 14:40:36 +00:00
parent da00272012
commit b10e8e559b
2 changed files with 9 additions and 2 deletions

View file

@ -248,6 +248,7 @@ QRect Workspace::clientArea( clientAreaOption opt, const QPoint& p, int desktop
return desktopwidget->geometry();
case WorkArea:
return warea;
case FullXineramaArea:
case FullArea:
return desktopwidget->geometry();
case ScreenArea:
@ -2029,7 +2030,12 @@ void Client::setFullScreen( bool set, bool user )
workspace()->updateClientLayer( this ); // active fullscreens get different layer
info->setState( isFullScreen() ? NET::FullScreen : 0, NET::FullScreen );
updateDecoration( false, false );
if( isFullScreen())
// XINERAMA
if( isFullScreen() && xSizeHint.width > workspace()->clientArea(FullScreenArea, this).width() )
setGeometry( workspace()->clientArea( FullXineramaArea, this ));
else if( isFullScreen() && xSizeHint.height > workspace()->clientArea(FullScreenArea, this).height() )
setGeometry( workspace()->clientArea( FullXineramaArea, this ));
else if( isFullScreen())
setGeometry( workspace()->clientArea( FullScreenArea, this ));
else
{

View file

@ -97,7 +97,8 @@ enum clientAreaOption
// these below don't depend on xinerama settings
WorkArea, // whole workarea (all screens together)
FullArea, // whole area (all screens together), ignore struts
ScreenArea // one whole screen, ignore struts
ScreenArea, // one whole screen, ignore struts
FullXineramaArea
};
enum ShadeMode