Mercurial > dwindows
comparison android/DWindows.kt @ 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 | a11522c30345 |
children | 72f1141c07aa |
comparison
equal
deleted
inserted
replaced
2610:da51be036599 | 2611:ed2c4a503666 |
---|---|
243 var cachedCanvas: Canvas? = null | 243 var cachedCanvas: Canvas? = null |
244 var typeface: Typeface? = null | 244 var typeface: Typeface? = null |
245 var fontsize: Float? = null | 245 var fontsize: Float? = null |
246 var evx: Float = 0f | 246 var evx: Float = 0f |
247 var evy: Float = 0f | 247 var evy: Float = 0f |
248 var button: Int = 1 | |
248 | 249 |
249 override fun onSizeChanged(width: Int, height: Int, oldWidth: Int, oldHeight: Int) { | 250 override fun onSizeChanged(width: Int, height: Int, oldWidth: Int, oldHeight: Int) { |
250 super.onSizeChanged(width, height, oldWidth, oldHeight) | 251 super.onSizeChanged(width, height, oldWidth, oldHeight) |
251 // Send DW_SIGNAL_CONFIGURE | 252 // Send DW_SIGNAL_CONFIGURE |
252 eventHandlerInt(1, width, height, 0, 0) | 253 eventHandlerInt(1, width, height, 0, 0) |
2879 override fun onTouch(v: View, event: MotionEvent): Boolean { | 2880 override fun onTouch(v: View, event: MotionEvent): Boolean { |
2880 when (event.action) { | 2881 when (event.action) { |
2881 MotionEvent.ACTION_DOWN -> { | 2882 MotionEvent.ACTION_DOWN -> { |
2882 render!!.evx = event.x | 2883 render!!.evx = event.x |
2883 render!!.evy = event.y | 2884 render!!.evy = event.y |
2885 // Event will be generated in the onClickListener or | |
2886 // onLongClickListener below, just save the location | |
2884 } | 2887 } |
2885 MotionEvent.ACTION_UP -> { | 2888 MotionEvent.ACTION_UP -> { |
2886 render!!.evx = event.x | 2889 render!!.evx = event.x |
2887 render!!.evy = event.y | 2890 render!!.evy = event.y |
2891 eventHandlerInt(render!!, 4, event.x.toInt(), event.y.toInt(), render!!.button, 0) | |
2892 } | |
2893 MotionEvent.ACTION_MOVE -> { | |
2894 render!!.evx = event.x | |
2895 render!!.evy = event.y | |
2896 eventHandlerInt(render!!, 5, event.x.toInt(), event.y.toInt(), 1, 0) | |
2888 } | 2897 } |
2889 } | 2898 } |
2890 return false | 2899 return false |
2891 } | 2900 } |
2892 }) | 2901 }) |
2893 render!!.setOnLongClickListener{ | 2902 render!!.setOnLongClickListener{ |
2894 // Long click functions as button 2 | 2903 // Long click functions as button 2 |
2904 render!!.button = 2 | |
2895 eventHandlerInt(render!!, 3, render!!.evx.toInt(), render!!.evy.toInt(), 2, 0) | 2905 eventHandlerInt(render!!, 3, render!!.evx.toInt(), render!!.evy.toInt(), 2, 0) |
2896 true | 2906 true |
2897 } | 2907 } |
2898 render!!.setOnClickListener{ | 2908 render!!.setOnClickListener{ |
2899 // Normal click functions as button 1 | 2909 // Normal click functions as button 1 |
2910 render!!.button = 1 | |
2900 eventHandlerInt(render!!, 3, render!!.evx.toInt(), render!!.evy.toInt(), 1, 0) | 2911 eventHandlerInt(render!!, 3, render!!.evx.toInt(), render!!.evy.toInt(), 1, 0) |
2901 true | |
2902 } | 2912 } |
2903 render!!.setOnKeyListener(View.OnKeyListener { v, keyCode, event -> | 2913 render!!.setOnKeyListener(View.OnKeyListener { v, keyCode, event -> |
2904 if (event.action == KeyEvent.ACTION_DOWN) { | 2914 if (event.action == KeyEvent.ACTION_DOWN) { |
2905 eventHandlerKey(render!!, 2, keyCode, event.unicodeChar, event.modifiers, event.characters) | 2915 eventHandlerKey(render!!, 2, keyCode, event.unicodeChar, event.modifiers, event.characters) |
2906 true | |
2907 } | 2916 } |
2908 false | 2917 false |
2909 }) | 2918 }) |
2910 } | 2919 } |
2911 return render | 2920 return render |