Mercurial > dwindows
changeset 2611:ed2c4a503666
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.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Sun, 18 Jul 2021 15:56:12 +0000 |
parents | da51be036599 |
children | 4628c8c34125 |
files | android/DWindows.kt |
diffstat | 1 files changed, 11 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- 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 })