# HG changeset patch # User bsmith@81767d24-ef19-dc11-ae90-00e081727c95 # Date 1626623772 0 # Node ID ed2c4a50366640f94d3ffea2729470c0c61c18d7 # Parent da51be03659908e2227140f97bf53297688f625f Android: Implement button release and motion notify events. Motion notify events will always have an associate touch on Android so button will always be masked. I currently mask button 1 for motion notify to match the behavior I implemented on iOS. However since long touches get interpreted as button 2, if you hold the touch long enough while moving it could potentially be interpreted as button 2... Not sure if we should always mask button 1 like I am doing now, or let it become button 2 after the long touch time has passed. Whatever the behavior it should match iOS. diff -r da51be036599 -r ed2c4a503666 android/DWindows.kt --- a/android/DWindows.kt Sun Jul 18 08:54:12 2021 +0000 +++ b/android/DWindows.kt Sun Jul 18 15:56:12 2021 +0000 @@ -245,6 +245,7 @@ var fontsize: Float? = null var evx: Float = 0f var evy: Float = 0f + var button: Int = 1 override fun onSizeChanged(width: Int, height: Int, oldWidth: Int, oldHeight: Int) { super.onSizeChanged(width, height, oldWidth, oldHeight) @@ -2881,10 +2882,18 @@ MotionEvent.ACTION_DOWN -> { render!!.evx = event.x render!!.evy = event.y + // Event will be generated in the onClickListener or + // onLongClickListener below, just save the location } MotionEvent.ACTION_UP -> { render!!.evx = event.x render!!.evy = event.y + eventHandlerInt(render!!, 4, event.x.toInt(), event.y.toInt(), render!!.button, 0) + } + MotionEvent.ACTION_MOVE -> { + render!!.evx = event.x + render!!.evy = event.y + eventHandlerInt(render!!, 5, event.x.toInt(), event.y.toInt(), 1, 0) } } return false @@ -2892,18 +2901,18 @@ }) render!!.setOnLongClickListener{ // Long click functions as button 2 + render!!.button = 2 eventHandlerInt(render!!, 3, render!!.evx.toInt(), render!!.evy.toInt(), 2, 0) true } render!!.setOnClickListener{ // Normal click functions as button 1 + render!!.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) - true } false })