Reference the main window as the parent of NFD modals - #550
Merged
Conversation
…rent interaction / Window events are also discarded while a native dialog is used
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.
By doing so, the Aleph One window + the modal appear now as a single entry in the task bar (while they previously showed up as two distinct windows) and it's no longer possible to interact with the parent window while the modal is active. (preventing issues like the main window being accidentally hidden behind others etc)
The NFD code interfacing SDL2 with NFD has been directly copied into the Aleph One codebase since NFD directly includes SDL2 headers but our build system are expecting prefixed SDL2/ includes. The alternative would have been to patch in with a custom vcpkg port but that seemed excessive for a single 30 lines function.
This NFD parent feature currently supports windows, mac os and linux x11 for now. (with a comment noting that Wayland support will be added eventually and a draft PR btzy/nativefiledialog-extended#153)
This PR also fixes #401 for platforms where this NFD parent feature is enabled. The problem with #401 was that when making a call to NFD to display a modal window, SDL2 will get a window lost focus event followed right after by a window gained focus event. And since we pause the game on lost focus (and don't resume on gained focus), this led to the user having to click to resume gameplay when starting a film replay. The fix is to temporarily disable window events just for the NFD calls. (with the parent feature, we can be sure that when the modal closes, the main window is in front of the user)