Repository navigation
Conversation
The motivation behind the extra groups to create pre-defined settings for special group of users. For example we can add firewall and/or proxy that blocks unwanted websites, do dektop settings during user creation, etc. This is a work-in-progress example, to make Cinnamon desktop more youngster and elder friendly.
…AllWorkspaces windowRemoved() used to abort removing a closed window from every workspace's list whenever it still had focus and its own workspace wasn't the active one. That heuristic is unreliable for a window that is actually closing (common when closing a focused window on a background workspace, or transient dialogs), so the removal was vetoed forever and the icon stayed stuck. Replace it with a check of metaWindow.get_workspace(): Mutter/Muffin re-assigns a window to its new workspace before firing 'window-removed' on the old one, so a window that still has a (different) workspace is moving, not closing; one with no workspace left is genuinely gone and must be removed everywhere. Fixes linuxmint#14118 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Member
|
There are unrelated changes here. No more tests either please |
Contributor
Author
|
Sorry, I accidentally created a PR on top of another commit. |
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
windowRemoved()used ahas_focus()+ active-workspace-index heuristic to guess whether a window was just moving workspaces vs. actually closing. That guess is wrong whenever a focused window on a background workspace (or a transient dialog) actually closes, which permanently vetoes the removal and leaves a stuck icon.metaWindow.get_workspace(): Mutter/Muffin re-assigns a window to its new workspace before firingwindow-removedon the old one, so a window that still has a (different) workspace is moving, not closing; one with no workspace left is genuinely gone and must be removed everywhere.Test plan
tests/unit/grouped-window-list-workspace-remove.cjs, a standalone Node harness (no Cinnamon session needed) that loads the realworkspace.jsand reproduces the bug: with the old heuristic, closing a focused window on a non-active workspace left it registered on every workspace; with the fix it's correctly removed everywhere, while a window that merely changes workspace still stays indexed (no regression).node tests/unit/grouped-window-list-workspace-remove.cjspasses.node tests/unit/grouped-window-list-workspace.cjsstill passes.🤖 Generated with Claude Code