From 3236bdca6aa29142a75a44bbf278cdf1a4168784 Mon Sep 17 00:00:00 2001 From: jules Date: Mon, 15 Jun 2015 10:10:39 -0500 Subject: [PATCH] Fix for JUCE_LIVE_CONSTANT in plugins. --- .../misc/juce_LiveConstantEditor.cpp | 26 ++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/modules/juce_gui_extra/misc/juce_LiveConstantEditor.cpp b/modules/juce_gui_extra/misc/juce_LiveConstantEditor.cpp index 1b88add1a2..a091587625 100644 --- a/modules/juce_gui_extra/misc/juce_LiveConstantEditor.cpp +++ b/modules/juce_gui_extra/misc/juce_LiveConstantEditor.cpp @@ -51,22 +51,36 @@ private: { stopTimer(); + Array alreadyDone; + for (int i = TopLevelWindow::getNumTopLevelWindows(); --i >= 0;) if (Component* c = TopLevelWindow::getTopLevelWindow(i)) - repaintAndResizeAllComps (c); + repaintAndResizeAllComps (c, alreadyDone); + + for (int i = Desktop::getInstance().getNumComponents(); --i >= 0;) + if (Component* c = Desktop::getInstance().getComponent(i)) + repaintAndResizeAllComps (c, alreadyDone); } - static void repaintAndResizeAllComps (Component::SafePointer c) + static void repaintAndResizeAllComps (Component::SafePointer c, + Array& alreadyDone) { - if (c->isVisible()) + if (c->isVisible() && ! alreadyDone.contains (c)) { c->repaint(); c->resized(); for (int i = c->getNumChildComponents(); --i >= 0;) - if (c != nullptr) - if (Component* child = c->getChildComponent(i)) - repaintAndResizeAllComps (child); + { + if (Component* child = c->getChildComponent(i)) + { + repaintAndResizeAllComps (child, alreadyDone); + alreadyDone.add (child); + } + + if (c == nullptr) + break; + } } } };