diff --git a/modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm b/modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm index 95321245ca..d5f25718d9 100644 --- a/modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm +++ b/modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm @@ -558,7 +558,7 @@ public: { ++insideToFrontCall; - if (makeActiveWindow) + if (makeActiveWindow && ! inBecomeKeyWindow) [window makeKeyAndOrderFront: nil]; else [window orderFront: nil]; @@ -1541,7 +1541,9 @@ public: { if (window != nil) { - [window makeKeyWindow]; + if (! inBecomeKeyWindow) + [window makeKeyWindow]; + [window makeFirstResponder: view]; viewFocusGain(); @@ -1622,7 +1624,7 @@ public: bool isFirstLiveResize = false, viewCannotHandleEvent = false; bool isStretchingTop = false, isStretchingLeft = false, isStretchingBottom = false, isStretchingRight = false; bool windowRepresentsFile = false; - bool isAlwaysOnTop = false, wasAlwaysOnTop = false; + bool isAlwaysOnTop = false, wasAlwaysOnTop = false, inBecomeKeyWindow = false; String stringBeingComposed; int startOfMarkedTextInTextInputTarget = 0; @@ -2453,6 +2455,10 @@ struct JuceNSWindowClass : public NSViewComponentPeerWrapperinBecomeKeyWindow); + + const ScopedValueSetter scope { owner->inBecomeKeyWindow, true }; + if (owner->canBecomeKeyWindow()) { owner->becomeKeyWindow();