diff options
author | rathnor <rathnor> | 2003-05-20 11:03:11 (GMT) |
---|---|---|
committer | rathnor <rathnor> | 2003-05-20 11:03:11 (GMT) |
commit | a88511a4a772ec021029649905b7ce645ff9a597 (patch) | |
tree | d75369cc8a4e7b2be9bf9ef1ecc3d5ac771dbc6f /src/Window.cc | |
parent | f911c4035fe86ed4c85a79f96aaab30902d56f89 (diff) | |
download | fluxbox_pavel-a88511a4a772ec021029649905b7ce645ff9a597.zip fluxbox_pavel-a88511a4a772ec021029649905b7ce645ff9a597.tar.bz2 |
xinerama for placement + snapping, + tidy
Diffstat (limited to 'src/Window.cc')
-rw-r--r-- | src/Window.cc | 46 |
1 files changed, 29 insertions, 17 deletions
diff --git a/src/Window.cc b/src/Window.cc index 032c4cd..3254b50 100644 --- a/src/Window.cc +++ b/src/Window.cc | |||
@@ -22,7 +22,7 @@ | |||
22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | 22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
23 | // DEALINGS IN THE SOFTWARE. | 23 | // DEALINGS IN THE SOFTWARE. |
24 | 24 | ||
25 | // $Id: Window.cc,v 1.182 2003/05/19 22:43:48 fluxgen Exp $ | 25 | // $Id: Window.cc,v 1.183 2003/05/20 11:03:10 rathnor Exp $ |
26 | 26 | ||
27 | #include "Window.hh" | 27 | #include "Window.hh" |
28 | 28 | ||
@@ -1381,16 +1381,17 @@ void FluxboxWindow::maximize() { | |||
1381 | 1381 | ||
1382 | if (!maximized) { | 1382 | if (!maximized) { |
1383 | // save old values | 1383 | // save old values |
1384 | int head = screen().getHead(frame().window()); | ||
1384 | m_old_width = frame().width(); | 1385 | m_old_width = frame().width(); |
1385 | m_old_height = frame().height(); | 1386 | m_old_height = frame().height(); |
1386 | m_old_pos_x = frame().x(); | 1387 | m_old_pos_x = frame().x(); |
1387 | m_old_pos_y = frame().y(); | 1388 | m_old_pos_y = frame().y(); |
1388 | unsigned int left_x = screen().maxLeft(frame().window()); | 1389 | unsigned int left_x = screen().maxLeft(head); |
1389 | unsigned int max_width = screen().maxRight(frame().window()); | 1390 | unsigned int max_width = screen().maxRight(head); |
1390 | unsigned int max_top = screen().maxTop(frame().window()); | 1391 | unsigned int max_top = screen().maxTop(head); |
1391 | moveResize(left_x, max_top, | 1392 | moveResize(left_x, max_top, |
1392 | max_width - left_x - 2*frame().window().borderWidth(), | 1393 | max_width - left_x - 2*frame().window().borderWidth(), |
1393 | screen().maxBottom(frame().window()) - max_top - 2*frame().window().borderWidth()); | 1394 | screen().maxBottom(head) - max_top - 2*frame().window().borderWidth()); |
1394 | } else { // demaximize, restore to old values | 1395 | } else { // demaximize, restore to old values |
1395 | moveResize(m_old_pos_x, m_old_pos_y, | 1396 | moveResize(m_old_pos_x, m_old_pos_y, |
1396 | m_old_width, m_old_height); | 1397 | m_old_width, m_old_height); |
@@ -1400,8 +1401,9 @@ void FluxboxWindow::maximize() { | |||
1400 | } | 1401 | } |
1401 | 1402 | ||
1402 | void FluxboxWindow::maximizeHorizontal() { | 1403 | void FluxboxWindow::maximizeHorizontal() { |
1403 | unsigned int left_x = screen().maxLeft(frame().window()); | 1404 | int head = screen().getHead(frame().window()); |
1404 | unsigned int max_width = screen().maxRight(frame().window()); | 1405 | unsigned int left_x = screen().maxLeft(head); |
1406 | unsigned int max_width = screen().maxRight(head); | ||
1405 | moveResize(left_x, frame().y(), | 1407 | moveResize(left_x, frame().y(), |
1406 | max_width - left_x - 2*frame().window().borderWidth(), frame().height()); | 1408 | max_width - left_x - 2*frame().window().borderWidth(), frame().height()); |
1407 | 1409 | ||
@@ -1411,10 +1413,11 @@ void FluxboxWindow::maximizeHorizontal() { | |||
1411 | Maximize window horizontal | 1413 | Maximize window horizontal |
1412 | */ | 1414 | */ |
1413 | void FluxboxWindow::maximizeVertical() { | 1415 | void FluxboxWindow::maximizeVertical() { |
1414 | unsigned int max_top = screen().maxTop(frame().window()); | 1416 | int head = screen().getHead(frame().window()); |
1417 | unsigned int max_top = screen().maxTop(head); | ||
1415 | moveResize(frame().x(), max_top, | 1418 | moveResize(frame().x(), max_top, |
1416 | frame().width(), | 1419 | frame().width(), |
1417 | screen().maxBottom(frame().window()) - max_top - 2*frame().window().borderWidth()); | 1420 | screen().maxBottom(head) - max_top - 2*frame().window().borderWidth()); |
1418 | } | 1421 | } |
1419 | 1422 | ||
1420 | 1423 | ||
@@ -2899,17 +2902,15 @@ inline void snapToWindow(int &xlimit, int &ylimit, | |||
2899 | } | 2902 | } |
2900 | 2903 | ||
2901 | /* | 2904 | /* |
2902 | * Do Whatever snapping magic is necessary, and return using the left and top variables | 2905 | * Do Whatever snapping magic is necessary, and return using the orig_left |
2903 | * to indicate the new x,y position | 2906 | * and orig_top variables to indicate the new x,y position |
2904 | */ | 2907 | */ |
2905 | void FluxboxWindow::doSnapping(int &orig_left, int &orig_top) { | 2908 | void FluxboxWindow::doSnapping(int &orig_left, int &orig_top) { |
2906 | /* | 2909 | /* |
2907 | * Snap to screen edge | 2910 | * Snap to screen/head edges |
2908 | * Snap to windows | 2911 | * Snap to windows |
2909 | * Snap to toolbar | 2912 | * Snap to toolbar |
2910 | * Snap to slit | 2913 | * Snap to slit |
2911 | * TODO: | ||
2912 | * Xinerama screen edge? | ||
2913 | */ | 2914 | */ |
2914 | 2915 | ||
2915 | if (screen().getEdgeSnapThreshold() == 0) return; | 2916 | if (screen().getEdgeSnapThreshold() == 0) return; |
@@ -2928,9 +2929,20 @@ void FluxboxWindow::doSnapping(int &orig_left, int &orig_top) { | |||
2928 | int bottom = orig_top + height() + 2*borderW; | 2929 | int bottom = orig_top + height() + 2*borderW; |
2929 | 2930 | ||
2930 | ///////////////////////////////////// | 2931 | ///////////////////////////////////// |
2931 | // begin by checking the screen edges | 2932 | // begin by checking the screen (or Xinerama head) edges |
2932 | 2933 | ||
2933 | snapToWindow(dx, dy, left, right, top, bottom, 0, screen().width(), 0, screen().height()); | 2934 | if (screen().hasXinerama()) { |
2935 | // head "0" == whole screen width + height, which we skip since the | ||
2936 | // sum of all the heads covers those edges | ||
2937 | for (int h = 1; h <= screen().numHeads(); h++) { | ||
2938 | snapToWindow(dx, dy, left, right, top, bottom, | ||
2939 | screen().maxLeft(h), | ||
2940 | screen().maxRight(h), | ||
2941 | screen().maxTop(h), | ||
2942 | screen().maxBottom(h)); | ||
2943 | } | ||
2944 | } else | ||
2945 | snapToWindow(dx, dy, left, right, top, bottom, 0, screen().width(), 0, screen().height()); | ||
2934 | 2946 | ||
2935 | ///////////////////////////////////// | 2947 | ///////////////////////////////////// |
2936 | // now check window edges | 2948 | // now check window edges |