From 1cca200edaa06eda6c264bc84fff1200ad62933c Mon Sep 17 00:00:00 2001 From: Jonatan Granqvist Date: Mon, 2 Mar 2026 16:02:32 +0100 Subject: [PATCH] fix mouse cursor --- .../lib/src/widgets/draggable_event_pill.dart | 21 +++++++++++++++---- .../lib/src/widgets/timeline_interactor.dart | 6 ++++-- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/packages/z-flutter/packages/z_timeline/lib/src/widgets/draggable_event_pill.dart b/packages/z-flutter/packages/z_timeline/lib/src/widgets/draggable_event_pill.dart index ec33e09..4a3246e 100644 --- a/packages/z-flutter/packages/z_timeline/lib/src/widgets/draggable_event_pill.dart +++ b/packages/z-flutter/packages/z_timeline/lib/src/widgets/draggable_event_pill.dart @@ -47,18 +47,31 @@ class DraggableEventPill extends StatelessWidget { contentWidth: contentWidth, ); + final scope = ZTimelineScope.of(context); + + // Wrap pill in a MouseRegion so hovering shows a pointer cursor. + // During an active entry drag, defer to the parent cursor (grabbing). + final cursorPill = ListenableBuilder( + listenable: scope.interaction, + builder: (context, child) => MouseRegion( + cursor: scope.interaction.isDraggingEntry + ? MouseCursor.defer + : SystemMouseCursors.click, + child: child, + ), + child: pill, + ); + if (!enableDrag) { return Positioned( top: top, left: left.clamp(0.0, double.infinity), width: width.clamp(0.0, double.infinity), height: laneHeight, - child: pill, + child: cursorPill, ); } - final scope = ZTimelineScope.of(context); - return Positioned( top: top, left: left.clamp(0.0, double.infinity), @@ -87,7 +100,7 @@ class DraggableEventPill extends StatelessWidget { ), ), childWhenDragging: Opacity(opacity: 0.3, child: pill), - child: pill, + child: cursorPill, ), ); } diff --git a/packages/z-flutter/packages/z_timeline/lib/src/widgets/timeline_interactor.dart b/packages/z-flutter/packages/z_timeline/lib/src/widgets/timeline_interactor.dart index e2de6e6..80fa2c8 100644 --- a/packages/z-flutter/packages/z_timeline/lib/src/widgets/timeline_interactor.dart +++ b/packages/z-flutter/packages/z_timeline/lib/src/widgets/timeline_interactor.dart @@ -221,9 +221,11 @@ class _ZTimelineInteractorState extends State { listenable: scope.interaction, builder: (context, child) { return MouseRegion( - cursor: scope.interaction.isGrabbing + cursor: + scope.interaction.isGrabbing || + scope.interaction.isDraggingEntry ? SystemMouseCursors.grabbing - : SystemMouseCursors.grab, + : SystemMouseCursors.basic, child: child, ); },