Added above/below

This commit is contained in:
Fmstrat
2019-12-30 14:15:39 -05:00
parent 395b3f9707
commit 16575d682f

View File

@@ -13,7 +13,7 @@ let config = {
let _close = 50; let _close = 50;
var debug = true; var debug = true;
// View logs with `journalctl -f |grep WinTile` // View logs with `journalctl -qf |grep WinTile`
var _log = function(str) { var _log = function(str) {
if (debug) { if (debug) {
log('[WinTile]', str); log('[WinTile]', str);
@@ -175,23 +175,10 @@ function getDefaultFloatingRectangle(workspace) {
} }
function getMonitorArray() { function getMonitorArray() {
var monitors = [];
for (var i = 0; i < Main.layoutManager.monitors.length; i++) {
monitors.push({ "index": i, "x": Main.layoutManager.monitors[i].x });
}
monitors.sort(function(a, b) {
return a.x - b.x;
});
for (var i = 0; i < monitors.length; i++) {
_log(JSON.stringify(monitors[i]));
}
if (debug) { if (debug) {
var monitors = Main.layoutManager.monitors; for (var i = 0; i < Main.layoutManager.monitors.length; i++) {
monitors.sort(function(a, b) { _log(JSON.stringify(Main.layoutManager.monitors[i]));
}); }
let monWidth = Main.layoutManager.monitors[mon].width;
let monHeight = Main.layoutManager.monitors[mon].height;
_log("mon: " + mon);
} }
} }
@@ -207,18 +194,29 @@ function moveWindow(direction) {
app.originalFloatingRectangle = app.get_frame_rect(); app.originalFloatingRectangle = app.get_frame_rect();
} }
//var monitors = getMonitorArray(); var monitors = getMonitorArray();
var curMonitor = app.get_monitor(); var curMonitor = app.get_monitor();
let monitorToLeft = -1; let monitorToLeft = -1;
let monitorToRight = -1; let monitorToRight = -1;
let monitorAbove = -1;
let monitorBelow = -1;
for (var i = 0; i < Main.layoutManager.monitors.length; i++) { for (var i = 0; i < Main.layoutManager.monitors.length; i++) {
// TODO:
// Need to determine when a monitor is above/below/to the side, which one has the closest x/y.
// Currently stacked or side-by-side monitors may conflict if they are different resolutions.
if (Main.layoutManager.monitors[i].y < Main.layoutManager.monitors[curMonitor].y && (monitorAbove == -1 || (monitorAbove >= 0 && Main.layoutManager.monitors[i].y > Main.layoutManager.monitors[monitorAbove].y)))
monitorAbove = i;
if (Main.layoutManager.monitors[i].y > Main.layoutManager.monitors[curMonitor].y && (monitorBelow == -1 || (monitorBelow >= 0 && Main.layoutManager.monitors[i].x < Main.layoutManager.monitors[monitorBelow].x)))
monitorBelow = i;
if (Main.layoutManager.monitors[i].x < Main.layoutManager.monitors[curMonitor].x && (monitorToLeft == -1 || (monitorToLeft >= 0 && Main.layoutManager.monitors[i].x > Main.layoutManager.monitors[monitorToLeft].x))) if (Main.layoutManager.monitors[i].x < Main.layoutManager.monitors[curMonitor].x && (monitorToLeft == -1 || (monitorToLeft >= 0 && Main.layoutManager.monitors[i].x > Main.layoutManager.monitors[monitorToLeft].x)))
monitorToLeft = i; monitorToLeft = i;
if (Main.layoutManager.monitors[i].x > Main.layoutManager.monitors[curMonitor].x && (monitorToRight == -1 || (monitorToRight >= 0 && Main.layoutManager.monitors[i].x < Main.layoutManager.monitors[monitorToRight].x))) if (Main.layoutManager.monitors[i].x > Main.layoutManager.monitors[curMonitor].x && (monitorToRight == -1 || (monitorToRight >= 0 && Main.layoutManager.monitors[i].x < Main.layoutManager.monitors[monitorToRight].x)))
monitorToRight = i; monitorToRight = i;
} }
_log("monitorToLeft: " + monitorToLeft); _log("monitorToLeft: " + monitorToLeft);
_log("monitorToRight " + monitorToRight); _log("monitorToRight: " + monitorToRight);
_log("monitorAbove: " + monitorAbove);
_log("monitorBelow: " + monitorBelow);
switch (direction) { switch (direction) {
case "left": case "left":