aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPo Lu2023-01-28 16:29:22 +0800
committerPo Lu2023-01-28 16:29:22 +0800
commit198b8160cfeeb178d3b2073c8d03afdafe338908 (patch)
tree590c73006536ddfcc8acd8eff8fb80e31c2a009b /src
parent5bd38905ac67221503f027737912fa0df3602a02 (diff)
downloademacs-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')
-rw-r--r--src/androidmenu.c17
-rw-r--r--src/menu.c2
2 files changed, 15 insertions, 4 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)
diff --git a/src/menu.c b/src/menu.c
index e02ee880119..6ab34a16996 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -48,7 +48,7 @@ static bool
48have_boxes (void) 48have_boxes (void)
49{ 49{
50#if defined (USE_X_TOOLKIT) || defined (USE_GTK) || defined (HAVE_NTGUI) || defined (HAVE_NS) \ 50#if defined (USE_X_TOOLKIT) || defined (USE_GTK) || defined (HAVE_NTGUI) || defined (HAVE_NS) \
51 || defined (HAVE_HAIKU) 51 || defined (HAVE_HAIKU) || defined (HAVE_ANDROID)
52 if (FRAME_WINDOW_P (XFRAME (Vmenu_updating_frame))) 52 if (FRAME_WINDOW_P (XFRAME (Vmenu_updating_frame)))
53 return 1; 53 return 1;
54#endif 54#endif