Skip to content

Commit 9b07393

Browse files
committed
Add setOnFocusOrClickListener to EditTextWithMarkup
1 parent cf65aad commit 9b07393

1 file changed

Lines changed: 25 additions & 1 deletion

File tree

app/src/main/java/com/orgzly/android/ui/views/EditTextWithMarkup.kt

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,11 @@ package com.orgzly.android.ui.views
22

33
import android.content.Context
44
import android.util.AttributeSet
5+
import android.view.GestureDetector
56
import android.view.KeyEvent
7+
import android.view.MotionEvent
68
import androidx.appcompat.widget.AppCompatEditText
9+
import androidx.core.view.GestureDetectorCompat
710
import com.orgzly.BuildConfig
811
import com.orgzly.android.util.LogUtils
912

@@ -13,11 +16,16 @@ class EditTextWithMarkup : AppCompatEditText {
1316

1417
private val listeners: Listeners by lazy { Listeners(null) }
1518

19+
private var onFocusOrClickListener: OnClickListener? = null
20+
21+
fun setOnFocusOrClickListener(l: OnClickListener?) {
22+
onFocusOrClickListener = l
23+
}
24+
1625
fun setOnImeBackListener(listener: (() -> Unit)?) {
1726
listeners.onImeBack = listener
1827
}
1928

20-
2129
constructor(context: Context) : super(context) {
2230
addTextChangedListener(EditTextWatcher())
2331
}
@@ -41,6 +49,22 @@ class EditTextWithMarkup : AppCompatEditText {
4149
return super.onKeyPreIme(keyCode, event)
4250
}
4351

52+
private val gestureDetector = GestureDetectorCompat(context, object : GestureDetector.SimpleOnGestureListener() {
53+
override fun onSingleTapUp(e: MotionEvent?): Boolean {
54+
return true
55+
}
56+
})
57+
58+
override fun onTouchEvent(event: MotionEvent): Boolean {
59+
val isSingleTapUp = gestureDetector.onTouchEvent(event)
60+
61+
if (isSingleTapUp) {
62+
onFocusOrClickListener?.onClick(this)
63+
}
64+
65+
return super.onTouchEvent(event)
66+
}
67+
4468
companion object {
4569
val TAG = EditTextWithMarkup::class.java.name
4670
}

0 commit comments

Comments
 (0)