diff --git a/app/src/main/java/io/legado/app/ui/book/read/page/ContentTextView.kt b/app/src/main/java/io/legado/app/ui/book/read/page/ContentTextView.kt index 7b37be544..782babcf3 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/page/ContentTextView.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/page/ContentTextView.kt @@ -23,6 +23,7 @@ import io.legado.app.ui.book.read.page.provider.ChapterProvider import io.legado.app.ui.book.read.page.provider.TextPageFactory import io.legado.app.ui.widget.dialog.PhotoDialog import io.legado.app.utils.activity +import io.legado.app.utils.dpToPx import io.legado.app.utils.getCompatColor import io.legado.app.utils.showDialogFragment import io.legado.app.utils.toastOnUi @@ -279,11 +280,15 @@ class ContentTextView(context: Context, attrs: AttributeSet?) : View(context, at if (textPos.compare(selectEnd) <= 0) { selectStartMoveIndex(textPos) } else { - reverseStartCursor = true - reverseEndCursor = false - selectEnd.columnIndex++ - selectStartMoveIndex(selectEnd) - selectEndMoveIndex(textPos) + touchRough(x - 2 * cursorWidth, y) { _, textPos, _, _, _ -> + if (textPos.compare(selectEnd) > 0) { + reverseStartCursor = true + reverseEndCursor = false + selectEnd.columnIndex++ + selectStartMoveIndex(selectEnd) + selectEndMoveIndex(textPos) + } + } } } } @@ -299,11 +304,15 @@ class ContentTextView(context: Context, attrs: AttributeSet?) : View(context, at if (textPos.compare(selectStart) >= 0) { selectEndMoveIndex(textPos) } else { - reverseEndCursor = true - reverseStartCursor = false - selectStart.columnIndex-- - selectEndMoveIndex(selectStart) - selectStartMoveIndex(textPos) + touchRough(x + 2 * cursorWidth, y) { _, textPos, _, _, _ -> + if (textPos.compare(selectStart) < 0) { + reverseEndCursor = true + reverseStartCursor = false + selectStart.columnIndex-- + selectEndMoveIndex(selectStart) + selectStartMoveIndex(textPos) + } + } } } } @@ -690,6 +699,7 @@ class ContentTextView(context: Context, attrs: AttributeSet?) : View(context, at Thread(it, "TextPageRender") } } + private val cursorWidth = 24.dpToPx() } interface CallBack {