Skip to content

Commit ed211fb

Browse files
committed
Intercept touch event to handle it before the cursor is moved
1 parent 806c3a4 commit ed211fb

File tree

2 files changed

+34
-3
lines changed

2 files changed

+34
-3
lines changed

aztec/src/main/kotlin/org/wordpress/aztec/AztecText.kt

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -703,7 +703,34 @@ open class AztecText : AppCompatEditText, TextWatcher, UnknownHtmlSpan.OnUnknown
703703
return containingBoxBounds
704704
}
705705

706+
private fun getTaskListHandler(): TaskListClickHandler? {
707+
return EnhancedMovementMethod.taskListClickHandler
708+
}
709+
706710
override fun onTouchEvent(event: MotionEvent): Boolean {
711+
var x = event.x.toInt()
712+
var y = event.y.toInt()
713+
714+
x -= totalPaddingLeft
715+
y -= totalPaddingTop
716+
717+
x += scrollX
718+
y += scrollY
719+
720+
// Check if we're in the task list area
721+
if (x + totalPaddingStart <= blockFormatter.listStyleLeadingMargin()) {
722+
val line = layout.getLineForVertical(y)
723+
val off = layout.getOffsetForHorizontal(line, x.toFloat())
724+
if (getTaskListHandler()?.handleTaskListClick(
725+
text,
726+
off,
727+
x,
728+
totalPaddingStart
729+
) == true) {
730+
return false
731+
}
732+
}
733+
707734
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P
708735
&& event.action == MotionEvent.ACTION_DOWN) {
709736
// we'll use these values in OnLongClickListener
@@ -1788,8 +1815,8 @@ open class AztecText : AppCompatEditText, TextWatcher, UnknownHtmlSpan.OnUnknown
17881815
}
17891816

17901817
private fun refreshTaskListSpan(taskList: AztecTaskListSpan) {
1791-
val selStart = selectionStart
1792-
val selEnd = selectionEnd
1818+
// val selStart = selectionStart
1819+
// val selEnd = selectionEnd
17931820
val spanStart = this.editableText.getSpanStart(taskList)
17941821
val spanEnd = this.editableText.getSpanEnd(taskList)
17951822
val flags = this.editableText.getSpanFlags(taskList)
@@ -1804,7 +1831,7 @@ open class AztecText : AppCompatEditText, TextWatcher, UnknownHtmlSpan.OnUnknown
18041831
refreshTaskListSpan(it)
18051832
}
18061833
this.editableText.setSpan(newSpan, spanStart, spanEnd, flags)
1807-
setSelection(selStart, selEnd)
1834+
//setSelection(selStart, selEnd)
18081835
}
18091836

18101837
private fun clearTaskListRefreshListeners() {

aztec/src/main/kotlin/org/wordpress/aztec/formatting/BlockFormatter.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,10 @@ class BlockFormatter(editor: AztecText,
8080
indentFormatter.outdent()
8181
}
8282

83+
fun listStyleLeadingMargin(): Int {
84+
return listStyle.leadingMargin()
85+
}
86+
8387
fun isIndentAvailable(): Boolean {
8488
if (listFormatter.isIndentAvailable()) return true
8589
return indentFormatter.isIndentAvailable()

0 commit comments

Comments
 (0)