mirror of
https://github.com/gosticks/PaperWM.git
synced 2026-08-16 22:20:28 +00:00
app: return promised window
This commit is contained in:
@@ -116,7 +116,7 @@ function newGnomeTerminal(metaWindow, app) {
|
||||
function duplicateWindow(metaWindow) {
|
||||
metaWindow = metaWindow || global.display.focus_window;
|
||||
let app = Tracker.get_window_app(metaWindow);
|
||||
let promisedWindow = new Promise(
|
||||
let promisedWindow = new Promise(
|
||||
(resolve, reject) => {
|
||||
let id = global.display.connect('window-created', (d, mw) => {
|
||||
global.display.disconnect(id);
|
||||
@@ -143,24 +143,43 @@ function trySpawnWindow(app, workspace) {
|
||||
if (typeof(app) === 'string') {
|
||||
app = new Shell.App({ app_info: Gio.DesktopAppInfo.new(app) });
|
||||
}
|
||||
let promisedWindow = new Promise(
|
||||
(resolve, reject) => {
|
||||
let id = global.display.connect('window-created', (d, mw) => {
|
||||
global.display.disconnect(id);
|
||||
resolve(mw);
|
||||
});
|
||||
}
|
||||
);
|
||||
let handler = customSpawnHandlers[app.id];
|
||||
if (handler) {
|
||||
let space = Tiling.spaces.selectedSpace;
|
||||
return handler(app, space);
|
||||
handler(app, space);
|
||||
} else {
|
||||
launchFromWorkspaceDir(app, workspace);
|
||||
}
|
||||
return promisedWindow;
|
||||
}
|
||||
|
||||
function spawnWindow(app, workspace) {
|
||||
if (typeof(app) === 'string') {
|
||||
app = new Shell.App({ app_info: Gio.DesktopAppInfo.new(app) });
|
||||
}
|
||||
log(`foo`);
|
||||
try {
|
||||
return trySpawnWindow(app, workspace);
|
||||
} catch(e) {
|
||||
let promisedWindow = new Promise(
|
||||
(resolve, reject) => {
|
||||
let id = global.display.connect('window-created', (d, mw) => {
|
||||
global.display.disconnect(id);
|
||||
resolve(mw);
|
||||
});
|
||||
}
|
||||
);
|
||||
// Let the overide take care any fallback
|
||||
return app.open_new_window(-1);
|
||||
app.open_new_window(-1);
|
||||
return promisedWindow;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -154,7 +154,7 @@ var ActionDispatcher = class {
|
||||
let action = Keybindings.byId(mutterActionId);
|
||||
let space = Tiling.spaces.selectedSpace;
|
||||
// Make sure the window is alive
|
||||
if (this.focus && !this.focus.get_compositor_private())
|
||||
if (!this.focus || !this.focus.get_compositor_private())
|
||||
this.focus = space.selectedWindow;
|
||||
let metaWindow = this.focus;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user