From a3655ec17d66095d8f51d561ffa8d8d452c42197 Mon Sep 17 00:00:00 2001 From: ed Date: Wed, 21 Jun 2017 10:08:30 +0100 Subject: [PATCH] Projucer: Fixed a crash in ProjectTab caused by not removing it as a global focus change listener in its destructor --- .../Source/Project/jucer_ProjectTab.h | 52 +++---------------- 1 file changed, 7 insertions(+), 45 deletions(-) diff --git a/extras/Projucer/Source/Project/jucer_ProjectTab.h b/extras/Projucer/Source/Project/jucer_ProjectTab.h index 7f85f39b47..1b664891ed 100644 --- a/extras/Projucer/Source/Project/jucer_ProjectTab.h +++ b/extras/Projucer/Source/Project/jucer_ProjectTab.h @@ -251,6 +251,8 @@ public: { treeToDisplay = nullptr; popupMenuButton = nullptr; + findPanel = nullptr; + settingsButton = nullptr; } void resized() override @@ -340,6 +342,11 @@ private: lookAndFeelChanged(); } + ~FindPanel() + { + Desktop::getInstance().removeFocusChangeListener (this); + } + void paintOverChildren (Graphics& g) override { if (! isFocused) @@ -402,7 +409,6 @@ private: //============================================================================== class ProjectTab : public Component, - public ApplicationCommandTarget, private ChangeListener { public: @@ -491,42 +497,6 @@ public: return ((float) (concertinaPanel.getPanel (panelIndex)->getHeight()) / (concertinaPanel.getHeight() - 90)); } - //============================================================================== - ApplicationCommandTarget* getNextCommandTarget() override { return nullptr; } - - void getAllCommands (Array & commands) override - { - const CommandID ids[] = { CommandIDs::showFindPanel }; - - commands.addArray (ids, numElementsInArray (ids)); - } - - void getCommandInfo (CommandID commandID, ApplicationCommandInfo& result) override - { - switch (commandID) - { - case CommandIDs::showFindPanel: - result.setInfo (TRANS ("Find"), TRANS ("Searches for ."), "Editing", 0); - result.defaultKeypresses.add (KeyPress ('f', ModifierKeys::commandModifier, 0)); - break; - - default: - break; - } - } - - bool perform (const InvocationInfo& info) override - { - if (info.commandID == CommandIDs::showFindPanel) - { - find(); - return true; - } - - return false; - } - - private: ConcertinaPanel concertinaPanel; OwnedArray headers; @@ -593,13 +563,5 @@ private: } } - void find() - { - showPanel (0); - - if (auto* treeComponent = dynamic_cast (concertinaPanel.getPanel (0))) - treeComponent->grabFindFocus(); - } - JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ProjectTab) };