diff --git a/src/widgets/window.ts b/src/widgets/window.ts index 8cb2647..0557a18 100644 --- a/src/widgets/window.ts +++ b/src/widgets/window.ts @@ -19,6 +19,7 @@ export interface WindowProps extends BaseProps, Gtk.Window.Constructo layer?: Layer margins?: number[] monitor?: number + gdkmonitor?: Gdk.Monitor popup?: boolean visible?: boolean } @@ -48,6 +49,7 @@ export default class AgsWindow extends AgsWidget(Gtk.Window) { layer = 'top', margins = [], monitor = -1, + gdkmonitor = undefined, popup = false, visible = true, ...params @@ -62,19 +64,26 @@ export default class AgsWindow extends AgsWidget(Gtk.Window) { this.layer = layer; this.margins = margins; this.monitor = monitor; + if (gdkmonitor) + this.gdkmonitor = gdkmonitor; this.show_all(); this.popup = popup; this.visible = visible === true || visible === null && !popup; } + _gdkmonitor: Gdk.Monitor | null = null; + get gdkmonitor(): Gdk.Monitor { return this._gdkmonitor ?? this.monitor } + set gdkmonitor(monitor: Gdk.Monitor ) { + this._gdkmonitor = monitor; + LayerShell.set_monitor(this, monitor); + } + get monitor(): Gdk.Monitor { return this._get('monitor'); } - set monitor(monitor: number | Gdk.Monitor) { - if (typeof monitor === "number" && monitor < 0) + set monitor(monitor: number) { + if (monitor < 0) return; - const m = monitor instanceof Gdk.Monitor - ? LayerShell.set_monitor(this, monitor) - : Gdk.Display.get_default()?.get_monitor(monitor); + const m = Gdk.Display.get_default()?.get_monitor(monitor); if (m) { LayerShell.set_monitor(this, m); this._set('monitor', monitor);