fix: allow windows to be moved in the overview
This commit is contained in:
@ -46,6 +46,8 @@ export default class WindowManager implements IWindowManager {
|
||||
_grabbedWindowId: number = _UNUSED_WINDOW_ID;
|
||||
_changingGrabbedMonitor: boolean = false;
|
||||
|
||||
_showingOverview: boolean = false;
|
||||
|
||||
constructor() {
|
||||
|
||||
|
||||
@ -74,6 +76,10 @@ export default class WindowManager implements IWindowManager {
|
||||
}),
|
||||
global.display.connect("window-entered-monitor", (display, monitor, window) => {
|
||||
Logger.log("WINDOW HAS ENTERED NEW MONITOR!")
|
||||
if (this._showingOverview) {
|
||||
Logger.log("WINDOW HAS ENTERED NEW MONITOR IN OVERVIEW - MOVING")
|
||||
this._moveWindowToMonitor(window, monitor)
|
||||
}
|
||||
}),
|
||||
global.display.connect('window-created', (display, window) => {
|
||||
this.handleWindowCreated(display, window);
|
||||
@ -122,6 +128,7 @@ export default class WindowManager implements IWindowManager {
|
||||
Main.overview.connect("hiding", () => {
|
||||
// this.fromOverview = true;
|
||||
Logger.log("HIDING OVERVIEW")
|
||||
this._showingOverview = false;
|
||||
this._tileMonitors();
|
||||
// const eventObj = {
|
||||
// name: "focus-after-overview",
|
||||
@ -132,7 +139,7 @@ export default class WindowManager implements IWindowManager {
|
||||
// this.queueEvent(eventObj);
|
||||
}),
|
||||
Main.overview.connect("showing", () => {
|
||||
// this.toOverview = true;
|
||||
this._showingOverview = true;
|
||||
Logger.log("SHOWING OVERVIEW");
|
||||
}),
|
||||
];
|
||||
@ -209,6 +216,25 @@ export default class WindowManager implements IWindowManager {
|
||||
this._getWrappedWindow(window)?.stopDragging();
|
||||
Logger.info("Release Location", window.get_monitor(), rect.x, rect.y, rect.width, rect.height)
|
||||
// previously window was moved to a new monitor here instead of it being fluid during drag events.
|
||||
const old_mon_id = this._grabbedWindowMonitor;
|
||||
const new_mon_id = window.get_monitor();
|
||||
Logger.info("MONITOR MATCH", old_mon_id !== new_mon_id);
|
||||
if (old_mon_id !== new_mon_id) {
|
||||
Logger.trace("MOVING MONITOR");
|
||||
let old_mon = this._monitors.get(old_mon_id);
|
||||
let new_mon = this._monitors.get(new_mon_id);
|
||||
if (old_mon === undefined || new_mon === undefined) {
|
||||
return;
|
||||
}
|
||||
|
||||
let wrapped = old_mon.getWindow(window.get_id())
|
||||
if (wrapped === undefined) {
|
||||
wrapped = new WindowWrapper(window, this.handleWindowMinimized);
|
||||
} else {
|
||||
old_mon.removeWindow(wrapped)
|
||||
}
|
||||
new_mon.addWindow(wrapped)
|
||||
}
|
||||
this._tileMonitors();
|
||||
Logger.info("monitor_start and monitor_end", this._grabbedWindowMonitor, window.get_monitor());
|
||||
}
|
||||
|
Reference in New Issue
Block a user