DragToScrollListener.h (951B)
1 #pragma once 2 3 #include <JuceHeader.h> 4 5 using ViewportDragPosition = AnimatedPosition<AnimatedPositionBehaviours::ContinuousWithMomentum>; 6 7 class DragToScrollListener : private MouseListener, 8 private ViewportDragPosition::Listener 9 { 10 public: 11 DragToScrollListener (Viewport& v); 12 ~DragToScrollListener() override; 13 14 void positionChanged (ViewportDragPosition&, double) override; 15 16 void mouseDown (const MouseEvent&) override; 17 void mouseDrag (const MouseEvent& e) override; 18 void mouseUp (const MouseEvent&) override; 19 20 void endDragAndClearGlobalMouseListener(); 21 bool doesMouseEventComponentBlockViewportDrag (const Component* eventComp); 22 23 private: 24 Viewport& viewport; 25 ViewportDragPosition offsetX, offsetY; 26 juce::Point<int> originalViewPos; 27 bool isDragging = false; 28 bool isGlobalMouseListener = false; 29 30 JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (DragToScrollListener) 31 };