# HG changeset patch # User bsmith@81767d24-ef19-dc11-ae90-00e081727c95 # Date 1626643309 0 # Node ID 72f1141c07aaca8311398a54b48f09f19b1d0ed3 # Parent 4628c8c341252a40013cccfaf6fbfccc41882106 Android: Standardize DWContainer behavior part 2. If single selection a single tap on a row will cause ENTER. If multiple selection... single tap will select or deselect. A long tap will cause CONTEXT, a double tap will cause ENTER. diff -r 4628c8c34125 -r 72f1141c07aa android/DWindows.kt --- a/android/DWindows.kt Sun Jul 18 20:55:45 2021 +0000 +++ b/android/DWindows.kt Sun Jul 18 21:21:49 2021 +0000 @@ -628,6 +628,8 @@ var simpleMode: Boolean = true var oddColor: Int? = null var evenColor: Int? = null + var lastClick: Long = 0 + var lastClickRow: Int = -1 override fun getCount(): Int { return model.numberOfRows() @@ -2147,10 +2149,22 @@ cont!!.setOnItemClickListener { parent, view, position, id -> val title = adapter.model.getRowTitle(position) val data = adapter.model.getRowData(position) + val now = System.currentTimeMillis() view.isSelected = !view.isSelected adapter.selectedItem = position - eventHandlerContainer(cont!!, 12, title, 0, 0, data) + // If we are single select or we got a double tap... + // Generate an ENTER event + if(cont!!.choiceMode != ListView.CHOICE_MODE_MULTIPLE || + (position == adapter.lastClickRow && + (now - adapter.lastClick) < ViewConfiguration.getDoubleTapTimeout())) { + eventHandlerContainer(cont!!, 9, title, 0, 0, data) + } else { + // If we are mutiple select, generate a SELECT event + eventHandlerContainer(cont!!, 12, title, 0, 0, data) + } + adapter.lastClick = now + adapter.lastClickRow = position } cont!!.setOnContextClickListener { if(adapter.selectedItem > -1 && adapter.selectedItem < adapter.model.numberOfRows()) { @@ -2165,7 +2179,7 @@ val title = adapter.model.getRowTitle(position) val data = adapter.model.getRowData(position) - eventHandlerContainer(cont!!, 9, title, 0, 0, data) + eventHandlerContainer(cont!!, 10, title, 0, 0, data) true } }