diff options
author | Christian Schneppe <christian@pix-art.de> | 2017-01-21 12:16:33 +0100 |
---|---|---|
committer | Christian Schneppe <christian@pix-art.de> | 2017-01-21 12:16:33 +0100 |
commit | b1911c7815d92c64f7a94bd69b77ca3c8be95d00 (patch) | |
tree | 98f176e86a2f1041254eefc1e3b767a2ba725e69 /src/main/java/de/pixart/messenger/ui | |
parent | 82bd7e17f10fad1979659db10dbf5b6b3a62abb1 (diff) |
modified highlight nick behaviour to better work with quotes
Diffstat (limited to '')
-rw-r--r-- | src/main/java/de/pixart/messenger/ui/ConversationFragment.java | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/src/main/java/de/pixart/messenger/ui/ConversationFragment.java b/src/main/java/de/pixart/messenger/ui/ConversationFragment.java index b40092b16..da1d7e77d 100644 --- a/src/main/java/de/pixart/messenger/ui/ConversationFragment.java +++ b/src/main/java/de/pixart/messenger/ui/ConversationFragment.java @@ -874,16 +874,22 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa } protected void highlightInConference(String nick) { - String oldString = mEditMessage.getText().toString().trim(); - if (oldString.isEmpty() || mEditMessage.getSelectionStart() == 0) { + final Editable editable = mEditMessage.getText(); + String oldString = editable.toString().trim(); + final int pos = mEditMessage.getSelectionStart(); + if (oldString.isEmpty() || pos == 0) { mEditMessage.getText().insert(0, nick + ": "); } else { - if (mEditMessage.getText().charAt( - mEditMessage.getSelectionStart() - 1) != ' ') { - nick = " " + nick; + final char before = editable.charAt(pos - 1); + final char after = editable.length() > pos ? editable.charAt(pos) : '\0'; + if (before == '\n') { + editable.insert(pos, nick + ": "); + } else { + editable.insert(pos, (Character.isWhitespace(before) ? "" : " ") + nick + (Character.isWhitespace(after) ? "" : " ")); + if (Character.isWhitespace(after)) { + mEditMessage.setSelection(mEditMessage.getSelectionStart() + 1); + } } - mEditMessage.getText().insert(mEditMessage.getSelectionStart(), - nick + " "); } } |