This commit is contained in:
@@ -221,8 +221,23 @@ fun TerminalView(
|
|||||||
if (faPos >= 0) {
|
if (faPos >= 0) {
|
||||||
val fa = buf.getDisplayCell(faPos)?.fa?.toInt()?.and(0xFF) ?: 0
|
val fa = buf.getDisplayCell(faPos)?.fa?.toInt()?.and(0xFF) ?: 0
|
||||||
if (faIsSelectable(fa) && !faIsZero(fa)) {
|
if (faIsSelectable(fa) && !faIsZero(fa)) {
|
||||||
onLightPenSelect?.invoke(clickAddr)
|
val size = buf.displayRows * buf.displayCols
|
||||||
isDetectable = true
|
val desPos = if (size > 0) (faPos + 1) % size else -1
|
||||||
|
val desCell = if (desPos >= 0) buf.getDisplayCell(desPos) else null
|
||||||
|
val desAscii = desCell?.ucs4 ?: 0.toChar()
|
||||||
|
val desEbcdic = desCell?.ec?.toInt()?.and(0xFF) ?: 0
|
||||||
|
|
||||||
|
val isToggleField = (desEbcdic == 0x6F || desAscii == '?' || desAscii == '\uFF1F' ||
|
||||||
|
desEbcdic == 0x6E || desAscii == '>' || desAscii == '\uFF1E')
|
||||||
|
val isEnterField = (desEbcdic == 0x50 || desAscii == '&' || desAscii == '\uFF06')
|
||||||
|
|
||||||
|
// Automatic tap selection applies only to toggle (?/>) and enter (&) fields.
|
||||||
|
// Standard text fields (space/null designators) must not trigger light-pen selection
|
||||||
|
// so normal cursor positioning and editing work as expected.
|
||||||
|
if (isToggleField || isEnterField) {
|
||||||
|
onLightPenSelect?.invoke(clickAddr)
|
||||||
|
isDetectable = true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user