[Win32] Fix wrong layout when opening shell or reparenting control #2608 #2637
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.
In multiple situation, relayouting due to DPI change events does not work as expected:
Since the user experience when performing these two cases asynchronously is not good anyway (e.g., reparenting leads to unexpected asynchronous relayouting operations), this change adapts the two use cases to process the DPI change synchronously.
Fixes #2608
This is an addition to #2636, which already fixes some of the issue (in the best possible way) while this resolved the remaining issues (such as broken perspective switching) on top.
You can test this by having two monitors with different zoom, starting an SDK product and switching perspectives on either of the monitors. Without this fix, you will see the broken layout as described here: #2608 (comment)
In addition, you can open a child shell (e.g., an "Open Type" dialog) and move it to a different monitor, such that it reopens on that other monitor afterwards. Without this fix, when reopening the dialog you will see effects such as in #2608 (comment).