Fix losing X11 window normal size hint properties #40922
Merged
+61
−154
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.
This was caused by
XSetWMNormalHints
being called multiple times, each time with different values. Calling the method replaces the old data completely, resulting in some of the settings being lost.Since the method was called 3 times before the window was mapped, this resulted in the position hint being lost and the window always getting opened at a position determined by the WM.
I removed the
id != MAIN_WINDOW_ID
condition from_create_window
, as it seemed unnecessary and didn't break anything.godot/platform/linuxbsd/display_server_x11.cpp
Line 3371 in 5d880bf
This PR also happens to remove calls to
XSetNormalHints
replacing them with a call toXSetWMNormalHints
, as the former has been superseded by the latter.Tested on KDE/KWin. Not tested on tiling WMs. Xtrace was a useful tool (combined with a grep) to inspect the protocol traffic.
Pinging @reduz as the code author.