Fix #397 (invisible windows) #469
Merged
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.
Do not add
UISupportsTrueScreenSizeOnMac
to apps.Per Apple documentation, this key tells macOS the app is (among other things) capable of handling any display size and "all conceivable aspect ratios", which is obviously something we can't presume. I can image this would (if the window was visible) cause other bugs to pop up around UI and input mapping.
Finally, the actual reason windows aren't visible is actually pretty simple. The root application delegate class for iOS on Mac apps (
UINSApplicationDelegate
) receives adidCreateUIScene
callback (or notification, didn't look much further into it) ondidCreateUIScene:transitionContextDictionary:
which falls through to_configureWindowControllerCreatingIfNeededForScene:transitionContextDictionary:
, where the main window controller is created. The root class for iOS on Mac (and Catalyst) window controllers isUINSSceneWindowController
which has a method called_showWindowPostLoadIsFirstWindow:transitionContextDictionary:
(invoked during_configureWindowController...
) which checks for theUISupportsTrueScreenSizeOnMac
key and SKIPS calling[NSWindow makeKeyAndOrderFront:]
if found.tl;dr: Window controller never calls
[NSWindow makeKeyAndOrderFront:]
ifUISupportsTrueScreenSizeOnMac
is true.