From 042ab9573846d803713fbbf8687dd9a229b07890 Mon Sep 17 00:00:00 2001 From: Sagar <85388413+Sagar0-0@users.noreply.github.com> Date: Wed, 2 Apr 2025 00:46:15 +0530 Subject: [PATCH] Fix EmojiView scroll in bottomsheet. --- .../components/emoji/EmojiPageView.java | 6 +++++ .../reply/group/StoryGroupReplyFragment.kt | 22 +------------------ .../layout/stories_group_replies_fragment.xml | 2 ++ 3 files changed, 9 insertions(+), 21 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiPageView.java b/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiPageView.java index edeb1f8329..b0cf354450 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiPageView.java +++ b/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiPageView.java @@ -112,6 +112,12 @@ public class EmojiPageView extends RecyclerView implements VariationSelectorList addItemDecoration(new EmojiItemDecoration(allowVariations, drawable)); } + @Override + public boolean dispatchTouchEvent(MotionEvent ev) { + getParent().requestDisallowInterceptTouchEvent(true); + return super.dispatchTouchEvent(ev); + } + public void presentForEmojiKeyboard() { setPadding(getPaddingLeft(), getPaddingTop(), diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/group/StoryGroupReplyFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/group/StoryGroupReplyFragment.kt index 6c2eb3a8cd..0e9ddfe782 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/group/StoryGroupReplyFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/group/StoryGroupReplyFragment.kt @@ -3,7 +3,6 @@ package org.thoughtcrime.securesms.stories.viewer.reply.group import android.content.ClipData import android.os.Bundle import android.view.KeyEvent -import android.view.MotionEvent import android.view.View import android.view.ViewGroup import android.widget.Toast @@ -15,8 +14,6 @@ import androidx.lifecycle.lifecycleScope import androidx.lifecycle.repeatOnLifecycle import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView -import com.google.android.material.bottomsheet.BottomSheetBehaviorHack -import com.google.android.material.bottomsheet.BottomSheetDialog import com.google.android.material.dialog.MaterialAlertDialogBuilder import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import io.reactivex.rxjava3.kotlin.subscribeBy @@ -26,7 +23,6 @@ import org.signal.core.util.concurrent.SignalExecutors import org.signal.core.util.getParcelableCompat import org.signal.core.util.logging.Log import org.thoughtcrime.securesms.R -import org.thoughtcrime.securesms.components.FixedRoundedCornerBottomSheetDialogFragment import org.thoughtcrime.securesms.components.emoji.MediaKeyboard import org.thoughtcrime.securesms.components.mention.MentionAnnotation import org.thoughtcrime.securesms.components.settings.DSLConfiguration @@ -120,18 +116,6 @@ class StoryGroupReplyFragment : ownerProducer = { requireActivity() } ) - private val recyclerListener: RecyclerView.OnItemTouchListener = object : RecyclerView.SimpleOnItemTouchListener() { - override fun onInterceptTouchEvent(view: RecyclerView, e: MotionEvent): Boolean { - recyclerView.isNestedScrollingEnabled = view == recyclerView - composer.emojiPageView?.isNestedScrollingEnabled = view == composer.emojiPageView - - val dialog = (parentFragment as FixedRoundedCornerBottomSheetDialogFragment).dialog as BottomSheetDialog - BottomSheetBehaviorHack.setNestedScrollingChild(dialog.behavior, view) - dialog.findViewById(com.google.android.material.R.id.design_bottom_sheet)?.invalidate() - return false - } - } - private val colorizer = Colorizer() private val lifecycleDisposable = LifecycleDisposable() @@ -414,13 +398,9 @@ class StoryGroupReplyFragment : override fun onShowEmojiKeyboard() { requireListener().requestFullScreen(true) - recyclerView.addOnItemTouchListener(recyclerListener) - composer.emojiPageView?.addOnItemTouchListener(recyclerListener) } override fun onHideEmojiKeyboard() { - recyclerView.removeOnItemTouchListener(recyclerListener) - composer.emojiPageView?.removeOnItemTouchListener(recyclerListener) requireListener().requestFullScreen(false) } @@ -443,7 +423,7 @@ class StoryGroupReplyFragment : if (savedInstanceState == null) { lifecycleDisposable += isActiveGroup.firstOrError().observeOn(AndroidSchedulers.mainThread()).subscribe { active -> if (active) { - ViewUtil.focusAndShowKeyboard(composer) + ViewUtil.focusAndShowKeyboard(composer.input) } } } diff --git a/app/src/main/res/layout/stories_group_replies_fragment.xml b/app/src/main/res/layout/stories_group_replies_fragment.xml index b268f97261..1a476f7350 100644 --- a/app/src/main/res/layout/stories_group_replies_fragment.xml +++ b/app/src/main/res/layout/stories_group_replies_fragment.xml @@ -30,6 +30,8 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0" + android:overScrollMode="never" + android:nestedScrollingEnabled="true" tools:itemCount="0" />