handleMouseEvent method
Handles mouse events routed to this renderer. Returns true if the event was consumed.
Implementation
@override
bool handleMouseEvent(term.MouseEvent event) {
Tracer.record(_traceMouseEventId, Phase.begin, TraceCategory.events);
try {
final completer = _completer;
if (completer == null || completer.isCompleted) return false;
_lastMousePosition = Point<int>(event.x, event.y);
var isDone = false;
final rootElement = _rootElement;
if (rootElement == null) return false;
if (_mouseCaptureElement != null &&
(event.type == term.MouseEventType.drag ||
event.type == term.MouseEventType.release)) {
final captureElement = _mouseCaptureElement!;
final absOffset = _getAbsoluteOffset(captureElement);
final sx = event.x - 1;
final sy = event.y - 1;
final localX = sx - absOffset.dx;
final localY = sy - absOffset.dy;
isDone = _routeToElement(captureElement, event, localX, localY);
if (event.type == term.MouseEventType.release) {
_mouseCaptureElement = null;
}
} else {
isDone = _routeMouseEvent(rootElement, event, Offset.zero);
}
if (isDone || debugPaintHoverEnabled) {
_scheduleRender();
}
return isDone;
} finally {
Tracer.record(_traceMouseEventId, Phase.end, TraceCategory.events);
}
}