fix issue w resizing on far ends and min size for blobcat

This commit is contained in:
trinkey 2025-02-13 19:14:21 -05:00
parent 9d6d00165a
commit 3b0c5e52e2
4 changed files with 28 additions and 18 deletions

View file

@ -61,7 +61,9 @@ function createBlob() {
content: "<div id='blobcat'></div>", content: "<div id='blobcat'></div>",
onDestroy: destroyBlob, onDestroy: destroyBlob,
height: 450, height: 450,
typeable: false typeable: false,
minWidth: 350,
minHeight: 400
}); });
blobcatElement = document.getElementById("blobcat"); blobcatElement = document.getElementById("blobcat");
} }

View file

@ -16,15 +16,13 @@ function incrementZIndex(windowID, focus = false) {
} }
function edgeMoveEvent(x, y, pos, windowID) { function edgeMoveEvent(x, y, pos, windowID) {
let w = WINDOWS[windowID]; let w = WINDOWS[windowID];
if (x - w.vars.mouseOffsetX < 0) {
x = w.vars.mouseOffsetX;
}
if (y - w.vars.mouseOffsetY < 0) {
y = w.vars.mouseOffsetY;
}
if (pos == "top" || pos.startsWith("top-")) { if (pos == "top" || pos.startsWith("top-")) {
w.height = Math.max(-(y - w.vars.mouseOffsetY - w.vars.startingPosY) + w.vars.startingHeight, w.minHeight); w.height = Math.max(-(y - w.vars.mouseOffsetY - w.vars.startingPosY) + w.vars.startingHeight, w.minHeight);
w.posY = Math.max(w.vars.startingHeight - w.height + w.vars.startingPosY, 0); w.posY = Math.max(w.vars.startingHeight - w.height + w.vars.startingPosY, 0);
if (w.posY < 0) {
w.height -= w.posY;
w.posY = 0;
}
} }
else if (pos == "bottom" || pos.startsWith("bottom-")) { else if (pos == "bottom" || pos.startsWith("bottom-")) {
w.height = Math.max(y - w.vars.mouseOffsetY - w.vars.startingPosY + w.vars.startingHeight, w.minHeight); w.height = Math.max(y - w.vars.mouseOffsetY - w.vars.startingPosY + w.vars.startingHeight, w.minHeight);
@ -32,8 +30,13 @@ function edgeMoveEvent(x, y, pos, windowID) {
if (pos == "left" || pos.endsWith("-left")) { if (pos == "left" || pos.endsWith("-left")) {
w.width = Math.max(-(x - w.vars.mouseOffsetX - w.vars.startingPosX) + w.vars.startingWidth, w.minWidth); w.width = Math.max(-(x - w.vars.mouseOffsetX - w.vars.startingPosX) + w.vars.startingWidth, w.minWidth);
w.posX = Math.max(w.vars.startingWidth - w.width + w.vars.startingPosX, 0); w.posX = Math.max(w.vars.startingWidth - w.width + w.vars.startingPosX, 0);
if (w.posX < 0) {
w.width -= w.posX;
w.posX = 0;
}
} }
else if (pos == "right" || pos.endsWith("-right")) { else if (pos == "right" || pos.endsWith("-right")) {
console.log(x - w.vars.mouseOffsetX - w.vars.startingPosX + w.vars.startingWidth, w.minWidth);
w.width = Math.max(x - w.vars.mouseOffsetX - w.vars.startingPosX + w.vars.startingWidth, w.minWidth); w.width = Math.max(x - w.vars.mouseOffsetX - w.vars.startingPosX + w.vars.startingWidth, w.minWidth);
} }
if (w.posX + w.width + _windowPaddingX > innerWidth) { if (w.posX + w.width + _windowPaddingX > innerWidth) {

View file

@ -80,7 +80,9 @@ function createBlob(): void {
content: "<div id='blobcat'></div>", content: "<div id='blobcat'></div>",
onDestroy: destroyBlob, onDestroy: destroyBlob,
height: 450, height: 450,
typeable: false typeable: false,
minWidth: 350,
minHeight: 400
}); });
blobcatElement = document.getElementById("blobcat") as HTMLDivElement; blobcatElement = document.getElementById("blobcat") as HTMLDivElement;

View file

@ -31,12 +31,14 @@ function incrementZIndex(windowID: string, focus: boolean=false): void {
function edgeMoveEvent(x: number, y: number, pos: "top" | "bottom" | "left" | "right" | "top-left" | "top-right" | "bottom-left" | "bottom-right" | string, windowID: string): void { function edgeMoveEvent(x: number, y: number, pos: "top" | "bottom" | "left" | "right" | "top-left" | "top-right" | "bottom-left" | "bottom-right" | string, windowID: string): void {
let w: _winConf = WINDOWS[windowID]; let w: _winConf = WINDOWS[windowID];
if (x - w.vars.mouseOffsetX < 0) { x = w.vars.mouseOffsetX; }
if (y - w.vars.mouseOffsetY < 0) { y = w.vars.mouseOffsetY; }
if (pos == "top" || pos.startsWith("top-")) { if (pos == "top" || pos.startsWith("top-")) {
w.height = Math.max(-(y - w.vars.mouseOffsetY - w.vars.startingPosY) + w.vars.startingHeight, w.minHeight); w.height = Math.max(-(y - w.vars.mouseOffsetY - w.vars.startingPosY) + w.vars.startingHeight, w.minHeight);
w.posY = Math.max(w.vars.startingHeight - w.height + w.vars.startingPosY, 0); w.posY = Math.max(w.vars.startingHeight - w.height + w.vars.startingPosY, 0);
if (w.posY < 0) {
w.height -= w.posY;
w.posY = 0;
}
} else if (pos == "bottom" || pos.startsWith("bottom-")) { } else if (pos == "bottom" || pos.startsWith("bottom-")) {
w.height = Math.max(y - w.vars.mouseOffsetY - w.vars.startingPosY + w.vars.startingHeight, w.minHeight); w.height = Math.max(y - w.vars.mouseOffsetY - w.vars.startingPosY + w.vars.startingHeight, w.minHeight);
} }
@ -44,17 +46,18 @@ function edgeMoveEvent(x: number, y: number, pos: "top" | "bottom" | "left" | "r
if (pos == "left" || pos.endsWith("-left")) { if (pos == "left" || pos.endsWith("-left")) {
w.width = Math.max(-(x - w.vars.mouseOffsetX - w.vars.startingPosX) + w.vars.startingWidth, w.minWidth); w.width = Math.max(-(x - w.vars.mouseOffsetX - w.vars.startingPosX) + w.vars.startingWidth, w.minWidth);
w.posX = Math.max(w.vars.startingWidth - w.width + w.vars.startingPosX, 0); w.posX = Math.max(w.vars.startingWidth - w.width + w.vars.startingPosX, 0);
if (w.posX < 0) {
w.width -= w.posX;
w.posX = 0;
}
} else if (pos == "right" || pos.endsWith("-right")) { } else if (pos == "right" || pos.endsWith("-right")) {
console.log(x - w.vars.mouseOffsetX - w.vars.startingPosX + w.vars.startingWidth, w.minWidth);
w.width = Math.max(x - w.vars.mouseOffsetX - w.vars.startingPosX + w.vars.startingWidth, w.minWidth); w.width = Math.max(x - w.vars.mouseOffsetX - w.vars.startingPosX + w.vars.startingWidth, w.minWidth);
} }
if (w.posX + w.width + _windowPaddingX > innerWidth ) { if (w.posX + w.width + _windowPaddingX > innerWidth ) { w.width = Math.max(innerWidth - w.posX - _windowPaddingX, w.minWidth); }
w.width = Math.max(innerWidth - w.posX - _windowPaddingX, w.minWidth); if (w.posY + w.height + _windowPaddingY > innerHeight) { w.height = Math.max(innerHeight - w.posY - _windowPaddingY, w.minHeight); }
}
if (w.posY + w.height + _windowPaddingY > innerHeight) {
w.height = Math.max(innerHeight - w.posY - _windowPaddingY, w.minHeight);
}
w.element.style.left = `${w.posX}px`; w.element.style.left = `${w.posX}px`;
w.element.style.top = `${w.posY}px`; w.element.style.top = `${w.posY}px`;