diff android/dw.cpp @ 2544:dbfcc0e357d6

Android: Clean up the menus... add separator, remove tildes and implement callbacks.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Thu, 13 May 2021 20:46:07 +0000
parents f9367eb9a6e7
children f803f3b164cf
line wrap: on
line diff
--- a/android/dw.cpp	Thu May 13 19:54:15 2021 +0000
+++ b/android/dw.cpp	Thu May 13 20:46:07 2021 +0000
@@ -492,6 +492,15 @@
     return timerfunc((void *)data);
 }
 
+/* A more simple method for quicker calls */
+JNIEXPORT void JNICALL
+Java_org_dbsoft_dwindows_DWMenu_eventHandlerSimple(JNIEnv* env, jobject obj, jobject obj1, jint message) {
+    void *params[8] = { nullptr };
+
+    _dw_event_handler(obj1, params, message);
+}
+
+
 /* This function adds a signal handler callback into the linked list.
  */
 void _dw_new_signal(ULONG message, HWND window, int msgid, void *signalfunction, void *discfunc, void *data)
@@ -3984,6 +3993,27 @@
 {
 }
 
+char _dw_removetilde(char *dest, const char *src)
+{
+    int z, cur=0;
+    char accel = '\0';
+
+    for(z=0;z<strlen(src);z++)
+    {
+        if(src[z] != '~')
+        {
+            dest[cur] = src[z];
+            cur++;
+        }
+        else
+        {
+            accel = src[z+1];
+        }
+    }
+    dest[cur] = 0;
+    return accel;
+}
+
 /*
  * Adds a menuitem or submenu to an existing menu.
  * Parameters:
@@ -4003,8 +4033,10 @@
 
     if((env = (JNIEnv *)pthread_getspecific(_dw_env_key)))
     {
+        char *newtitle = (char *)alloca(strlen(title)+1);
+        char accel = _dw_removetilde(newtitle, title);
         // Create a string
-        jstring jstr = env->NewStringUTF(title);
+        jstring jstr = env->NewStringUTF(newtitle);
         // First get the class that contains the method you need to call
         jclass clazz = _dw_find_class(env, DW_CLASS_NAME);
         // Get the method that you want to call