From 8be192aa6140a86667d15b064c3aee91671e3b53 Mon Sep 17 00:00:00 2001 From: Floens Date: Tue, 26 Aug 2014 17:00:04 +0200 Subject: [PATCH] Remember cursor position, quote at cursor position --- .../org/floens/chan/core/manager/ReplyManager.java | 11 ++++++++--- .../main/java/org/floens/chan/core/model/Reply.java | 1 + .../org/floens/chan/ui/fragment/ReplyFragment.java | 6 +++--- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/Clover/app/src/main/java/org/floens/chan/core/manager/ReplyManager.java b/Clover/app/src/main/java/org/floens/chan/core/manager/ReplyManager.java index 0ba414b5..e3ce9ca3 100644 --- a/Clover/app/src/main/java/org/floens/chan/core/manager/ReplyManager.java +++ b/Clover/app/src/main/java/org/floens/chan/core/manager/ReplyManager.java @@ -105,15 +105,20 @@ public class ReplyManager { * @param no the raw no to quote to. */ public void quote(int no) { - draft.comment += ">>" + no + "\n"; + String textToInsert = ">>" + no + "\n"; + draft.comment = new StringBuilder(draft.comment).insert(draft.cursorPosition, textToInsert).toString(); + draft.cursorPosition += textToInsert.length(); } public void quoteInline(int no, String text) { - draft.comment += ">>" + no + "\n"; + String textToInsert = ">>" + no + "\n"; String[] lines = text.split("\n+"); for (String line : lines) { - draft.comment += ">" + line + "\n"; + textToInsert += ">" + line + "\n"; } + + draft.comment = new StringBuilder(draft.comment).insert(draft.cursorPosition, textToInsert).toString(); + draft.cursorPosition += textToInsert.length(); } /** diff --git a/Clover/app/src/main/java/org/floens/chan/core/model/Reply.java b/Clover/app/src/main/java/org/floens/chan/core/model/Reply.java index 8f91486c..e2781b56 100644 --- a/Clover/app/src/main/java/org/floens/chan/core/model/Reply.java +++ b/Clover/app/src/main/java/org/floens/chan/core/model/Reply.java @@ -37,4 +37,5 @@ public class Reply { public boolean usePass = false; public String passId = ""; public boolean spoilerImage = false; + public int cursorPosition; } diff --git a/Clover/app/src/main/java/org/floens/chan/ui/fragment/ReplyFragment.java b/Clover/app/src/main/java/org/floens/chan/ui/fragment/ReplyFragment.java index 78112e16..73532e89 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/fragment/ReplyFragment.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/fragment/ReplyFragment.java @@ -24,7 +24,6 @@ import android.content.DialogInterface; import android.graphics.Bitmap; import android.os.Bundle; import android.text.Editable; -import android.text.Selection; import android.text.TextUtils; import android.text.TextWatcher; import android.view.Gravity; @@ -174,8 +173,8 @@ public class ReplyFragment extends DialogFragment { emailView.setText(draft.email); subjectView.setText(draft.subject); commentView.setText(draft.comment); - // To the end of the comment - Selection.setSelection(commentView.getText(), commentView.getText().length()); + commentView.setSelection(draft.cursorPosition); + setFile(draft.fileName, draft.file); spoilerImageView.setChecked(draft.spoilerImage); @@ -234,6 +233,7 @@ public class ReplyFragment extends DialogFragment { draft.comment = commentView.getText().toString(); draft.fileName = fileNameView.getText().toString(); draft.spoilerImage = spoilerImageView.isChecked(); + draft.cursorPosition = commentView.getSelectionStart(); replyManager.setReplyDraft(draft); } else {