From 17332993933bcae78184674f951e9cb81e730f54 Mon Sep 17 00:00:00 2001 From: M66B Date: Tue, 11 May 2021 17:39:36 +0200 Subject: [PATCH] Save compose selection --- .../java/eu/faircode/email/FragmentCompose.java | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentCompose.java b/app/src/main/java/eu/faircode/email/FragmentCompose.java index f2d3b2808b..f0bbd04fb3 100644 --- a/app/src/main/java/eu/faircode/email/FragmentCompose.java +++ b/app/src/main/java/eu/faircode/email/FragmentCompose.java @@ -3388,6 +3388,10 @@ public class FragmentCompose extends FragmentBase { args.putBoolean("formatted", formatted); args.putBoolean("interactive", getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.RESUMED)); args.putInt("focus", focus == null ? -1 : focus.getId()); + if (focus instanceof EditText) { + args.putInt("start", ((EditText) focus).getSelectionStart()); + args.putInt("end", ((EditText) focus).getSelectionEnd()); + } args.putBoolean("ime", ime); args.putBundle("extras", extras); @@ -5276,7 +5280,11 @@ public class FragmentCompose extends FragmentBase { showDraft(draft); } else if (action == R.id.action_save) { - setFocus(args.getInt("focus"), args.getBoolean("ime") && false); + setFocus( + args.getInt("focus"), + args.getInt("start", -1), + args.getInt("end", -1), + args.getBoolean("ime")); } else if (action == R.id.action_check) { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext()); @@ -5583,7 +5591,7 @@ public class FragmentCompose extends FragmentBase { return; state = State.LOADED; - setFocus(null, true); + setFocus(null, -1, -1, true); } @Override @@ -5593,7 +5601,7 @@ public class FragmentCompose extends FragmentBase { }.execute(this, args, "compose:show"); } - private void setFocus(Integer v, boolean restore) { + private void setFocus(Integer v, int start, int end, boolean restore) { final View target; if (v != null) target = view.findViewById(v); @@ -5611,6 +5619,9 @@ public class FragmentCompose extends FragmentBase { @Override public void run() { try { + if (target instanceof EditText && start >= 0) + ((EditText) target).setSelection(start, end < 0 ? start : end); + target.requestFocus(); Context context = target.getContext();