diff --git a/xtooltip/src/main/java/it/sephiroth/android/library/xtooltip/Tooltip.kt b/xtooltip/src/main/java/it/sephiroth/android/library/xtooltip/Tooltip.kt index 5d9eeb5e..3e39b7cc 100644 --- a/xtooltip/src/main/java/it/sephiroth/android/library/xtooltip/Tooltip.kt +++ b/xtooltip/src/main/java/it/sephiroth/android/library/xtooltip/Tooltip.kt @@ -203,6 +203,7 @@ class Tooltip private constructor(private val context: Context, builder: Builder private var mPrepareFun: ((tooltip: Tooltip) -> Unit)? = null private var mShownFunc: ((tooltip: Tooltip) -> Unit)? = null private var mHiddenFunc: ((tooltip: Tooltip) -> Unit)? = null + private var mClickFunc: ((tooltip: Tooltip) -> Unit)? = null @Suppress("UNUSED") fun doOnFailure(func: ((tooltip: Tooltip) -> Unit)?): Tooltip { @@ -228,6 +229,12 @@ class Tooltip private constructor(private val context: Context, builder: Builder return this } + @Suppress("UNUSED") + fun doOnClick(func: ((tooltip: Tooltip) -> Unit)?): Tooltip { + mClickFunc = func + return this + } + fun update(text: CharSequence?) { mText = text if (isShowing && null != mPopupView) { @@ -761,12 +768,17 @@ class Tooltip private constructor(private val context: Context, builder: Builder mTextView.getGlobalVisibleRect(r1) val containsTouch = r1.contains(event.x.toInt(), event.y.toInt()) - if (mClosePolicy.anywhere()) { - hide() - } else if (mClosePolicy.inside() && containsTouch) { - hide() - } else if (mClosePolicy.outside() && !containsTouch) { - hide() + when { + mClosePolicy.inside() && containsTouch -> { + hide() + mClickFunc?.invoke(this@Tooltip) + } + mClosePolicy.outside() && !containsTouch -> { + hide() + } + mClosePolicy.anywhere() -> { + hide() + } } return mClosePolicy.consume()