From bcc11b9fbc52e4161786ba8c45f7fa36e6e8f2b1 Mon Sep 17 00:00:00 2001 From: Sagar <85388413+Sagar0-0@users.noreply.github.com> Date: Tue, 25 Mar 2025 19:08:25 +0530 Subject: [PATCH] Fix emoji picker weird scrolling in RTL. --- .../reply/composer/StoryReplyComposer.kt | 34 ++++++++++--------- ...tories_reply_to_story_composer_content.xml | 18 ++++++---- app/src/main/res/values/strings.xml | 2 ++ 3 files changed, 32 insertions(+), 22 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/composer/StoryReplyComposer.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/composer/StoryReplyComposer.kt index e75f56b7ee..5be0d6644a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/composer/StoryReplyComposer.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/composer/StoryReplyComposer.kt @@ -34,6 +34,7 @@ import org.thoughtcrime.securesms.keyboard.emoji.toMappingModels import org.thoughtcrime.securesms.keyvalue.SignalStore import org.thoughtcrime.securesms.reactions.any.ReactWithAnyEmojiBottomSheetDialogFragment import org.thoughtcrime.securesms.recipients.Recipient +import org.thoughtcrime.securesms.util.ViewUtil import org.thoughtcrime.securesms.util.adapter.mapping.MappingModel class StoryReplyComposer @JvmOverloads constructor( @@ -47,7 +48,6 @@ class StoryReplyComposer @JvmOverloads constructor( private val emojiDrawer: MediaKeyboard private val reactionEmojiView: EmojiPageView private val anyReactionView: View - private val emojiBar: View private val bubbleView: ViewGroup val input: ComposeText @@ -70,7 +70,6 @@ class StoryReplyComposer @JvmOverloads constructor( emojiDrawer = findViewById(R.id.emoji_drawer) anyReactionView = findViewById(R.id.any_reaction) reactionEmojiView = findViewById(R.id.reaction_emoji_view) - emojiBar = findViewById(R.id.emoji_bar) bubbleView = findViewById(R.id.bubble) val reply: View = findViewById(R.id.reply) @@ -213,19 +212,13 @@ class StoryReplyComposer @JvmOverloads constructor( val numItems = reactionEmojiView.adapter?.itemCount ?: 0 decoration.firstItemOffset = anyReactionView.marginEnd - - if (numItems > maxNumItems) { - decoration.horizontalSpacing = 0 - reactionEmojiView.invalidateItemDecorations() + decoration.horizontalSpacing = if (numItems > maxNumItems) { + 0 } else { - decoration.horizontalSpacing = (availableWidth - (numItems * emojiItemWidth)) / numItems - reactionEmojiView.invalidateItemDecorations() + (availableWidth - (numItems * emojiItemWidth)) / numItems } - } - override fun onLayout(changed: Boolean, left: Int, top: Int, right: Int, bottom: Int) { - super.onLayout(changed, left, top, right, bottom) - updateEmojiSpacing() + reactionEmojiView.invalidateItemDecorations() } interface Callback { @@ -243,11 +236,20 @@ class StoryReplyComposer @JvmOverloads constructor( override fun getItemOffsets(outRect: Rect, view: View, parent: RecyclerView, state: RecyclerView.State) { super.getItemOffsets(outRect, view, parent, state) - outRect.right = horizontalSpacing - if (parent.getChildAdapterPosition(view) == 0) { - outRect.left = firstItemOffset + if (ViewUtil.isRtl(view)) { + outRect.left = horizontalSpacing + if (parent.getChildAdapterPosition(view) == 0) { + outRect.right = firstItemOffset + } else { + outRect.right = 0 + } } else { - outRect.left = 0 + outRect.right = horizontalSpacing + if (parent.getChildAdapterPosition(view) == 0) { + outRect.left = firstItemOffset + } else { + outRect.left = 0 + } } } } diff --git a/app/src/main/res/layout/stories_reply_to_story_composer_content.xml b/app/src/main/res/layout/stories_reply_to_story_composer_content.xml index ebe67dd6a1..ed5a2da37f 100644 --- a/app/src/main/res/layout/stories_reply_to_story_composer_content.xml +++ b/app/src/main/res/layout/stories_reply_to_story_composer_content.xml @@ -8,12 +8,11 @@ android:background="@color/signal_colorSurface" android:paddingTop="10dp"> - + app:layout_constraintTop_toTopOf="parent"> + android:layout_height="wrap_content" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toStartOf="@id/any_reaction" /> + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent"/> - + Send failed. Tap to retry Reply to group + + More reactions No views yet