(metaWindow, options = {})
| 3992 | created to ensure that the WindowActor exists. |
| 3993 | */ |
| 3994 | export function insertWindow(metaWindow, options = {}) { |
| 3995 | const existing = options?.existing ?? false; |
| 3996 | const dropping = options?.dropping ?? false; |
| 3997 | const dropCallback = options?.dropCallback ?? function() {}; |
| 3998 | |
| 3999 | // Add newly created windows to the space being previewed |
| 4000 | if (!existing && |
| 4001 | !metaWindow.is_on_all_workspaces() && |
| 4002 | metaWindow.get_workspace() !== spaces.selectedSpace.workspace) { |
| 4003 | metaWindow.redirected = true; |
| 4004 | metaWindow.change_workspace(spaces.selectedSpace.workspace); |
| 4005 | return; |
| 4006 | } |
| 4007 | |
| 4008 | const connectSizeChanged = tiled => { |
| 4009 | if (tiled) { |
| 4010 | animateWindow(metaWindow); |
| 4011 | } |
| 4012 | addResizeHandler(metaWindow); |
| 4013 | addPositionHandler(metaWindow); |
| 4014 | |
| 4015 | delete metaWindow.unmapped; |
| 4016 | }; |
| 4017 | |
| 4018 | const actor = metaWindow.get_compositor_private(); |
| 4019 | |
| 4020 | let overwriteSpace; |
| 4021 | if (!existing) { |
| 4022 | /** |
| 4023 | * Note: Can't trust global.display.focus_window to determine currently focused window. |
| 4024 | * The mru is more flexible. (global.display.focus_window does not always agree with mru[0]). |
| 4025 | */ |
| 4026 | let mru = display.get_tab_list(Meta.TabList.NORMAL_ALL, null); |
| 4027 | let focusWindow = mru[0]; |
| 4028 | |
| 4029 | if (focusWindow === metaWindow) { |
| 4030 | focusWindow = mru[1]; |
| 4031 | } |
| 4032 | |
| 4033 | let addToScratch = false; |
| 4034 | |
| 4035 | let winprop = Settings.find_winprop(metaWindow); |
| 4036 | if (winprop) { |
| 4037 | if (winprop.oneshot) { |
| 4038 | Settings.winprops.splice(Settings.winprops.indexOf(winprop), 1); |
| 4039 | } |
| 4040 | if (winprop.scratch_layer) { |
| 4041 | console.debug("#winprops", `Move ${metaWindow?.title} to scratch`); |
| 4042 | addToScratch = true; |
| 4043 | } |
| 4044 | |
| 4045 | // pass winprop properties to metaWindow |
| 4046 | metaWindow.preferredWidth = winprop.preferredWidth; |
| 4047 | |
| 4048 | overwriteSpace = winprop.spaceIndex; |
| 4049 | if (overwriteSpace !== undefined) { |
| 4050 | if (typeof overwriteSpace !== "number") { |
| 4051 | console.error("#winprops", `${overwriteSpace} is not a valid index. Ignoring.`); |
no test coverage detected