diff options
| author | Po Lu | 2025-12-23 10:39:45 +0800 |
|---|---|---|
| committer | Po Lu | 2025-12-23 10:39:45 +0800 |
| commit | b0140bcd44326632538dc377dd336b82a1df4dd9 (patch) | |
| tree | dab1a81e3369797347d317b9fd11b033fe5e3aba /src/android.c | |
| parent | 22070c6f2f2cf31861642295ec215a177741c361 (diff) | |
| download | emacs-b0140bcd44326632538dc377dd336b82a1df4dd9.tar.gz emacs-b0140bcd44326632538dc377dd336b82a1df4dd9.zip | |
Implement set_window_size_and_position_hook on Android
* java/org/gnu/emacs/EmacsWindow.java (moveResizeWindow): New
method, which alters all of the bounding box of a window at
once.
* src/android.c (android_init_emacs_window): Load method
`move_resize_window'.
(android_move_resize_window): Invoke this method, rather than a
sequence of operations that will produce two ConfigureNotify
events.
* src/androidterm.c (android_set_window_size_and_position_1)
(android_set_window_size_and_position): New functions; ported
from X.
(android_create_terminal): Register the same.
Diffstat (limited to 'src/android.c')
| -rw-r--r-- | src/android.c | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/src/android.c b/src/android.c index 5f2f2e35239..b87430bdd74 100644 --- a/src/android.c +++ b/src/android.c | |||
| @@ -102,6 +102,7 @@ struct android_emacs_window | |||
| 102 | jmethodID unmap_window; | 102 | jmethodID unmap_window; |
| 103 | jmethodID resize_window; | 103 | jmethodID resize_window; |
| 104 | jmethodID move_window; | 104 | jmethodID move_window; |
| 105 | jmethodID move_resize_window; | ||
| 105 | jmethodID make_input_focus; | 106 | jmethodID make_input_focus; |
| 106 | jmethodID raise; | 107 | jmethodID raise; |
| 107 | jmethodID lower; | 108 | jmethodID lower; |
| @@ -1965,6 +1966,7 @@ android_init_emacs_window (void) | |||
| 1965 | FIND_METHOD (unmap_window, "unmapWindow", "()V"); | 1966 | FIND_METHOD (unmap_window, "unmapWindow", "()V"); |
| 1966 | FIND_METHOD (resize_window, "resizeWindow", "(II)V"); | 1967 | FIND_METHOD (resize_window, "resizeWindow", "(II)V"); |
| 1967 | FIND_METHOD (move_window, "moveWindow", "(II)V"); | 1968 | FIND_METHOD (move_window, "moveWindow", "(II)V"); |
| 1969 | FIND_METHOD (move_resize_window, "moveResizeWindow", "(IIII)V"); | ||
| 1968 | FIND_METHOD (make_input_focus, "makeInputFocus", "(J)V"); | 1970 | FIND_METHOD (make_input_focus, "makeInputFocus", "(J)V"); |
| 1969 | FIND_METHOD (raise, "raise", "()V"); | 1971 | FIND_METHOD (raise, "raise", "()V"); |
| 1970 | FIND_METHOD (lower, "lower", "()V"); | 1972 | FIND_METHOD (lower, "lower", "()V"); |
| @@ -5331,11 +5333,23 @@ android_get_geometry (android_window handle, | |||
| 5331 | } | 5333 | } |
| 5332 | 5334 | ||
| 5333 | void | 5335 | void |
| 5334 | android_move_resize_window (android_window window, int x, int y, | 5336 | android_move_resize_window (android_window handle, int x, int y, |
| 5335 | unsigned int width, unsigned int height) | 5337 | unsigned int width, unsigned int height) |
| 5336 | { | 5338 | { |
| 5337 | android_move_window (window, x, y); | 5339 | jobject window; |
| 5338 | android_resize_window (window, width, height); | 5340 | jmethodID move_resize_window; |
| 5341 | |||
| 5342 | window = android_resolve_handle (handle); | ||
| 5343 | move_resize_window = window_class.move_resize_window; | ||
| 5344 | |||
| 5345 | (*android_java_env)->CallNonvirtualVoidMethod (android_java_env, | ||
| 5346 | window, | ||
| 5347 | window_class.class, | ||
| 5348 | move_resize_window, | ||
| 5349 | (jint) x, (jint) y, | ||
| 5350 | (jint) width, | ||
| 5351 | (jint) height); | ||
| 5352 | android_exception_check (); | ||
| 5339 | } | 5353 | } |
| 5340 | 5354 | ||
| 5341 | void | 5355 | void |