mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-13 00:04:19 +00:00
macOS: Fixed a bug causing hidden NSWindows to become unhidden when the app regains focus
This commit is contained in:
parent
e58f264c07
commit
8ce79e20e7
1 changed files with 21 additions and 5 deletions
|
|
@ -1015,12 +1015,12 @@ public:
|
|||
|
||||
bool canBecomeKeyWindow()
|
||||
{
|
||||
return (getStyleFlags() & juce::ComponentPeer::windowIgnoresKeyPresses) == 0;
|
||||
return component.isVisible() && (getStyleFlags() & juce::ComponentPeer::windowIgnoresKeyPresses) == 0;
|
||||
}
|
||||
|
||||
bool canBecomeMainWindow()
|
||||
{
|
||||
return dynamic_cast<ResizableWindow*> (&component) != nullptr;
|
||||
return component.isVisible() && dynamic_cast<ResizableWindow*> (&component) != nullptr;
|
||||
}
|
||||
|
||||
bool worksWhenModal() const
|
||||
|
|
@ -1881,9 +1881,15 @@ private:
|
|||
static BOOL becomeFirstResponder (id self, SEL)
|
||||
{
|
||||
if (auto* owner = getOwner (self))
|
||||
owner->viewFocusGain();
|
||||
{
|
||||
if (owner->canBecomeKeyWindow())
|
||||
{
|
||||
owner->viewFocusGain();
|
||||
return YES;
|
||||
}
|
||||
}
|
||||
|
||||
return YES;
|
||||
return NO;
|
||||
}
|
||||
|
||||
static BOOL resignFirstResponder (id self, SEL)
|
||||
|
|
@ -1999,7 +2005,17 @@ private:
|
|||
sendSuperclassMessage (self, @selector (becomeKeyWindow));
|
||||
|
||||
if (auto* owner = getOwner (self))
|
||||
owner->becomeKeyWindow();
|
||||
{
|
||||
if (owner->canBecomeKeyWindow())
|
||||
{
|
||||
owner->becomeKeyWindow();
|
||||
return;
|
||||
}
|
||||
|
||||
// this fixes a bug causing hidden windows to sometimes become visible when the app regains focus
|
||||
if (! owner->getComponent().isVisible())
|
||||
[(NSWindow*) self orderOut: nil];
|
||||
}
|
||||
}
|
||||
|
||||
static BOOL windowShouldClose (id self, SEL, id /*window*/)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue