Patch for xinerama mode to allow fullscreens both on one or several screen(s)
svn path=/trunk/kdebase/kwin/; revision=310202
This commit is contained in:
parent
36a1cd4b18
commit
ab428d9ab0
5 changed files with 13 additions and 5 deletions
|
@ -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 )
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -120,6 +120,7 @@ class Options : public KDecorationOptions
|
|||
bool xineramaPlacementEnabled;
|
||||
bool xineramaMovementEnabled;
|
||||
bool xineramaMaximizeEnabled;
|
||||
bool xineramaFullscreenEnabled;
|
||||
|
||||
/**
|
||||
MoveResizeMode, either Tranparent or Opaque.
|
||||
|
|
3
utils.h
3
utils.h
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue