From 1e8bdb489fe4dd11600595f081a0d72b3e16b441 Mon Sep 17 00:00:00 2001 From: kunfei Date: Tue, 25 Feb 2020 15:01:09 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/ui/book/read/page/ContentTextView.kt | 71 +++++++++++++------ 1 file changed, 51 insertions(+), 20 deletions(-) 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 6b4c329e1..282e5578b 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 @@ -471,26 +471,57 @@ class ContentTextView(context: Context, attrs: AttributeSet?) : View(context, at val selectedText: String get() { val stringBuilder = StringBuilder() - for (lineIndex in selectLineStart..selectLineEnd) { - if (lineIndex == selectLineStart && lineIndex == selectLineEnd) { - stringBuilder.append( - textPage.textLines[lineIndex].text.substring( - selectCharStart, - selectCharEnd + 1 - ) - ) - } else if (lineIndex == selectLineStart) { - stringBuilder.append( - textPage.textLines[lineIndex].text.substring( - selectCharStart - ) - ) - } else if (lineIndex == selectLineEnd) { - stringBuilder.append( - textPage.textLines[lineIndex].text.substring(0, selectCharEnd + 1) - ) - } else { - stringBuilder.append(textPage.textLines[lineIndex].text) + for (relativePos in selectPageStart..selectPageEnd) { + val textPage = relativePage(relativePos) + if (relativePos == selectPageStart && relativePos == selectPageEnd) { + for (lineIndex in selectLineStart..selectLineEnd) { + if (lineIndex == selectLineStart && lineIndex == selectLineEnd) { + stringBuilder.append( + textPage.textLines[lineIndex].text.substring( + selectCharStart, + selectCharEnd + 1 + ) + ) + } else if (lineIndex == selectLineStart) { + stringBuilder.append( + textPage.textLines[lineIndex].text.substring( + selectCharStart + ) + ) + } else if (lineIndex == selectLineEnd) { + stringBuilder.append( + textPage.textLines[lineIndex].text.substring(0, selectCharEnd + 1) + ) + } else { + stringBuilder.append(textPage.textLines[lineIndex].text) + } + } + } else if (relativePos == selectPageStart) { + for (lineIndex in selectLineStart until relativePage(relativePos).textLines.size) { + if (lineIndex == selectLineStart) { + stringBuilder.append( + textPage.textLines[lineIndex].text.substring( + selectCharStart + ) + ) + } else { + stringBuilder.append(textPage.textLines[lineIndex].text) + } + } + } else if (relativePos == selectPageEnd) { + for (lineIndex in 0..selectLineEnd) { + if (lineIndex == selectLineEnd) { + stringBuilder.append( + textPage.textLines[lineIndex].text.substring(0, selectCharEnd + 1) + ) + } else { + stringBuilder.append(textPage.textLines[lineIndex].text) + } + } + } else if (relativePos in selectPageStart + 1 until selectPageEnd) { + for (lineIndex in selectLineStart..selectLineEnd) { + stringBuilder.append(textPage.textLines[lineIndex].text) + } } } return stringBuilder.toString()