summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2002-08-02 16:42:23 +0000
committerDana Jansens <danakj@orodu.net>2002-08-02 16:42:23 +0000
commitd94e8c506850bc8a74ebc7b2c63e8ad242242faa (patch)
tree8fd30a35d47f5332e3d7e14babd38c2bc0d38e58
parent6fd25435889c33a627c181afca82361f1e901a8f (diff)
stab #3. window-to-window works. window-to-screen doesnt
-rw-r--r--src/Window.cc25
1 files changed, 18 insertions, 7 deletions
diff --git a/src/Window.cc b/src/Window.cc
index e17a61c3..99e19e4d 100644
--- a/src/Window.cc
+++ b/src/Window.cc
@@ -3129,22 +3129,33 @@ void BlackboxWindow::doMove(int x_root, int y_root) {
bool snapped = False;
const Rect &winrect = *it;
+
+ // if the window is already over top of this snap target, then
+ // resistance is futile, so just ignore it
+ if (screen->doOpaqueMove()) {
+ if (winrect.intersects(frame.rect))
+ continue;
+ } else {
+ if (winrect.intersects(frame.changing))
+ continue;
+ }
+
int dleft = wright - winrect.left(),
- dright = wleft - winrect.right(),
+ dright = winrect.right() - wleft,
dtop = wbottom - winrect.top(),
- dbottom = wtop - winrect.bottom();
+ dbottom = winrect.bottom() - wtop;
// if the windows are in the same plane vertically
if (wtop >= (signed)(winrect.y() - frame.rect.height() + 1) &&
wtop < (signed)(winrect.y() + winrect.height() - 1)) {
// snap left of other window?
- if (dleft > 0 && dleft < resistance_size && dleft < dright) {
+ if (dleft >= 0 && dleft < resistance_size) {
dx = winrect.left() - frame.rect.width();
snapped = True;
}
// snap right of other window?
- else if (dright > 0 && dright < resistance_size) {
+ else if (dright >= 0 && dright < resistance_size) {
dx = winrect.right() + 1;
snapped = True;
}
@@ -3169,7 +3180,7 @@ void BlackboxWindow::doMove(int x_root, int y_root) {
wleft < (signed)(winrect.x() + winrect.width() - 1)) {
// snap top of other window?
- if (dtop > 0 && dtop < resistance_size && dtop < dbottom) {
+ if (dtop >= 0 && dtop < resistance_size) {
dy = winrect.top() - frame.rect.height();
snapped = True;
}
@@ -3223,14 +3234,14 @@ void BlackboxWindow::doMove(int x_root, int y_root) {
dbottom = wbottom - srect.bottom();
// snap left?
- if (dleft > 0 && dleft < resistance_size && dleft > dright)
+ if (dleft > 0 && dleft < resistance_size)
dx = srect.left();
// snap right?
else if (dright > 0 && dright < resistance_size)
dx = srect.right() - frame.rect.width() + 1;
// snap top?
- if (dtop > 0 && dtop < resistance_size && dtop > dbottom)
+ if (dtop > 0 && dtop < resistance_size)
dy = srect.top();
// snap bottom?
else if (dbottom > 0 && dbottom < resistance_size)