diff options
| author | Po Lu | 2023-01-28 16:29:22 +0800 |
|---|---|---|
| committer | Po Lu | 2023-01-28 16:29:22 +0800 |
| commit | 198b8160cfeeb178d3b2073c8d03afdafe338908 (patch) | |
| tree | 590c73006536ddfcc8acd8eff8fb80e31c2a009b /src/androidmenu.c | |
| parent | 5bd38905ac67221503f027737912fa0df3602a02 (diff) | |
| download | emacs-198b8160cfeeb178d3b2073c8d03afdafe338908.tar.gz emacs-198b8160cfeeb178d3b2073c8d03afdafe338908.zip | |
Update Android port
* doc/emacs/android.texi (Android File System): Describe an
easier way to disable scoped storage.
* java/AndroidManifest.xml.in: Add new permission to allow that.
* java/README: Add more text describing Java.
* java/org/gnu/emacs/EmacsContextMenu.java (Item): New fields
`isCheckable' and `isChecked'.
(EmacsContextMenu, addItem): New arguments.
(inflateMenuItems): Set checked status as appropriate.
* java/org/gnu/emacs/EmacsCopyArea.java (perform): Disallow
operations where width and height are less than or equal to
zero.
* lisp/menu-bar.el (menu-bar-edit-menu): Make
execute-extended-command available as a menu item.
* src/androidmenu.c (android_init_emacs_context_menu)
(android_menu_show):
* src/menu.c (have_boxes): Implement menu check boxes.
Diffstat (limited to 'src/androidmenu.c')
| -rw-r--r-- | src/androidmenu.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/src/androidmenu.c b/src/androidmenu.c index 7b27825ad60..acad775f26a 100644 --- a/src/androidmenu.c +++ b/src/androidmenu.c | |||
| @@ -98,7 +98,7 @@ android_init_emacs_context_menu (void) | |||
| 98 | FIND_METHOD_STATIC (create_context_menu, "createContextMenu", | 98 | FIND_METHOD_STATIC (create_context_menu, "createContextMenu", |
| 99 | "(Ljava/lang/String;)Lorg/gnu/emacs/EmacsContextMenu;"); | 99 | "(Ljava/lang/String;)Lorg/gnu/emacs/EmacsContextMenu;"); |
| 100 | 100 | ||
| 101 | FIND_METHOD (add_item, "addItem", "(ILjava/lang/String;Z)V"); | 101 | FIND_METHOD (add_item, "addItem", "(ILjava/lang/String;ZZZ)V"); |
| 102 | FIND_METHOD (add_submenu, "addSubmenu", "(Ljava/lang/String;" | 102 | FIND_METHOD (add_submenu, "addSubmenu", "(Ljava/lang/String;" |
| 103 | "Ljava/lang/String;)Lorg/gnu/emacs/EmacsContextMenu;"); | 103 | "Ljava/lang/String;)Lorg/gnu/emacs/EmacsContextMenu;"); |
| 104 | FIND_METHOD (add_pane, "addPane", "(Ljava/lang/String;)V"); | 104 | FIND_METHOD (add_pane, "addPane", "(Ljava/lang/String;)V"); |
| @@ -241,7 +241,7 @@ android_menu_show (struct frame *f, int x, int y, int menuflags, | |||
| 241 | Lisp_Object pane_name, prefix; | 241 | Lisp_Object pane_name, prefix; |
| 242 | const char *pane_string; | 242 | const char *pane_string; |
| 243 | specpdl_ref count, count1; | 243 | specpdl_ref count, count1; |
| 244 | Lisp_Object item_name, enable, def, tem, entry; | 244 | Lisp_Object item_name, enable, def, tem, entry, type, selected; |
| 245 | jmethodID method; | 245 | jmethodID method; |
| 246 | jobject store; | 246 | jobject store; |
| 247 | bool rc; | 247 | bool rc; |
| @@ -250,6 +250,7 @@ android_menu_show (struct frame *f, int x, int y, int menuflags, | |||
| 250 | struct android_dismiss_menu_data data; | 250 | struct android_dismiss_menu_data data; |
| 251 | struct android_menu_subprefix *subprefix, *temp_subprefix; | 251 | struct android_menu_subprefix *subprefix, *temp_subprefix; |
| 252 | struct android_menu_subprefix *subprefix_1; | 252 | struct android_menu_subprefix *subprefix_1; |
| 253 | bool checkmark; | ||
| 253 | 254 | ||
| 254 | count = SPECPDL_INDEX (); | 255 | count = SPECPDL_INDEX (); |
| 255 | 256 | ||
| @@ -351,6 +352,8 @@ android_menu_show (struct frame *f, int x, int y, int menuflags, | |||
| 351 | item_name = AREF (menu_items, i + MENU_ITEMS_ITEM_NAME); | 352 | item_name = AREF (menu_items, i + MENU_ITEMS_ITEM_NAME); |
| 352 | enable = AREF (menu_items, i + MENU_ITEMS_ITEM_ENABLE); | 353 | enable = AREF (menu_items, i + MENU_ITEMS_ITEM_ENABLE); |
| 353 | def = AREF (menu_items, i + MENU_ITEMS_ITEM_DEFINITION); | 354 | def = AREF (menu_items, i + MENU_ITEMS_ITEM_DEFINITION); |
| 355 | type = AREF (menu_items, i + MENU_ITEMS_ITEM_TYPE); | ||
| 356 | selected = AREF (menu_items, i + MENU_ITEMS_ITEM_SELECTED); | ||
| 354 | 357 | ||
| 355 | /* This is an actual menu item (or submenu). Add it to the | 358 | /* This is an actual menu item (or submenu). Add it to the |
| 356 | menu. */ | 359 | menu. */ |
| @@ -392,12 +395,20 @@ android_menu_show (struct frame *f, int x, int y, int menuflags, | |||
| 392 | title_string = (!NILP (item_name) | 395 | title_string = (!NILP (item_name) |
| 393 | ? android_build_string (item_name) | 396 | ? android_build_string (item_name) |
| 394 | : NULL); | 397 | : NULL); |
| 398 | |||
| 399 | /* Determine whether or not to display a check box. */ | ||
| 400 | |||
| 401 | checkmark = (EQ (type, QCtoggle) | ||
| 402 | || EQ (type, QCradio)); | ||
| 403 | |||
| 395 | (*android_java_env)->CallVoidMethod (android_java_env, | 404 | (*android_java_env)->CallVoidMethod (android_java_env, |
| 396 | current_context_menu, | 405 | current_context_menu, |
| 397 | menu_class.add_item, | 406 | menu_class.add_item, |
| 398 | (jint) item_id, | 407 | (jint) item_id, |
| 399 | title_string, | 408 | title_string, |
| 400 | (jboolean) !NILP (enable)); | 409 | (jboolean) !NILP (enable), |
| 410 | (jboolean) checkmark, | ||
| 411 | (jboolean) !NILP (selected)); | ||
| 401 | android_exception_check (); | 412 | android_exception_check (); |
| 402 | 413 | ||
| 403 | if (title_string) | 414 | if (title_string) |