From cb3e91b8fd554bd5191d9d54dcf88143e7c0a906 Mon Sep 17 00:00:00 2001 From: Radomir Epur Date: Thu, 18 May 2023 18:49:40 +0300 Subject: [PATCH] fix: drag inversion --- .../window/flutter_overlay_window/OverlayService.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) 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 070c2d4e..c18afec4 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 @@ -19,6 +19,7 @@ import android.util.Log; import android.util.TypedValue; import android.view.Display; +import android.view.Gravity; import android.view.MotionEvent; import android.view.View; import android.view.WindowManager; @@ -297,8 +298,14 @@ public boolean onTouch(View view, MotionEvent event) { } lastX = event.getRawX(); lastY = event.getRawY(); - int xx = params.x + (int) dx; - int yy = params.y + (int) dy; + boolean invertX = WindowSetup.gravity == (Gravity.TOP | Gravity.RIGHT) + || WindowSetup.gravity == (Gravity.CENTER | Gravity.RIGHT) + || WindowSetup.gravity == (Gravity.BOTTOM | Gravity.RIGHT); + boolean invertY = WindowSetup.gravity == (Gravity.BOTTOM | Gravity.LEFT) + || WindowSetup.gravity == Gravity.BOTTOM + || WindowSetup.gravity == (Gravity.BOTTOM | Gravity.RIGHT); + int xx = params.x + ((int) dx * (invertX ? -1 : 1)); + int yy = params.y + ((int) dy * (invertY ? -1 : 1)); params.x = xx; params.y = yy; windowManager.updateViewLayout(flutterView, params);