Horis 1 سال پیش
والد
کامیت
bc42955f0e
1فایلهای تغییر یافته به همراه20 افزوده شده و 10 حذف شده
  1. 20 10
      app/src/main/java/io/legado/app/ui/book/read/page/ContentTextView.kt

+ 20 - 10
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.book.read.page.provider.TextPageFactory
 import io.legado.app.ui.widget.dialog.PhotoDialog
 import io.legado.app.ui.widget.dialog.PhotoDialog
 import io.legado.app.utils.activity
 import io.legado.app.utils.activity
+import io.legado.app.utils.dpToPx
 import io.legado.app.utils.getCompatColor
 import io.legado.app.utils.getCompatColor
 import io.legado.app.utils.showDialogFragment
 import io.legado.app.utils.showDialogFragment
 import io.legado.app.utils.toastOnUi
 import io.legado.app.utils.toastOnUi
@@ -279,11 +280,15 @@ class ContentTextView(context: Context, attrs: AttributeSet?) : View(context, at
             if (textPos.compare(selectEnd) <= 0) {
             if (textPos.compare(selectEnd) <= 0) {
                 selectStartMoveIndex(textPos)
                 selectStartMoveIndex(textPos)
             } else {
             } 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) {
             if (textPos.compare(selectStart) >= 0) {
                 selectEndMoveIndex(textPos)
                 selectEndMoveIndex(textPos)
             } else {
             } 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")
                 Thread(it, "TextPageRender")
             }
             }
         }
         }
+        private val cursorWidth = 24.dpToPx()
     }
     }
 
 
     interface CallBack {
     interface CallBack {