aboutsummaryrefslogtreecommitdiffstats
path: root/src/androidfns.c
diff options
context:
space:
mode:
authorPo Lu2023-01-20 19:06:32 +0800
committerPo Lu2023-01-20 19:06:32 +0800
commitd44b60c2f001d57b010f0e9b82f798fbad9a23d6 (patch)
tree1ff208bfccd74a3b2ad4488cd66c89762d0acd7e /src/androidfns.c
parente07b58dc35a66b5e611f437ec007292d82dc8f13 (diff)
downloademacs-d44b60c2f001d57b010f0e9b82f798fbad9a23d6.tar.gz
emacs-d44b60c2f001d57b010f0e9b82f798fbad9a23d6.zip
Update Android port
* .gitignore: Don't ignore verbose.mk.android. * doc/emacs/Makefile.in (EMACSSOURCES): Add android.texi and input.texi. * doc/emacs/android.texi (Android): Document support for the on-screen keyboard. (Android Startup): Document how to start Emacs with -Q on Android. (Android Environment): Document how Emacs works around the system ``task killer''. Document changes to frame deletion behavior. * doc/emacs/emacs.texi (Top): * doc/emacs/input.texi (Other Input Devices, On-Screen Keyboards): Document how to use Emacs with virtual keyboards. * doc/lispref/commands.texi (Touchscreen Events): Document changes to `touch-screen-track-drag'. * doc/lispref/frames.texi (Frames, On-Screen Keyboards): New node. * java/AndroidManifest.xml.in: Add settings activity and appropriate OSK adjustment mode. * java/org/gnu/emacs/EmacsActivity.java (onCreate): Allow creating Emacs with -Q. (onDestroy): Don't remove if killed by the system. * java/org/gnu/emacs/EmacsContextMenu.java (inflateMenuItems): Fix context menus again. * java/org/gnu/emacs/EmacsNative.java (EmacsNative): Make all event sending functions return long. * java/org/gnu/emacs/EmacsPreferencesActivity.java (EmacsPreferencesActivity): New class. * java/org/gnu/emacs/EmacsService.java (EmacsService) (onStartCommand, onCreate, startEmacsService): Start as a foreground service if necessary to bypass system restrictions. * java/org/gnu/emacs/EmacsSurfaceView.java (EmacsSurfaceView): * java/org/gnu/emacs/EmacsThread.java (EmacsThread, run): * java/org/gnu/emacs/EmacsView.java (EmacsView, onLayout) (onDetachedFromWindow): * java/org/gnu/emacs/EmacsWindow.java (EmacsWindow, viewLayout): Implement frame resize synchronization.. * java/org/gnu/emacs/EmacsWindowAttachmentManager.java (EmacsWindowAttachmentManager, removeWindowConsumer): Adjust accordingly for changes to frame deletion behavior. * lisp/frame.el (android-toggle-on-screen-keyboard) (frame-toggle-on-screen-keyboard): New function. * lisp/minibuffer.el (minibuffer-setup-on-screen-keyboard) (minibuffer-exit-on-screen-keyboard): New functions. (minibuffer-setup-hook, minibuffer-exit-hook): Add new functions to hooks. * lisp/touch-screen.el (touch-screen-relative-xy): Accept new value of window `frame'. Return frame coordinates in that case. (touch-screen-set-point-commands): New variable. (touch-screen-handle-point-up): Respect that variable. (touch-screen-track-drag): Return `no-drag' where appropriate. (touch-screen-drag-mode-line-1, touch-screen-drag-mode-line): Refactor to use `no-drag'. * src/android.c (struct android_emacs_window): New methods. Make all event sending functions return the event serial. (android_toggle_on_screen_keyboard, android_window_updated): New functions. * src/android.h: Update prototypes. * src/androidfns.c (Fandroid_toggle_on_screen_keyboard) (syms_of_androidfns): New function. * src/androidgui.h (struct android_any_event) (struct android_key_event, struct android_configure_event) (struct android_focus_event, struct android_window_action_event) (struct android_crossing_event, struct android_motion_event) (struct android_button_event, struct android_touch_event) (struct android_wheel_event, struct android_iconify_event) (struct android_menu_event): Add `serial' fields. * src/androidterm.c (handle_one_android_event) (android_frame_up_to_date): * src/androidterm.h (struct android_output): Implement frame resize synchronization.
Diffstat (limited to 'src/androidfns.c')
-rw-r--r--src/androidfns.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/androidfns.c b/src/androidfns.c
index bb37c415069..77ee2e8de44 100644
--- a/src/androidfns.c
+++ b/src/androidfns.c
@@ -2332,6 +2332,30 @@ there is no mouse. */)
2332#endif 2332#endif
2333} 2333}
2334 2334
2335DEFUN ("android-toggle-on-screen-keyboard",
2336 Fandroid_toggle_on_screen_keyboard,
2337 Sandroid_toggle_on_screen_keyboard, 2, 2, 0,
2338 doc: /* Display or hide the on-screen keyboard.
2339If HIDE is non-nil, hide the on screen keyboard if it is currently
2340being displayed. Else, request that the system display it on behalf
2341of FRAME. This request may be rejected if FRAME does not have the
2342input focus. */)
2343 (Lisp_Object frame, Lisp_Object hide)
2344{
2345#ifndef ANDROID_STUBIFY
2346 struct frame *f;
2347
2348 f = decode_window_system_frame (frame);
2349
2350 block_input ();
2351 android_toggle_on_screen_keyboard (FRAME_ANDROID_WINDOW (f),
2352 NILP (hide));
2353 unblock_input ();
2354#endif
2355
2356 return Qnil;
2357}
2358
2335 2359
2336 2360
2337#ifndef ANDROID_STUBIFY 2361#ifndef ANDROID_STUBIFY
@@ -2781,6 +2805,7 @@ syms_of_androidfns (void)
2781 defsubr (&Sx_show_tip); 2805 defsubr (&Sx_show_tip);
2782 defsubr (&Sx_hide_tip); 2806 defsubr (&Sx_hide_tip);
2783 defsubr (&Sandroid_detect_mouse); 2807 defsubr (&Sandroid_detect_mouse);
2808 defsubr (&Sandroid_toggle_on_screen_keyboard);
2784 2809
2785#ifndef ANDROID_STUBIFY 2810#ifndef ANDROID_STUBIFY
2786 tip_timer = Qnil; 2811 tip_timer = Qnil;