From b3fd5cb8a385e8a4e4da15f452cc9b8cfbb90784 Mon Sep 17 00:00:00 2001 From: jules Date: Mon, 2 Sep 2013 22:06:10 +0100 Subject: [PATCH] Added iterator access to Desktop's list of mouse sources. --- .../gui/juce_MidiKeyboardComponent.cpp | 11 +++++------ modules/juce_gui_basics/components/juce_Desktop.cpp | 10 +++++----- modules/juce_gui_basics/components/juce_Desktop.h | 3 +++ modules/juce_gui_basics/widgets/juce_Slider.cpp | 6 ++++-- modules/juce_gui_basics/widgets/juce_TreeView.cpp | 10 +++++----- 5 files changed, 22 insertions(+), 18 deletions(-) diff --git a/modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.cpp b/modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.cpp index 1292136724..8d5c9a919f 100644 --- a/modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.cpp +++ b/modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.cpp @@ -818,14 +818,13 @@ void MidiKeyboardComponent::timerCallback() if (shouldCheckMousePos) { - Desktop& desktop = Desktop::getInstance(); + const OwnedArray& mouseSources = Desktop::getInstance().getMouseSources(); - for (int i = desktop.getNumMouseSources(); --i >= 0;) + for (MouseInputSource** i = mouseSources.begin(), ** const e = mouseSources.end(); i != e; ++i) { - MouseInputSource* source = desktop.getMouseSource (i); - jassert (source != nullptr); - updateNoteUnderMouse (getLocalPoint (nullptr, source->getScreenPosition()), - source->isDragging(), source->getIndex()); + const MouseInputSource& source = **i; + updateNoteUnderMouse (getLocalPoint (nullptr, source.getScreenPosition()), + source.isDragging(), source.getIndex()); } } } diff --git a/modules/juce_gui_basics/components/juce_Desktop.cpp b/modules/juce_gui_basics/components/juce_Desktop.cpp index 360cf13fd0..50ccfc91cf 100644 --- a/modules/juce_gui_basics/components/juce_Desktop.cpp +++ b/modules/juce_gui_basics/components/juce_Desktop.cpp @@ -221,13 +221,13 @@ public: Desktop& desktop = Desktop::getInstance(); int numMiceDown = 0; - for (int i = desktop.getNumMouseSources(); --i >= 0;) - { - MouseInputSource& source = *desktop.getMouseSource(i); + const OwnedArray& mouseSources = desktop.getMouseSources(); - if (source.isDragging()) + for (MouseInputSource** i = mouseSources.begin(), ** const e = mouseSources.end(); i != e; ++i) + { + if ((*i)->isDragging()) { - source.triggerFakeMove(); + (*i)->triggerFakeMove(); ++numMiceDown; } } diff --git a/modules/juce_gui_basics/components/juce_Desktop.h b/modules/juce_gui_basics/components/juce_Desktop.h index 40494826f6..dc0a238b4a 100644 --- a/modules/juce_gui_basics/components/juce_Desktop.h +++ b/modules/juce_gui_basics/components/juce_Desktop.h @@ -242,6 +242,9 @@ public: */ MouseInputSource* getMouseSource (int index) const noexcept { return mouseSources [index]; } + /** Provides access to the array of mouse sources, for iteration. */ + const OwnedArray& getMouseSources() const { return mouseSources; } + /** Returns the main mouse input device that the system is using. @see getNumMouseSources() */ diff --git a/modules/juce_gui_basics/widgets/juce_Slider.cpp b/modules/juce_gui_basics/widgets/juce_Slider.cpp index a9235edf12..ae8d5d6db7 100644 --- a/modules/juce_gui_basics/widgets/juce_Slider.cpp +++ b/modules/juce_gui_basics/widgets/juce_Slider.cpp @@ -1033,8 +1033,10 @@ public: { mouseWasHidden = false; - for (int i = Desktop::getInstance().getNumMouseSources(); --i >= 0;) - Desktop::getInstance().getMouseSource(i)->enableUnboundedMouseMovement (false); + const OwnedArray& mouseSources = Desktop::getInstance().getMouseSources(); + + for (MouseInputSource** i = mouseSources.begin(), ** const e = mouseSources.end(); i != e; ++i) + (*i)->enableUnboundedMouseMovement (false); const double pos = sliderBeingDragged == 2 ? getMaxValue() : (sliderBeingDragged == 1 ? getMinValue() diff --git a/modules/juce_gui_basics/widgets/juce_TreeView.cpp b/modules/juce_gui_basics/widgets/juce_TreeView.cpp index 4b09fc3c19..8c66cfd86a 100644 --- a/modules/juce_gui_basics/widgets/juce_TreeView.cpp +++ b/modules/juce_gui_basics/widgets/juce_TreeView.cpp @@ -367,14 +367,14 @@ private: static bool isMouseDraggingInChildCompOf (Component* const comp) { - Desktop& desktop = Desktop::getInstance(); + const OwnedArray& mouseSources = Desktop::getInstance().getMouseSources(); - for (int i = desktop.getNumMouseSources(); --i >= 0;) + for (MouseInputSource** i = mouseSources.begin(), ** const e = mouseSources.end(); i != e; ++i) { - MouseInputSource* const source = desktop.getMouseSource(i); + MouseInputSource& source = **i; - if (source->isDragging()) - if (Component* const underMouse = source->getComponentUnderMouse()) + if (source.isDragging()) + if (Component* const underMouse = source.getComponentUnderMouse()) if (comp == underMouse || comp->isParentOf (underMouse)) return true; }