# HG changeset patch # User bsmith@81767d24-ef19-dc11-ae90-00e081727c95 # Date 1626404323 0 # Node ID 3b9bbd69bb9cb1c75d81f8e96e92c099915ebd8d # Parent 6c30fcc79402b571d370ccc4a775e868d95b901d Android: Implement dw_menu_popup() ... still need to implement the context events. diff -r 6c30fcc79402 -r 3b9bbd69bb9c android/DWindows.kt --- a/android/DWindows.kt Thu Jul 15 21:22:59 2021 +0000 +++ b/android/DWindows.kt Fri Jul 16 02:58:43 2021 +0000 @@ -830,6 +830,16 @@ return darkMode } + fun menuPopup(menu: DWMenu, parent: View, x: Int, y: Int) + { + runOnUiThread { + val popup = PopupMenu(this, parent) + + menu.createMenu(popup.menu) + popup.show() + } + } + fun menuBarNew(location: View): DWMenu? { // TODO: Make sure location is this activity diff -r 6c30fcc79402 -r 3b9bbd69bb9c android/dw.cpp --- a/android/dw.cpp Thu Jul 15 21:22:59 2021 +0000 +++ b/android/dw.cpp Fri Jul 16 02:58:43 2021 +0000 @@ -4651,6 +4651,20 @@ */ void API dw_menu_popup(HMENUI *menu, HWND parent, int x, int y) { + JNIEnv *env; + + if(menu && *menu && parent && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) + { + // 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 + jmethodID menuPopup = env->GetMethodID(clazz, "menuPopup", + "(Lorg/dbsoft/dwindows/DWMenu;Landroid/view/View;II)V"); + // Call the method on the object + env->CallVoidMethod(_dw_obj, menuPopup, *menu, parent, x, y); + _dw_jni_check_exception(env); + *menu = nullptr; + } } char _dw_removetilde(char *dest, const char *src)