From 5b32ef489795edd6d07d65cd2fabc877e1713687 Mon Sep 17 00:00:00 2001 From: ed Date: Mon, 8 Jan 2018 10:18:03 +0000 Subject: [PATCH] Implement the menuActive flag in TextEditor --- .../widgets/juce_TextEditor.cpp | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/modules/juce_gui_basics/widgets/juce_TextEditor.cpp b/modules/juce_gui_basics/widgets/juce_TextEditor.cpp index 142aac3d6b..13f4f88fad 100644 --- a/modules/juce_gui_basics/widgets/juce_TextEditor.cpp +++ b/modules/juce_gui_basics/widgets/juce_TextEditor.cpp @@ -1691,12 +1691,6 @@ void TextEditor::performPopupMenuAction (const int menuItemID) } } -static void textEditorMenuCallback (int menuResult, TextEditor* editor) -{ - if (editor != nullptr && menuResult != 0) - editor->performPopupMenuAction (menuResult); -} - //============================================================================== void TextEditor::mouseDown (const MouseEvent& e) { @@ -1716,8 +1710,21 @@ void TextEditor::mouseDown (const MouseEvent& e) m.setLookAndFeel (&getLookAndFeel()); addPopupMenuItems (m, &e); + menuActive = true; + + SafePointer safeThis (this); + m.showMenuAsync (PopupMenu::Options(), - ModalCallbackFunction::forComponent (textEditorMenuCallback, this)); + [safeThis] (int menuResult) + { + if (auto* editor = safeThis.getComponent()) + { + editor->menuActive = false; + + if (menuResult != 0) + editor->performPopupMenuAction (menuResult); + } + }); } } }