Rich Text Editor: fix several inset issues in room screen (#7681)

This commit is contained in:
Jorge Martin Espinosa 2022-12-01 11:26:55 +01:00 committed by GitHub
parent c8a73a6ac8
commit 0c11778d33
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 20 additions and 10 deletions

3
changelog.d/7680.bugfix Normal file
View file

@ -0,0 +1,3 @@
Rich Text Editor: fix several issues related to insets:
* Empty space displayed at the bottom when you don't have permissions to send messages into a room.
* Wrong insets being kept when you exit the room screen and the keyboard is displayed, then come back to it.

View file

@ -608,26 +608,33 @@ class ExpandingBottomSheetBehavior<V : View> : CoordinatorLayout.Behavior<V> {
initialPaddingBottom = view.paddingBottom initialPaddingBottom = view.paddingBottom
// This should only be used to set initial insets and other edge cases where the insets can't be applied using an animation. // This should only be used to set initial insets and other edge cases where the insets can't be applied using an animation.
var applyInsetsFromAnimation = false var isAnimating = false
// This will animated inset changes, making them look a lot better. However, it won't update initial insets. // This will animate inset changes, making them look a lot better. However, it won't update initial insets.
ViewCompat.setWindowInsetsAnimationCallback(view, object : WindowInsetsAnimationCompat.Callback(DISPATCH_MODE_STOP) { ViewCompat.setWindowInsetsAnimationCallback(view, object : WindowInsetsAnimationCompat.Callback(DISPATCH_MODE_STOP) {
override fun onPrepare(animation: WindowInsetsAnimationCompat) {
isAnimating = true
}
override fun onProgress(insets: WindowInsetsCompat, runningAnimations: MutableList<WindowInsetsAnimationCompat>): WindowInsetsCompat { override fun onProgress(insets: WindowInsetsCompat, runningAnimations: MutableList<WindowInsetsAnimationCompat>): WindowInsetsCompat {
return applyInsets(view, insets) return if (isAnimating) {
applyInsets(view, insets)
} else {
insets
}
} }
override fun onEnd(animation: WindowInsetsAnimationCompat) { override fun onEnd(animation: WindowInsetsAnimationCompat) {
applyInsetsFromAnimation = false isAnimating = false
view.requestApplyInsets() view.requestApplyInsets()
} }
}) })
ViewCompat.setOnApplyWindowInsetsListener(view) { _: View, insets: WindowInsetsCompat -> ViewCompat.setOnApplyWindowInsetsListener(view) { _: View, insets: WindowInsetsCompat ->
if (!applyInsetsFromAnimation) { if (isAnimating) {
applyInsetsFromAnimation = true
applyInsets(view, insets)
} else {
insets insets
} else {
applyInsets(view, insets)
} }
} }

View file

@ -255,7 +255,7 @@ class MessageComposerFragment : VectorBaseFragment<FragmentComposerBinding>(), A
) { mainState, messageComposerState, attachmentState -> ) { mainState, messageComposerState, attachmentState ->
if (mainState.tombstoneEvent != null) return@withState if (mainState.tombstoneEvent != null) return@withState
(composer as? View)?.isInvisible = !messageComposerState.isComposerVisible (composer as? View)?.isVisible = messageComposerState.isComposerVisible
composer.sendButton.isInvisible = !messageComposerState.isSendButtonVisible composer.sendButton.isInvisible = !messageComposerState.isSendButtonVisible
(composer as? RichTextComposerLayout)?.isTextFormattingEnabled = attachmentState.isTextFormattingEnabled (composer as? RichTextComposerLayout)?.isTextFormattingEnabled = attachmentState.isTextFormattingEnabled
} }

View file

@ -75,7 +75,7 @@
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="0dp" android:layout_height="0dp"
android:overScrollMode="always" android:overScrollMode="always"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toTopOf="@id/notificationAreaView"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/removeJitsiWidgetView" app:layout_constraintTop_toBottomOf="@id/removeJitsiWidgetView"