Fix ActiveWindow for niri
This commit is contained in:
parent
586a8add08
commit
d2e53592ed
1 changed files with 62 additions and 0 deletions
|
|
@ -281,6 +281,68 @@ Singleton {
|
||||||
|
|
||||||
if (event.WorkspacesChanged) {
|
if (event.WorkspacesChanged) {
|
||||||
niriWorkspaceProcess.running = true
|
niriWorkspaceProcess.running = true
|
||||||
|
} else if (event.WindowOpenedOrChanged) {
|
||||||
|
try {
|
||||||
|
const windowData = event.WindowOpenedOrChanged.window
|
||||||
|
|
||||||
|
// Find if this window already exists
|
||||||
|
const existingIndex = windows.findIndex(w => w.id === windowData.id)
|
||||||
|
|
||||||
|
const newWindow = {
|
||||||
|
"id": windowData.id,
|
||||||
|
"title": windowData.title || "",
|
||||||
|
"appId": windowData.app_id || "",
|
||||||
|
"workspaceId": windowData.workspace_id || null,
|
||||||
|
"isFocused": windowData.is_focused === true
|
||||||
|
}
|
||||||
|
|
||||||
|
if (existingIndex >= 0) {
|
||||||
|
// Update existing window
|
||||||
|
windows[existingIndex] = newWindow
|
||||||
|
} else {
|
||||||
|
// Add new window
|
||||||
|
windows.push(newWindow)
|
||||||
|
windows.sort((a, b) => a.id - b.id)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update focused window index if this window is focused
|
||||||
|
if (newWindow.isFocused) {
|
||||||
|
focusedWindowIndex = windows.findIndex(w => w.id === windowData.id)
|
||||||
|
updateFocusedWindowTitle()
|
||||||
|
activeWindowChanged()
|
||||||
|
}
|
||||||
|
|
||||||
|
windowListChanged()
|
||||||
|
} catch (e) {
|
||||||
|
Logger.error("Compositor", "Error parsing WindowOpenedOrChanged event:", e)
|
||||||
|
}
|
||||||
|
} else if (event.WindowClosed) {
|
||||||
|
try {
|
||||||
|
const windowId = event.WindowClosed.id
|
||||||
|
|
||||||
|
// Remove the window from the list
|
||||||
|
const windowIndex = windows.findIndex(w => w.id === windowId)
|
||||||
|
if (windowIndex >= 0) {
|
||||||
|
// If this was the focused window, clear focus
|
||||||
|
if (windowIndex === focusedWindowIndex) {
|
||||||
|
focusedWindowIndex = -1
|
||||||
|
updateFocusedWindowTitle()
|
||||||
|
activeWindowChanged()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Remove the window
|
||||||
|
windows.splice(windowIndex, 1)
|
||||||
|
|
||||||
|
// Adjust focused window index if needed
|
||||||
|
if (focusedWindowIndex > windowIndex) {
|
||||||
|
focusedWindowIndex--
|
||||||
|
}
|
||||||
|
|
||||||
|
windowListChanged()
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
Logger.error("Compositor", "Error parsing WindowClosed event:", e)
|
||||||
|
}
|
||||||
} else if (event.WindowsChanged) {
|
} else if (event.WindowsChanged) {
|
||||||
try {
|
try {
|
||||||
const windowsData = event.WindowsChanged.windows
|
const windowsData = event.WindowsChanged.windows
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue