changeset 2546:897d94c20365

Android: Implement disabled menu items.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Thu, 13 May 2021 22:52:11 +0000
parents f803f3b164cf
children dbd15c13f5bb
files android/DWindows.kt
diffstat 1 files changed, 20 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/android/DWindows.kt	Thu May 13 22:03:48 2021 +0000
+++ b/android/DWindows.kt	Thu May 13 22:52:11 2021 +0000
@@ -405,6 +405,7 @@
     var submenu: DWMenu? = null
     var checked: Boolean = false
     var check: Boolean = false
+    var enabled: Boolean = true
     var menuitem: MenuItem? = null
     var submenuitem: SubMenu? = null
     var id: Int = 0
@@ -439,6 +440,7 @@
                         menuitem.menuitem = menu?.add(group, menuitem.id, 0, menuitem.title)
                         menuitem.menuitem!!.isCheckable = menuitem.check
                         menuitem.menuitem!!.isChecked = menuitem.checked
+                        menuitem.menuitem!!.isEnabled = menuitem.enabled
                         menuitem.menuitem!!.setOnMenuItemClickListener(MenuItem.OnMenuItemClickListener { item: MenuItem? ->
                             eventHandlerSimple(menuitem, 8)
                             true
@@ -555,6 +557,9 @@
         if(submenu != null) {
             menuitem.submenu = submenu
         }
+        if((flags and (1 shl 1)) != 0) {
+            menuitem.enabled = false
+        }
         if((flags and (1 shl 2)) != 0) {
             menuitem.checked = true
         }
@@ -592,6 +597,21 @@
     {
         for(menuitem in menu.children) {
             if(menuitem.id == cid) {
+                // Handle DW_MIS_ENABLED/DISABLED
+                if((state and (1 or (1 shl 1))) != 0) {
+                    var enabled: Boolean = false
+
+                    // Handle DW_MIS_ENABLED
+                    if ((state and 1) != 0) {
+                        enabled = true
+                    }
+                    menuitem.enabled = enabled
+                    runOnUiThread {
+                        menuitem.menuitem!!.isEnabled = enabled
+                        invalidateOptionsMenu()
+                    }
+                }
+
                 // Handle DW_MIS_CHECKED/UNCHECKED
                 if((state and ((1 shl 2) or (1 shl 3))) != 0) {
                     var checked: Boolean = false