Mouse listener that uses std::function callbacks instead of virtual overrides.
More...
#include <gin_asyncutilities.h>
Inherits juce::MouseListener.
|
| std::function< void(const juce::MouseEvent &)> | onMouseMove |
| std::function< void(const juce::MouseEvent &)> | onMouseEnter |
| std::function< void(const juce::MouseEvent &)> | onMouseExit |
| std::function< void(const juce::MouseEvent &)> | onMouseDown |
| std::function< void(const juce::MouseEvent &)> | onMouseDrag |
| std::function< void(const juce::MouseEvent &)> | onMouseUp |
| std::function< void(const juce::MouseEvent &)> | onMouseDoubleClick |
| std::function< void(const juce::MouseEvent &, const juce::MouseWheelDetails &)> | onMouseWheelMove |
| std::function< void(const juce::MouseEvent &, float)> | onMouseMagnify |
Mouse listener that uses std::function callbacks instead of virtual overrides.
LambdaMouseListener provides a convenient alternative to juce::MouseListener by accepting lambda functions for each mouse event type. This is particularly useful when adding a mouse listener to a component to monitor its child components, avoiding the "double event" problem where the component would receive both its own mouse events and the forwarded ones from being its own listener.
Key Features:
- Separate lambda callbacks for each mouse event type
- Avoids double-event issues with self-listening
- No need to create subclass for mouse monitoring
- Callbacks can be selectively assigned
- Runtime callback configuration
- Cleaner code for mouse event handling
Available Callbacks:
- onMouseMove: Mouse moved over component
- onMouseEnter: Mouse entered component
- onMouseExit: Mouse left component
- onMouseDown: Mouse button pressed
- onMouseDrag: Mouse dragged
- onMouseUp: Mouse button released
- onMouseDoubleClick: Double-click occurred
- onMouseWheelMove: Mouse wheel scrolled
- onMouseMagnify: Trackpad pinch/zoom gesture
Only assign callbacks for the events you need. Unassigned callbacks are safely ignored.
Usage:
mouseMonitor.
onMouseDown = [
this](
const MouseEvent& e) {
DBG("Mouse clicked at: " + e.position.toString());
};
mouseMonitor.
onMouseDrag = [
this](
const MouseEvent& e) {
handleDrag(e.getDistanceFromDragStart());
};
childComponent.addMouseListener(&mouseMonitor, true);
listener.
onMouseEnter = [](
const MouseEvent& e) { showTooltip(); };
listener.
onMouseExit = [](
const MouseEvent& e) { hideTooltip(); };
listener.
onMouseWheelMove = [](
const MouseEvent& e,
const MouseWheelDetails& w) {
zoom(w.deltaY);
};
std::function< void(const juce::MouseEvent &)> onMouseEnter
Definition gin_asyncutilities.h:195
std::function< void(const juce::MouseEvent &)> onMouseDown
Definition gin_asyncutilities.h:197
std::function< void(const juce::MouseEvent &)> onMouseDrag
Definition gin_asyncutilities.h:198
std::function< void(const juce::MouseEvent &)> onMouseExit
Definition gin_asyncutilities.h:196
std::function< void(const juce::MouseEvent &, const juce::MouseWheelDetails &)> onMouseWheelMove
Definition gin_asyncutilities.h:201
LambdaMouseListener()=default
- See also
- juce::MouseListener, juce::MouseEvent
◆ LambdaMouseListener()
| LambdaMouseListener::LambdaMouseListener |
( |
| ) |
|
|
default |
◆ onMouseMove
| std::function<void (const juce::MouseEvent&)> LambdaMouseListener::onMouseMove |
◆ onMouseEnter
| std::function<void (const juce::MouseEvent&)> LambdaMouseListener::onMouseEnter |
◆ onMouseExit
| std::function<void (const juce::MouseEvent&)> LambdaMouseListener::onMouseExit |
◆ onMouseDown
| std::function<void (const juce::MouseEvent&)> LambdaMouseListener::onMouseDown |
◆ onMouseDrag
| std::function<void (const juce::MouseEvent&)> LambdaMouseListener::onMouseDrag |
◆ onMouseUp
| std::function<void (const juce::MouseEvent&)> LambdaMouseListener::onMouseUp |
◆ onMouseDoubleClick
| std::function<void (const juce::MouseEvent&)> LambdaMouseListener::onMouseDoubleClick |
◆ onMouseWheelMove
| std::function<void (const juce::MouseEvent&, const juce::MouseWheelDetails&)> LambdaMouseListener::onMouseWheelMove |
◆ onMouseMagnify
| std::function<void (const juce::MouseEvent&, float)> LambdaMouseListener::onMouseMagnify |
The documentation for this class was generated from the following file: