# HG changeset patch # User bsmith@81767d24-ef19-dc11-ae90-00e081727c95 # Date 1626461705 0 # Node ID a11522c303456806106ddfe83431065a00ffe562 # Parent 3b9bbd69bb9cb1c75d81f8e96e92c099915ebd8d 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. diff -r 3b9bbd69bb9c -r a11522c30345 android/DWindows.kt --- 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) diff -r 3b9bbd69bb9c -r a11522c30345 android/dw.cpp --- a/android/dw.cpp Fri Jul 16 02:58:43 2021 +0000 +++ b/android/dw.cpp Fri Jul 16 18:55:05 2021 +0000 @@ -311,7 +311,7 @@ case 4: { int (* API buttonfunc)(HWND, int, int, int, void *) = (int (* API)(HWND, int, int, int, void *))handler->signalfunction; - int button = 1; + int button = params[5] ? DW_POINTER_TO_INT(params[5]) : 1; retval = buttonfunc(handler->window, DW_POINTER_TO_INT(params[3]), DW_POINTER_TO_INT(params[4]), button, handler->data); break;