VST3: fetch midi mappings all at once, use it for note/sound-off
[carla.git] / source / modules / juce_gui_basics / layout / juce_StretchableLayoutResizerBar.cpp
blob82dd81b70475638c8e6389990e691a78be7a1fa9
1 /*
2 ==============================================================================
4 This file is part of the JUCE library.
5 Copyright (c) 2022 - Raw Material Software Limited
7 JUCE is an open source library subject to commercial or open-source
8 licensing.
10 By using JUCE, you agree to the terms of both the JUCE 7 End-User License
11 Agreement and JUCE Privacy Policy.
13 End User License Agreement: www.juce.com/juce-7-licence
14 Privacy Policy: www.juce.com/juce-privacy-policy
16 Or: You may also use this code under the terms of the GPL v3 (see
17 www.gnu.org/licenses).
19 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
20 EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
21 DISCLAIMED.
23 ==============================================================================
26 namespace juce
29 StretchableLayoutResizerBar::StretchableLayoutResizerBar (StretchableLayoutManager* layout_,
30 const int index,
31 const bool vertical)
32 : layout (layout_),
33 itemIndex (index),
34 isVertical (vertical)
36 setRepaintsOnMouseActivity (true);
37 setMouseCursor (vertical ? MouseCursor::LeftRightResizeCursor
38 : MouseCursor::UpDownResizeCursor);
41 StretchableLayoutResizerBar::~StretchableLayoutResizerBar()
45 //==============================================================================
46 void StretchableLayoutResizerBar::paint (Graphics& g)
48 getLookAndFeel().drawStretchableLayoutResizerBar (g,
49 getWidth(), getHeight(),
50 isVertical,
51 isMouseOver(),
52 isMouseButtonDown());
55 void StretchableLayoutResizerBar::mouseDown (const MouseEvent&)
57 mouseDownPos = layout->getItemCurrentPosition (itemIndex);
60 void StretchableLayoutResizerBar::mouseDrag (const MouseEvent& e)
62 const int desiredPos = mouseDownPos + (isVertical ? e.getDistanceFromDragStartX()
63 : e.getDistanceFromDragStartY());
66 if (layout->getItemCurrentPosition (itemIndex) != desiredPos)
68 layout->setItemPosition (itemIndex, desiredPos);
69 hasBeenMoved();
73 void StretchableLayoutResizerBar::hasBeenMoved()
75 if (Component* parent = getParentComponent())
76 parent->resized();
79 } // namespace juce