Patch for xinerama mode to allow fullscreens both on one or several screen(s)

svn path=/trunk/kdebase/kwin/; revision=310202
icc-effect-5.14.5
Xavier Izard 2004-05-10 23:22:27 +00:00
parent 36a1cd4b18
commit ab428d9ab0
5 changed files with 13 additions and 5 deletions

View File

@ -226,6 +226,11 @@ QRect Workspace::clientArea( clientAreaOption opt, const QPoint& p, int desktop
return desktopwidget->screenGeometry( screen );
else
return desktopwidget->geometry();
case FullScreenArea:
if (options->xineramaFullscreenEnabled)
return desktopwidget->screenGeometry( screen );
else
return desktopwidget->geometry();
case PlacementArea:
if (options->xineramaPlacementEnabled)
return sarea;
@ -654,7 +659,7 @@ void Client::checkWorkspacePosition()
if( isFullScreen())
{
QRect area = workspace()->clientArea( MaximizeFullArea, this );
QRect area = workspace()->clientArea( FullScreenArea, this );
if( geometry() != area )
setGeometry( area );
return;
@ -1612,7 +1617,7 @@ void Client::setFullScreen( bool set, bool user )
info->setState( isFullScreen() ? NET::FullScreen : 0, NET::FullScreen );
updateDecoration( false, false );
if( isFullScreen())
setGeometry( workspace()->clientArea( MaximizeFullArea, this ));
setGeometry( workspace()->clientArea( FullScreenArea, this ));
else
{
if( maximizeMode() != MaximizeRestore )

View File

@ -209,7 +209,7 @@ bool Client::manage( Window w, bool isMapped )
&& noBorder() && !isUserNoBorder() && isFullScreenable( true ))
{
fullscreen_mode = FullScreenHack;
geom = workspace()->clientArea( MaximizeFullArea, geom.center(), desktop());
geom = workspace()->clientArea( FullScreenArea, geom.center(), desktop());
placementDone = true;
}

View File

@ -84,10 +84,11 @@ unsigned long Options::updateSettings()
xineramaPlacementEnabled = gc->readBoolEntry ("XineramaPlacementEnabled", true);
xineramaMovementEnabled = gc->readBoolEntry ("XineramaMovementEnabled", true);
xineramaMaximizeEnabled = gc->readBoolEntry ("XineramaMaximizeEnabled", true);
xineramaFullscreenEnabled = gc->readBoolEntry ("XineramaFullscreenEnabled", true);
}
else
{
xineramaPlacementEnabled = xineramaMovementEnabled = xineramaMaximizeEnabled = false;
xineramaPlacementEnabled = xineramaMovementEnabled = xineramaMaximizeEnabled = xineramaFullscreenEnabled = false;
}
delete gc;

View File

@ -120,6 +120,7 @@ class Options : public KDecorationOptions
bool xineramaPlacementEnabled;
bool xineramaMovementEnabled;
bool xineramaMaximizeEnabled;
bool xineramaFullscreenEnabled;
/**
MoveResizeMode, either Tranparent or Opaque.

View File

@ -89,7 +89,8 @@ enum clientAreaOption
PlacementArea, // geometry where a window will be initially placed after being mapped
MovementArea, // ??? window movement snapping area? ignore struts
MaximizeArea, // geometry to which a window will be maximized
MaximizeFullArea, // like MaximizeArea, but ignore struts - used e.g. for fullscreening
MaximizeFullArea, // like MaximizeArea, but ignore struts - used e.g. for topmenu
FullScreenArea, // area for fullscreen windows
// these below don't depend on xinerama settings
WorkArea, // whole workarea (all screens together)
FullArea, // whole area (all screens together), ignore struts