[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdebase/workspace/krunner
From: Jacopo De Simoi <wilderkde () gmail ! com>
Date: 2010-07-15 22:05:13
Message-ID: 20100715220513.72632AC73D () svn ! kde ! org
[Download RAW message or body]
SVN commit 1150419 by jacopods:
forwardport r1150418, store the dialog position relative to the screen,
not in absolute coordinates
CCBUG:243898
M +18 -4 krunnerdialog.cpp
--- trunk/KDE/kdebase/workspace/krunner/krunnerdialog.cpp #1150418:1150419
@@ -156,14 +156,28 @@
if (m_oldScreen != screen) {
//kDebug() << "old screen be the new screen" << m_oldScreen << screen;
if (m_oldScreen != -1) {
- m_screenPos.insert(m_oldScreen, pos());
+ QRect oldRect = Kephal::ScreenUtils::screenGeometry(m_oldScreen);
+ // Store the position relative to the screen topLeft corner.
+ // Since the geometry of screens might change between sessions
+ // storing the absolute position might lead to issues such as bug \
#243898 + m_screenPos.insert(m_oldScreen, pos() - oldRect.topLeft());
}
m_oldScreen = screen;
if (m_screenPos.contains(screen)) {
//kDebug() << "moving to" << m_screenPos[screen];
- move(m_screenPos[screen]);
+
+ // Checks that the stored position is still a valid position on screen
+ // if not, remove the stored position so that it is reset later
+ if (r.contains(m_screenPos[screen] + r.topLeft()) &&
+ r.contains(m_screenPos[screen] + r.topLeft() + QPoint(width()-1, \
0))) { + move(m_screenPos[screen] + r.topLeft());
} else {
+ m_screenPos.remove(screen);
+ }
+ }
+
+ if (!m_screenPos.contains(screen)) {
const int w = width();
const int dx = r.left() + (r.width() / 2) - (w / 2);
int dy = r.top();
@@ -194,7 +208,7 @@
void KRunnerDialog::moveEvent(QMoveEvent *)
{
- m_screenPos.insert(m_oldScreen, pos());
+ m_screenPos.insert(m_oldScreen, pos() - \
Kephal::ScreenUtils::screenGeometry(m_oldScreen).topLeft()); }
void KRunnerDialog::setFreeFloating(bool floating)
@@ -399,7 +413,7 @@
const int dx = x() + (e->oldSize().width() / 2) - (width() / 2);
int dy = r.top();
move(qBound(r.left(), dx, r.right() - width() + 1), dy);
- m_screenPos.insert(m_oldScreen, pos());
+ m_screenPos.insert(m_oldScreen, pos() - \
Kephal::ScreenUtils::screenGeometry(m_oldScreen).topLeft()); if (!checkBorders(r)) {
updateMask();
}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic