From 8b2661283c8af82bed431da79120fbacbde7709b Mon Sep 17 00:00:00 2001 From: Taras Smakula <tarassmakula@gmail.com> Date: Wed, 20 Dec 2023 15:45:32 +0200 Subject: [PATCH] Propagate click on text to parent --- .../java/org/futo/circles/view/PostLayout.kt | 23 +++++++++++++++---- .../org/futo/circles/view/ReadMoreTextView.kt | 16 ++++++++++++- 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/futo/circles/view/PostLayout.kt b/app/src/main/java/org/futo/circles/view/PostLayout.kt index 1976049f6..094f9ace2 100644 --- a/app/src/main/java/org/futo/circles/view/PostLayout.kt +++ b/app/src/main/java/org/futo/circles/view/PostLayout.kt @@ -62,8 +62,7 @@ class PostLayout( } override fun onSingleTapConfirmed(e: MotionEvent): Boolean { - if (binding.postFooter.areUserAbleToReply()) - post?.let { optionsListener?.onReply(it.postInfo.roomId, it.id) } + openReplies() return true } @@ -75,9 +74,18 @@ class PostLayout( } init { - binding.lvContent.setOnClickListener { - post?.let { - if (it.content.isMedia()) optionsListener?.onShowPreview(it.postInfo.roomId, it.id) + binding.lvContent.apply { + setOnClickListener { + post?.let { + if (it.content.isMedia()) optionsListener?.onShowPreview( + it.postInfo.roomId, + it.id + ) else openReplies() + } + } + setOnLongClickListener { + binding.postHeader.showMenu() + true } } binding.lCard.setOnTouchListener { _, event -> @@ -115,6 +123,11 @@ class PostLayout( binding.tvEditedLabel.setIsVisible(isEdited) } + private fun openReplies() { + if (binding.postFooter.areUserAbleToReply()) + post?.let { optionsListener?.onReply(it.postInfo.roomId, it.id) } + } + private fun setMentionBorder(content: PostContent) { val hasMention = when (content) { is MediaContent -> content.caption?.let { diff --git a/app/src/main/java/org/futo/circles/view/ReadMoreTextView.kt b/app/src/main/java/org/futo/circles/view/ReadMoreTextView.kt index a2d49f26e..4cf2ccc96 100644 --- a/app/src/main/java/org/futo/circles/view/ReadMoreTextView.kt +++ b/app/src/main/java/org/futo/circles/view/ReadMoreTextView.kt @@ -9,10 +9,14 @@ import android.text.TextPaint import android.text.TextUtils import android.text.style.TextAppearanceSpan import android.util.AttributeSet +import android.view.ViewGroup import androidx.appcompat.widget.AppCompatTextView import androidx.core.content.res.use import androidx.core.text.buildSpannedString +import androidx.core.text.getSpans import androidx.core.text.inSpans +import androidx.core.text.toSpannable +import io.noties.markwon.core.spans.LinkSpan import org.futo.circles.R import kotlin.text.Typography.ellipsis import kotlin.text.Typography.nbsp @@ -47,7 +51,17 @@ class ReadMoreTextView @JvmOverloads constructor( } if (hasOnClickListeners()) throw IllegalStateException("Custom onClickListener not supported") - super.setOnClickListener { toggle() } + super.setOnClickListener { + toggle() + if (collapseText == originalText && + originalText?.toSpannable() + ?.getSpans<LinkSpan>(0, originalText?.length ?: 0)?.size == 0 + ) (parent?.parent as? ViewGroup)?.performClick() + } + + super.setOnLongClickListener { + (parent?.parent as? ViewGroup)?.performLongClick() == true + } if (originalText != null) invalidateText() -- GitLab