This commit is contained in:
@@ -221,11 +221,26 @@ fun TerminalView(
|
||||
if (faPos >= 0) {
|
||||
val fa = buf.getDisplayCell(faPos)?.fa?.toInt()?.and(0xFF) ?: 0
|
||||
if (faIsSelectable(fa) && !faIsZero(fa)) {
|
||||
val size = buf.displayRows * buf.displayCols
|
||||
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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 3. Normal tap cursor positioning
|
||||
if (!isDetectable) {
|
||||
|
||||
Reference in New Issue
Block a user