WindowRuleApplicator: force center and move rules to override each other #12618
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.
Describe your PR, what does it fix/add?
This PR is a follow up to this one: #12518
I decided to take a new approach so I created a new PR. The issue is described at length in the PR linked above, but I'll shortly describe the issue again.
moveandcenterrules are separate effects that both affect the position of a window, which causes undefined behavior when both rules are inherited by the same window. Intuitively, the one defined "last" should take precedence, but currently that isn't the case. Thecenterrule always takes precendence because that effect is applied later in the code.While investigating I found it odd that defining
center offas a rule did not seem to work, as from looking at the code it seemed like it should. However I eventually realized thecenterfield in the struct was declared as anstd::optional<int>which has a truthy value even when assigned an explicit value of false. 🤦I decided to just always unset the other effect when setting either
moveorcenter. While this is probably the simplest way to fix this, I still don't consider it the cleanest way.Is there anything you want to mention? (unchecked code, possible bugs, found problems, breaking compatibility, etc.)
No
Is it ready for merging, or does it need work?
Should be ready to merge