Allow desktop-type windows to only span one xrandr/mergedfb/xinerama-screen instead of all screens combined.

svn path=/trunk/KDE/kdebase/workspace/; revision=803349
This commit is contained in:
Aike J. Sommer 2008-05-02 16:35:35 +00:00
parent c907b8acc1
commit 1819ad69b2
2 changed files with 12 additions and 2 deletions

View file

@ -32,6 +32,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include <kapplication.h> #include <kapplication.h>
#include <kglobal.h> #include <kglobal.h>
#include <QPainter> #include <QPainter>
#include <QDesktopWidget>
#include <kwindowsystem.h> #include <kwindowsystem.h>
#include "placement.h" #include "placement.h"
@ -875,6 +876,11 @@ void Client::checkWorkspacePosition()
{ {
if( isDesktop()) if( isDesktop())
{ {
if (geometry() == workspace()->clientArea( ScreenArea, this ))
{
return;
}
QRect area = workspace()->clientArea( FullArea, this ); QRect area = workspace()->clientArea( FullArea, this );
if( geometry() != area ) if( geometry() != area )
setGeometry( area ); setGeometry( area );

View file

@ -33,6 +33,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "notifications.h" #include "notifications.h"
#include <QX11Info> #include <QX11Info>
#include <QDesktopWidget>
#include "rules.h" #include "rules.h"
#include "group.h" #include "group.h"
@ -235,9 +236,12 @@ bool Client::manage( Window w, bool isMapped )
if ( isDesktop() ) if ( isDesktop() )
{ {
// desktops are treated slightly special // desktops are treated slightly special
if (geom != workspace()->clientArea( ScreenArea, geom.center(), desktop()))
{
geom = workspace()->clientArea( FullArea, geom.center(), desktop()); geom = workspace()->clientArea( FullArea, geom.center(), desktop());
placementDone = true; placementDone = true;
} }
}
bool usePosition = false; bool usePosition = false;
if ( isMapped || session || placementDone ) if ( isMapped || session || placementDone )