From a5c86e540052b5f7a2111ca522f61134503fad3a Mon Sep 17 00:00:00 2001 From: Weng Xuetian Date: Mon, 18 Apr 2016 21:16:59 -0700 Subject: [PATCH] do not resize window that overlaps with current window. --- contents/code/main.js | 44 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/contents/code/main.js b/contents/code/main.js index 5910036..371dd47 100644 --- a/contents/code/main.js +++ b/contents/code/main.js @@ -27,6 +27,7 @@ var config = { enabledUsually: true, ignoreMaximized: true, ignoreShaded: true, + ignoreOverlapped: true, liveUpdate: true, opacityOfSnapped: 0.75 }; @@ -80,6 +81,46 @@ function clientRemoved(client) { } } + +function rectIntersects(rt1, rt2) +{ + var l1 = rt1.x1; + var r1 = rt1.x1; + if (rt1.x2 - rt1.x1 + 1 < 0) + l1 = rt1.x2; + else + r1 = rt1.x2; + + var l2 = rt2.x1; + var r2 = rt2.x1; + if (rt2.x2 - rt2.x1 + 1 < 0) + l2 = rt2.x2; + else + r2 = rt2.x2; + + if (l1 >= r2 || l2 >= r1) + return false; + + var t1 = rt1.y1; + var b1 = rt1.y1; + if (rt1.y2 - rt1.y1 + 1 < 0) + t1 = rt1.y2; + else + b1 = rt1.y2; + + var t2 = rt2.y1; + var b2 = rt2.y1; + if (rt2.y2 - rt2.y1 + 1 < 0) + t2 = rt2.y2; + else + b2 = rt2.y2; + + if (t1 >= b2 || t2 >= b1) + return false; + + return true; +} + function clientStartUserMovedResized(client) { if (!config.enabledCurrently) return; if (!client.resize) return; @@ -105,6 +146,9 @@ function clientStartUserMovedResized(client) { if (config.ignoreShaded && c.shade) continue; if (config.ignoreMaximized && shallowEquals(g, workspace.clientArea(workspace.MaximizeArea, c))) continue; if (c.activities.length !== 0 && c.activities.indexOf(workspace.currentActivity) === -1) continue; + var rt1 = { x1 : l1, x2 : r1, y1 : t1, y2 : b1 }; + var rt2 = { x1 : l2, x2 : r2, y1 : t2, y2 : b2 }; + if (config.ignoreOverlapped && rectIntersects(rt1, rt2)) continue; var snap = { lr: l1 === r2,