diff --git a/modules/juce_gui_basics/menus/juce_PopupMenu.cpp b/modules/juce_gui_basics/menus/juce_PopupMenu.cpp index 913f0d8683..952608e765 100644 --- a/modules/juce_gui_basics/menus/juce_PopupMenu.cpp +++ b/modules/juce_gui_basics/menus/juce_PopupMenu.cpp @@ -1407,7 +1407,9 @@ private: && (ModifierKeys::currentModifiers.isAnyMouseButtonDown() || ComponentPeer::getCurrentModifiersRealtime().isAnyMouseButtonDown()); - if (! window.doesAnyJuceCompHaveFocus()) + const auto reallyContained = window.reallyContains (localMousePos, true); + + if (! window.doesAnyJuceCompHaveFocus() && ! reallyContained) { if (timeNow > window.lastFocusedTime + 10) { @@ -1416,10 +1418,9 @@ private: // Note: This object may have been deleted by the previous call. } } - else if (wasDown && timeNow > window.windowCreationTime + 250 - && ! (isDown || overScrollArea)) + else if (wasDown && timeNow > window.windowCreationTime + 250 && ! isDown && ! overScrollArea) { - if (window.reallyContains (localMousePos, true)) + if (reallyContained) window.triggerCurrentlyHighlightedItem(); else if ((window.hasBeenOver || ! window.dismissOnMouseUp) && ! isOverAny) window.dismissMenu (nullptr);