From 1741070686d83745762bf285455aac985f10fca1 Mon Sep 17 00:00:00 2001 From: Nikola Trubitsyn Date: Thu, 15 Jun 2017 18:16:01 +0300 Subject: [PATCH] Avoid crash when clicking with text selected and links enabled --- .../notes/activities/MainActivity.kt | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/app/src/main/kotlin/com/simplemobiletools/notes/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/notes/activities/MainActivity.kt index 787bcc7a..13847d2e 100644 --- a/app/src/main/kotlin/com/simplemobiletools/notes/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/notes/activities/MainActivity.kt @@ -6,6 +6,8 @@ import android.content.pm.PackageManager import android.os.Bundle import android.support.v4.app.ActivityCompat import android.support.v4.view.ViewPager +import android.text.method.ArrowKeyMovementMethod +import android.text.method.LinkMovementMethod import android.util.TypedValue import android.view.* import com.simplemobiletools.commons.dialogs.FilePickerDialog @@ -14,6 +16,7 @@ import com.simplemobiletools.commons.helpers.LICENSE_KOTLIN import com.simplemobiletools.commons.helpers.LICENSE_RTL import com.simplemobiletools.commons.helpers.LICENSE_STETHO import com.simplemobiletools.commons.models.Release +import com.simplemobiletools.commons.views.MyEditText import com.simplemobiletools.notes.BuildConfig import com.simplemobiletools.notes.R import com.simplemobiletools.notes.adapters.NotesPagerAdapter @@ -25,6 +28,7 @@ import com.simplemobiletools.notes.helpers.OPEN_NOTE_ID import com.simplemobiletools.notes.helpers.TYPE_NOTE import com.simplemobiletools.notes.models.Note import kotlinx.android.synthetic.main.activity_main.* +import kotlinx.android.synthetic.main.fragment_note.* import java.io.File import java.nio.charset.Charset @@ -36,6 +40,7 @@ class MainActivity : SimpleActivity(), ViewPager.OnPageChangeListener { lateinit var mAdapter: NotesPagerAdapter lateinit var mDb: DBHelper lateinit var mNotes: List + var noteViewWithTextSelected: MyEditText? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -114,6 +119,28 @@ class MainActivity : SimpleActivity(), ViewPager.OnPageChangeListener { return true } + // https://code.google.com/p/android/issues/detail?id=191430 quickfix + override fun onActionModeStarted(mode: ActionMode?) { + super.onActionModeStarted(mode) + with(currentNotesView()) { + if (config.clickableLinks || movementMethod == LinkMovementMethod.getInstance()) { + movementMethod = ArrowKeyMovementMethod.getInstance() + noteViewWithTextSelected = this + } + } + } + + override fun onActionModeFinished(mode: ActionMode?) { + super.onActionModeFinished(mode) + if (config.clickableLinks) { + noteViewWithTextSelected?.let { + it.movementMethod = LinkMovementMethod.getInstance() + } + } + } + + private fun currentNotesView() = mAdapter.getItem(view_pager.currentItem).notes_view + private fun displayRenameDialog() { RenameNoteDialog(this, mDb, mCurrentNote) { mCurrentNote = it