start making window sizable
This commit is contained in:
parent
a56e1d253e
commit
91be4dcc63
@ -7,6 +7,7 @@ export default class Window {
|
|||||||
header: HTMLDivElement;
|
header: HTMLDivElement;
|
||||||
/** the os application that this window is for */
|
/** the os application that this window is for */
|
||||||
application: Application;
|
application: Application;
|
||||||
|
resize_start_pos: { x: number, y: number } = { x: 0, y: 0 };
|
||||||
|
|
||||||
constructor(application: Application) {
|
constructor(application: Application) {
|
||||||
this.element.classList.add("bg-[#ccc]", "absolute", "rounded-lg", "shadow-xl");
|
this.element.classList.add("bg-[#ccc]", "absolute", "rounded-lg", "shadow-xl");
|
||||||
@ -143,8 +144,31 @@ export default class Window {
|
|||||||
|
|
||||||
|
|
||||||
private _resize_start(e: MouseEvent, dir: 'l' | 'r' | 't' | 'b') {
|
private _resize_start(e: MouseEvent, dir: 'l' | 'r' | 't' | 'b') {
|
||||||
// TODO finish
|
console.log(e)
|
||||||
console.log({e, dir})
|
const { x, y } = this._get_mouse_position(e);
|
||||||
|
const { width: w, height: h } = this.element.getBoundingClientRect();
|
||||||
|
|
||||||
|
const new_size = { w, h };
|
||||||
|
if (dir === 'l') {
|
||||||
|
new_size.w -= x - this.resize_start_pos.x;
|
||||||
|
} else if (dir === 'r') {
|
||||||
|
new_size.w += x - this.resize_start_pos.x;
|
||||||
|
} else if (dir === 't') {
|
||||||
|
new_size.h -= y - this.resize_start_pos.y;
|
||||||
|
} else if (dir === 'b') {
|
||||||
|
new_size.h += y - this.resize_start_pos.y;
|
||||||
|
}
|
||||||
|
this.element.style.width = `${new_size.w}px`;
|
||||||
|
this.element.style.height = `${new_size.h}px`;
|
||||||
|
this.resize_start_pos = { x, y };
|
||||||
|
}
|
||||||
|
|
||||||
|
private _get_mouse_position(e: MouseEvent): { x: number, y: number } {
|
||||||
|
const rect = this.element.getBoundingClientRect();
|
||||||
|
return {
|
||||||
|
x: e.clientX - rect.left,
|
||||||
|
y: e.clientY - rect.top
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user