From: Dana Jansens Date: Thu, 27 Jun 2002 17:54:32 +0000 (+0000) Subject: make fully max'd windows properly snap X-Git-Url: https://git.brokenzipper.com/gitweb?a=commitdiff_plain;h=578a5cc980dd39430fe803a4ca9719075e78e986;p=chaz%2Fopenbox make fully max'd windows properly snap --- diff --git a/src/Window.cc b/src/Window.cc index 99db605c..7c5b823b 100644 --- a/src/Window.cc +++ b/src/Window.cc @@ -2891,17 +2891,17 @@ void BlackboxWindow::doMove(int x_root, int y_root) { dbottom = std::abs(wbottom - srect.bottom()); // snap left? - if (dleft < snap_distance && dleft < dright) + if (dleft < snap_distance && dleft <= dright) dx = srect.left(); // snap right? - else if (dright < snap_distance && dright < dleft) + else if (dright < snap_distance) dx = srect.right() - frame.rect.width() + 1; // snap top? - if (dtop < snap_distance && dtop < dbottom) + if (dtop < snap_distance && dtop <= dbottom) dy = srect.top(); // snap bottom? - else if (dbottom < snap_distance && dbottom < dtop) + else if (dbottom < snap_distance) dy = srect.bottom() - frame.rect.height() + 1; srect = screen->getRect(); // now get the full screen @@ -2912,17 +2912,17 @@ void BlackboxWindow::doMove(int x_root, int y_root) { dbottom = std::abs(wbottom - srect.bottom()); // snap left? - if (dleft < snap_distance && dleft < dright) + if (dleft < snap_distance && dleft <= dright) dx = srect.left(); // snap right? - else if (dright < snap_distance && dright < dleft) + else if (dright < snap_distance) dx = srect.right() - frame.rect.width() + 1; // snap top? - if (dtop < snap_distance && dtop < dbottom) + if (dtop < snap_distance && dtop <= dbottom) dy = srect.top(); // snap bottom? - else if (dbottom < snap_distance && dbottom < dtop) + else if (dbottom < snap_distance) dy = srect.bottom() - frame.rect.height() + 1; } diff --git a/src/XAtom.cc b/src/XAtom.cc index 545739ab..5945b833 100644 --- a/src/XAtom.cc +++ b/src/XAtom.cc @@ -357,12 +357,14 @@ bool XAtom::getValue(Window win, Atom atom, Atom type, Atom ret_type; int ret_size; unsigned long ret_bytes; + int result; const unsigned long maxread = nelements; // try get the first element - XGetWindowProperty(_display, win, atom, 0l, 1l, False, AnyPropertyType, - &ret_type, &ret_size, &nelements, &ret_bytes, &c_val); - if (ret_type == None || nelements < 1) - // the property does not exist on the window or is empty + result = XGetWindowProperty(_display, win, atom, 0l, 1l, False, + AnyPropertyType, &ret_type, &ret_size, + &nelements, &ret_bytes, &c_val); + if (result != Success || ret_type == None || nelements < 1) + // an error occured, the property does not exist on the window, or is empty return false; if (ret_type != type || ret_size != size) { // wrong data in property @@ -384,8 +386,10 @@ bool XAtom::getValue(Window win, Atom atom, Atom type, int remain = (ret_bytes - 1)/sizeof(long) + 1 + 1; if (remain > size/8 * (signed)maxread) // dont get more than the max remain = size/8 * (signed)maxread; - XGetWindowProperty(_display, win, atom, 0l, remain, False, type, &ret_type, - &ret_size, &nelements, &ret_bytes, &c_val); + result = XGetWindowProperty(_display, win, atom, 0l, remain, False, type, + &ret_type, &ret_size, &nelements, &ret_bytes, + &c_val); + assert(result == Success); assert(ret_bytes == 0); *value = new unsigned char[nelements * size/8 + 1]; memcpy(*value, c_val, nelements * size/8 + 1);