@@ -3,14 +3,15 @@ use std::{
3
3
collections:: HashMap ,
4
4
rc:: { Rc , Weak } ,
5
5
sync:: Arc ,
6
+ thread,
6
7
} ;
7
8
8
9
use irondash_engine_context:: EngineContext ;
9
10
use irondash_message_channel:: { IsolateId , Value } ;
10
11
use irondash_run_loop:: RunLoop ;
11
12
use jni:: {
12
13
objects:: { GlobalRef , JClass , JObject , JString , JValue } ,
13
- sys:: { jlong, jvalue} ,
14
+ sys:: { jint , jlong, jvalue} ,
14
15
JNIEnv ,
15
16
} ;
16
17
@@ -25,6 +26,7 @@ use crate::{
25
26
log:: OkLog ,
26
27
reader_manager:: RegisteredDataReader ,
27
28
util:: { DropNotifier , NextId } ,
29
+ value_promise:: Promise ,
28
30
} ;
29
31
30
32
use super :: {
@@ -416,19 +418,28 @@ impl Drop for PlatformDropContext {
416
418
fn update_last_touch_point < ' a > (
417
419
env : & mut JNIEnv < ' a > ,
418
420
view_root : JObject < ' a > ,
419
- event : & JObject < ' a > ,
421
+ x : i32 ,
422
+ y : i32 ,
420
423
) -> NativeExtensionsResult < ( ) > {
421
- env. call_method (
422
- view_root,
423
- "enqueueInputEvent" ,
424
- "(Landroid/view/InputEvent;Landroid/view/InputEventReceiver;IZ)V" ,
425
- & [
426
- ( & event) . into ( ) ,
427
- ( & JObject :: null ( ) ) . into ( ) ,
428
- 1 . into ( ) ,
429
- true . into ( ) ,
430
- ] ,
431
- ) ?;
424
+ let view_root_global = env. new_global_ref ( & view_root) ?;
425
+ let jvm = env. get_java_vm ( ) ?;
426
+ let p = Arc :: new ( Promise :: new ( ) ) ;
427
+ let p2 = p. clone ( ) ;
428
+ thread:: spawn ( move || {
429
+ let update = move || -> NativeExtensionsResult < ( ) > {
430
+ let mut env = jvm. attach_current_thread ( ) ?;
431
+ let view_root = view_root_global. as_obj ( ) ;
432
+ let last_touch_point = env
433
+ . get_field ( view_root, "mLastTouchPoint" , "Landroid/graphics/PointF;" ) ?
434
+ . l ( ) ?;
435
+ env. set_field ( & last_touch_point, "x" , "F" , ( x as f32 ) . into ( ) ) ?;
436
+ env. set_field ( & last_touch_point, "y" , "F" , ( y as f32 ) . into ( ) ) ?;
437
+ Ok ( ( ) )
438
+ } ;
439
+ p. set ( update ( ) ) ;
440
+ } ) ;
441
+ p2. wait ( ) ?;
442
+
432
443
Ok ( ( ) )
433
444
}
434
445
@@ -440,9 +451,10 @@ pub extern "C" fn Java_com_superlist_super_1native_1extensions_DragDropHelper_up
440
451
mut env : JNIEnv < ' a > ,
441
452
_class : JClass ,
442
453
view_root : JObject < ' a > ,
443
- event : JObject < ' a > ,
454
+ x : jint ,
455
+ y : jint ,
444
456
) {
445
- update_last_touch_point ( & mut env, view_root, & event ) . ok_log ( ) ;
457
+ update_last_touch_point ( & mut env, view_root, x , y ) . ok_log ( ) ;
446
458
}
447
459
448
460
#[ no_mangle]
0 commit comments