thanks to the persistent and patient test of apaku, plasma is working fairly decently in xinerama now
svn path=/trunk/KDE/kdebase/workspace/libs/plasma/; revision=730881
This commit is contained in:
parent
5b10495cf4
commit
6a826c0150
@ -132,6 +132,7 @@ void Containment::paintInterface(QPainter *painter,
|
|||||||
const QStyleOptionGraphicsItem *option,
|
const QStyleOptionGraphicsItem *option,
|
||||||
const QRect& contentsRect)
|
const QRect& contentsRect)
|
||||||
{
|
{
|
||||||
|
Q_UNUSED(option)
|
||||||
// If the derived class can't be bothered - just draw a plane old rectangle
|
// If the derived class can't be bothered - just draw a plane old rectangle
|
||||||
painter->drawRect(contentsRect.adjusted(1, 1, -1, -1));
|
painter->drawRect(contentsRect.adjusted(1, 1, -1, -1));
|
||||||
}
|
}
|
||||||
@ -406,7 +407,8 @@ void Containment::setScreen(int screen)
|
|||||||
|
|
||||||
//kDebug() << "setting screen to" << screen;
|
//kDebug() << "setting screen to" << screen;
|
||||||
QDesktopWidget desktop;
|
QDesktopWidget desktop;
|
||||||
if (screen < -1 || screen > desktop.numScreens() - 1) {
|
int numScreens = desktop.numScreens();
|
||||||
|
if (screen < -1 || screen > numScreens - 1) {
|
||||||
screen = -1;
|
screen = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -415,9 +417,27 @@ void Containment::setScreen(int screen)
|
|||||||
QRect r = desktop.screenGeometry(screen);
|
QRect r = desktop.screenGeometry(screen);
|
||||||
|
|
||||||
if (type() == DesktopContainment) {
|
if (type() == DesktopContainment) {
|
||||||
r.moveLeft(r.x() + INTER_CONTAINMENT_MARGIN * screen);
|
// we need to find how many screens are to our top and left
|
||||||
|
// to calculate the proper offsets for the margins.
|
||||||
|
int x = r.x();
|
||||||
|
int y = r.y();
|
||||||
|
int screensLeft = 0;
|
||||||
|
int screensAbove = 0;
|
||||||
|
for (int i = 0; i < numScreens; ++i) {
|
||||||
|
QRect otherScreen = desktop.screenGeometry(screen);
|
||||||
|
if (x > otherScreen.x()) {
|
||||||
|
++screensLeft;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (y > otherScreen.y()) {
|
||||||
|
++screensAbove;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
r.moveLeft(r.x() + INTER_CONTAINMENT_MARGIN * screensLeft);
|
||||||
|
r.moveTop(r.y() + INTER_CONTAINMENT_MARGIN * screensAbove);
|
||||||
setGeometry(r);
|
setGeometry(r);
|
||||||
//kDebug() << "setting geometry to" << desktop.screenGeometry(screen) << geometry();
|
//kDebug() << "setting geometry to" << desktop.screenGeometry(screen) << r << geometry();
|
||||||
} else if (type() == PanelContainment) {
|
} else if (type() == PanelContainment) {
|
||||||
QDesktopWidget desktop;
|
QDesktopWidget desktop;
|
||||||
QRect r = desktop.screenGeometry(screen);
|
QRect r = desktop.screenGeometry(screen);
|
||||||
@ -493,7 +513,7 @@ void Containment::dropEvent(QGraphicsSceneDragDropEvent *event)
|
|||||||
QRectF geom(event->scenePos(), QSize(0, 0));
|
QRectF geom(event->scenePos(), QSize(0, 0));
|
||||||
QVariantList args;
|
QVariantList args;
|
||||||
args << url.url();
|
args << url.url();
|
||||||
// kDebug() << mimeName;
|
// kDebug() << mimeName;
|
||||||
KPluginInfo::List appletList = Applet::knownAppletsForMimetype(mimeName);
|
KPluginInfo::List appletList = Applet::knownAppletsForMimetype(mimeName);
|
||||||
|
|
||||||
if (appletList.isEmpty()) {
|
if (appletList.isEmpty()) {
|
||||||
|
Loading…
Reference in New Issue
Block a user