From 7bb4635c8d0c5d9fc720d09de3c9e747e638b617 Mon Sep 17 00:00:00 2001 From: dizzib Date: Wed, 6 Aug 2025 14:10:06 +0100 Subject: [PATCH 1/3] add dragThreshold --- .../flutter_overlay_window/FlutterOverlayWindowPlugin.java | 2 ++ .../overlay/window/flutter_overlay_window/OverlayService.java | 4 ++-- .../overlay/window/flutter_overlay_window/WindowSetup.java | 1 + lib/src/overlay_window.dart | 2 ++ 4 files changed, 7 insertions(+), 2 deletions(-) diff --git a/android/src/main/java/flutter/overlay/window/flutter_overlay_window/FlutterOverlayWindowPlugin.java b/android/src/main/java/flutter/overlay/window/flutter_overlay_window/FlutterOverlayWindowPlugin.java index 3ffc76b7..6cf8018c 100644 --- a/android/src/main/java/flutter/overlay/window/flutter_overlay_window/FlutterOverlayWindowPlugin.java +++ b/android/src/main/java/flutter/overlay/window/flutter_overlay_window/FlutterOverlayWindowPlugin.java @@ -86,6 +86,7 @@ public void onMethodCall(@NonNull MethodCall call, @NonNull Result result) { String overlayContent = call.argument("overlayContent"); String notificationVisibility = call.argument("notificationVisibility"); boolean enableDrag = call.argument("enableDrag"); + Integer dragThreshold = call.argument("dragThreshold"); String positionGravity = call.argument("positionGravity"); Map startPosition = call.argument("startPosition"); int startX = startPosition != null ? startPosition.getOrDefault("x", OverlayConstants.DEFAULT_XY) : OverlayConstants.DEFAULT_XY; @@ -95,6 +96,7 @@ public void onMethodCall(@NonNull MethodCall call, @NonNull Result result) { WindowSetup.width = width != null ? width : -1; WindowSetup.height = height != null ? height : -1; WindowSetup.enableDrag = enableDrag; + WindowSetup.dragThreshold = dragThreshold; WindowSetup.setGravityFromAlignment(alignment != null ? alignment : "center"); WindowSetup.setFlag(flag != null ? flag : "flagNotFocusable"); WindowSetup.overlayTitle = overlayTitle; diff --git a/android/src/main/java/flutter/overlay/window/flutter_overlay_window/OverlayService.java b/android/src/main/java/flutter/overlay/window/flutter_overlay_window/OverlayService.java index f50d6a37..4287e14a 100644 --- a/android/src/main/java/flutter/overlay/window/flutter_overlay_window/OverlayService.java +++ b/android/src/main/java/flutter/overlay/window/flutter_overlay_window/OverlayService.java @@ -387,7 +387,7 @@ public boolean onTouch(View view, MotionEvent event) { case MotionEvent.ACTION_MOVE: float dx = event.getRawX() - lastX; float dy = event.getRawY() - lastY; - if (!dragging && dx * dx + dy * dy < 25) { + if (!dragging && dx * dx + dy * dy < Math.pow(dpToPx(WindowSetup.dragThreshold), 2)) { return false; } lastX = event.getRawX(); @@ -468,4 +468,4 @@ public void run() { } -} \ No newline at end of file +} diff --git a/android/src/main/java/flutter/overlay/window/flutter_overlay_window/WindowSetup.java b/android/src/main/java/flutter/overlay/window/flutter_overlay_window/WindowSetup.java index 3563a1ca..b5bbd71e 100644 --- a/android/src/main/java/flutter/overlay/window/flutter_overlay_window/WindowSetup.java +++ b/android/src/main/java/flutter/overlay/window/flutter_overlay_window/WindowSetup.java @@ -20,6 +20,7 @@ public abstract class WindowSetup { static String positionGravity = "none"; static int notificationVisibility = NotificationCompat.VISIBILITY_PRIVATE; static boolean enableDrag = false; + static int dragThreshold = 5; static void setNotificationVisibility(String name) { diff --git a/lib/src/overlay_window.dart b/lib/src/overlay_window.dart index fef7d45d..e6db6ce3 100644 --- a/lib/src/overlay_window.dart +++ b/lib/src/overlay_window.dart @@ -48,6 +48,7 @@ class FlutterOverlayWindow { String overlayTitle = "overlay activated", String? overlayContent, bool enableDrag = false, + int dragThreshold = 5, PositionGravity positionGravity = PositionGravity.none, OverlayPosition? startPosition, }) async { @@ -61,6 +62,7 @@ class FlutterOverlayWindow { "overlayTitle": overlayTitle, "overlayContent": overlayContent, "enableDrag": enableDrag, + "dragThreshold": dragThreshold, "notificationVisibility": visibility.name, "positionGravity": positionGravity.name, "startPosition": startPosition?.toMap(), From 83a94a0f7978ae3b99c99f1cf4a35701bb14ecac Mon Sep 17 00:00:00 2001 From: dizzib Date: Wed, 6 Aug 2025 14:33:30 +0100 Subject: [PATCH 2/3] add dragThreshold comment . --- lib/src/overlay_window.dart | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/src/overlay_window.dart b/lib/src/overlay_window.dart index e6db6ce3..3277c2c4 100644 --- a/lib/src/overlay_window.dart +++ b/lib/src/overlay_window.dart @@ -36,6 +36,8 @@ class FlutterOverlayWindow { /// /// `enableDrag` to enable/disable dragging the overlay over the screen and default is "false" /// + /// `dragThreshold` to determine how easy it is to start dragging the overlay and default is 5 (device independant pixels) + /// /// `positionGravity` the overlay postion after drag and default is [PositionGravity.none] /// /// `startPosition` the overlay start position and default is null From 8b2f5a95136b148774c062c37c9991691f4b5435 Mon Sep 17 00:00:00 2001 From: dizzib Date: Wed, 6 Aug 2025 14:41:39 +0100 Subject: [PATCH 3/3] add dragThreshold to readme --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index a65a0a17..5982908e 100644 --- a/README.md +++ b/README.md @@ -109,6 +109,8 @@ void overlayMain() { /// /// `enableDrag` to enable/disable dragging the overlay over the screen and default is "false" /// + /// `dragThreshold` to determine how easy it is to start dragging the overlay and default is 5 (device independant pixels) + /// /// `positionGravity` the overlay postion after drag and default is [PositionGravity.none] /// /// `startPosition` the overlay start position and default is null