[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdelibs/plasma/private
From: Marco Martin <notmart () gmail ! com>
Date: 2010-04-24 19:49:41
Message-ID: 20100424194941.9538EAC8A3 () svn ! kde ! org
[Download RAW message or body]
SVN commit 1118457 by mart:
snap with real center
M +24 -23 internaltoolbox.cpp
--- trunk/KDE/kdelibs/plasma/private/internaltoolbox.cpp #1118456:1118457
@@ -304,34 +304,35 @@
int distanceToTop = newPos.y() - d->dragStartRelative.y();
int distanceToBottom = areaHeight - h - distanceToTop;
- int distancetoHorizontalMiddle = qAbs(newPos.x() - areaWidth/2);
- int distancetoVerticalMiddle = qAbs(newPos.y() - areaHeight/2);
+ int distancetoHorizontalMiddle = qAbs((newPos.x() + \
boundingRect().size().width()/2) - areaWidth/2 - d->dragStartRelative.x()); + int \
distancetoVerticalMiddle = qAbs((newPos.y() + boundingRect().size().height()/2) - \
areaHeight/2 - d->dragStartRelative.y());
- // decide which border is the nearest
- if (distanceToLeft < distanceToTop && distanceToLeft < distanceToRight &&
- distanceToLeft < distanceToBottom ) {
- x = 0;
- y = (newPos.y() - d->dragStartRelative.y());
- } else if (distanceToRight < distanceToTop && distanceToRight < distanceToLeft \
&&
- distanceToRight < distanceToBottom) {
- x = areaWidth - w;
- y = (newPos.y() - d->dragStartRelative.y());
- } else if (distanceToTop < distanceToLeft && distanceToTop < distanceToRight &&
- distanceToTop < distanceToBottom ) {
- y = 0;
- x = (newPos.x() - d->dragStartRelative.x());
- } else if (distanceToBottom < distanceToLeft && distanceToBottom < \
distanceToRight &&
- distanceToBottom < distanceToTop) {
- y = areaHeight - h;
- x = (newPos.x() - d->dragStartRelative.x());
- }
-
if (distancetoHorizontalMiddle < 10) {
- x = areaWidth/2 - d->dragStartRelative.x();
+ x = areaWidth/2 - boundingRect().size().width()/2;
} else if (distancetoVerticalMiddle < 10) {
- y = areaHeight/2 - d->dragStartRelative.y();
+ y = areaHeight/2 - boundingRect().size().height()/2;
+ } else {
+ // decide which border is the nearest
+ if (distanceToLeft < distanceToTop && distanceToLeft < distanceToRight &&
+ distanceToLeft < distanceToBottom ) {
+ x = 0;
+ y = (newPos.y() - d->dragStartRelative.y());
+ } else if (distanceToRight < distanceToTop && distanceToRight < \
distanceToLeft && + distanceToRight < distanceToBottom) {
+ x = areaWidth - w;
+ y = (newPos.y() - d->dragStartRelative.y());
+ } else if (distanceToTop < distanceToLeft && distanceToTop < distanceToRight \
&& + distanceToTop < distanceToBottom ) {
+ y = 0;
+ x = (newPos.x() - d->dragStartRelative.x());
+ } else if (distanceToBottom < distanceToLeft && distanceToBottom < \
distanceToRight && + distanceToBottom < distanceToTop) {
+ y = areaHeight - h;
+ x = (newPos.x() - d->dragStartRelative.x());
+ }
}
+
x = qBound(0, x, areaWidth - w);
y = qBound(0, y, areaHeight - h);
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic