Repository navigation
bugfix(gamewindow): Remove destroyed windows from the modal stack and prevent duplicate modals for the same window - #643
Open
tintinhamans wants to merge 1 commit into
Conversation
… prevent duplicate modals for the same window (TheSuperHackers#3224) (cherry picked from commit 6512dc6)
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.
Ports TheSuperHackers#3224 as a
cherry-pick -xof the merged upstream commit. It replaces the approach from #583 with the upstream version.#583 removed a destroyed window from anywhere in the modal stack with a separate
removeWindowFromModalStack. Upstream instead makeswinUnsetModalitself remove the window from anywhere in the stack, sowinDestroycalls it unconditionally and the extra helper is no longer needed. This PR removes the helper and the older cleanup from #583 and uses the upstream code in bothGeneralsandGeneralsMD.winUnsetModalremoves the window from anywhere in the modal stack, not only the top.winSetModalmoves a window that is already modal to the top instead of adding a second entry for it. This is the new duplicate modal protection, which bugfix(gui): Remove destroyed windows from the modal stack #583 did not have.winDestroycallswinUnsetModalunconditionally.processDestroyListdrops its duplicate special window cleanup, sincewinDestroyhas already cleared the captor, focus, region and grab. ADEBUG_ASSERTCRASHchecks that nothing still points at the window. The only place a window is queued for destruction iswinDestroy, so the assert holds here.Both
GeneralsMDandGeneralsare changed, because the file exists twice here and git only applies the upstream change to one of them. The modal stack code of both is identical to upstream.