diff android/DWindows.kt @ 2608:a11522c30345

Android: Add initial code to handle button presses and long clicks on DWRender. Android Studio seems to think there is something wrong with the setOnTouchListener() code but it seems to work.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Fri, 16 Jul 2021 18:55:05 +0000
parents 3b9bbd69bb9c
children ed2c4a503666
line wrap: on
line diff
--- a/android/DWindows.kt	Fri Jul 16 02:58:43 2021 +0000
+++ b/android/DWindows.kt	Fri Jul 16 18:55:05 2021 +0000
@@ -1,6 +1,7 @@
 package org.dbsoft.dwindows
 
 import android.R
+import android.annotation.SuppressLint
 import android.app.Activity
 import android.app.Dialog
 import android.app.NotificationChannel
@@ -242,6 +243,8 @@
     var cachedCanvas: Canvas? = null
     var typeface: Typeface? = null
     var fontsize: Float? = null
+    var evx: Float = 0f
+    var evy: Float = 0f
 
     override fun onSizeChanged(width: Int, height: Int, oldWidth: Int, oldHeight: Int) {
         super.onSizeChanged(width, height, oldWidth, oldHeight)
@@ -2871,6 +2874,32 @@
             render = DWRender(this)
             render!!.tag = dataArrayMap
             render!!.id = cid
+            render!!.setOnTouchListener(object : View.OnTouchListener {
+                @SuppressLint("ClickableViewAccessibility")
+                override fun onTouch(v: View, event: MotionEvent): Boolean {
+                    when (event.action) {
+                        MotionEvent.ACTION_DOWN -> {
+                            render!!.evx = event.x
+                            render!!.evy = event.y
+                        }
+                        MotionEvent.ACTION_UP -> {
+                            render!!.evx = event.x
+                            render!!.evy = event.y
+                        }
+                    }
+                    return false
+                }
+            })
+            render!!.setOnLongClickListener{
+                // Long click functions as button 2
+                eventHandlerInt(render!!, 3, render!!.evx.toInt(), render!!.evy.toInt(), 2, 0)
+                true
+            }
+            render!!.setOnClickListener{
+                // Normal click functions as button 1
+                eventHandlerInt(render!!, 3, render!!.evx.toInt(), render!!.evy.toInt(), 1, 0)
+                true
+            }
             render!!.setOnKeyListener(View.OnKeyListener { v, keyCode, event ->
                 if (event.action == KeyEvent.ACTION_DOWN) {
                     eventHandlerKey(render!!, 2, keyCode, event.unicodeChar, event.modifiers, event.characters)