Fix MRU ordering across workspaces - #5
Open
ovsw wants to merge 2 commits into
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Problem
Quickshell window objects cache lastIpcObject. Focusing a window changes every client focusHistoryID, but not every cached object refreshes. This can leave cross-workspace windows with stale ranks, so the first Alt+Tab selection is not the globally last-used window.
Rapid cycling also exposed a Qt 6.11 crash. Updating ListView.currentIndex while Qt was creating delegates for the JavaScript array model could crash the entire Quickshell process. The list already draws its selected row itself, so this change removes the fragile currentIndex binding and required delegate properties. A zero-delay timer combines repeated scroll requests and keeps the selected row visible.
The plugin is already kept loaded. This change seeds an address-based MRU list from hyprctl clients -j when loaded, then promotes addresses on activewindowv2 events. The live address order takes precedence over cached ranks while retaining the existing fallback for untracked windows.
Validation