Gin
Loading...
Searching...
No Matches
LambdaMouseListener Class Reference

Mouse listener that uses std::function callbacks instead of virtual overrides. More...

#include <gin_asyncutilities.h>

Inherits juce::MouseListener.

Public Member Functions

 LambdaMouseListener ()=default

Public Attributes

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

Detailed Description

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:

// Monitor child component mouse events
LambdaMouseListener mouseMonitor;
mouseMonitor.onMouseDown = [this](const MouseEvent& e) {
DBG("Mouse clicked at: " + e.position.toString());
};
mouseMonitor.onMouseDrag = [this](const MouseEvent& e) {
handleDrag(e.getDistanceFromDragStart());
};
// Add to child component (not to self!)
childComponent.addMouseListener(&mouseMonitor, true);
// Multiple event types
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

Constructor & Destructor Documentation

◆ LambdaMouseListener()

LambdaMouseListener::LambdaMouseListener ( )
default

Member Data Documentation

◆ 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: