diff --git a/app/src/main/java/com/rosetta/messenger/ui/chats/GroupSetupScreen.kt b/app/src/main/java/com/rosetta/messenger/ui/chats/GroupSetupScreen.kt index a9db9bd..02fc3fd 100644 --- a/app/src/main/java/com/rosetta/messenger/ui/chats/GroupSetupScreen.kt +++ b/app/src/main/java/com/rosetta/messenger/ui/chats/GroupSetupScreen.kt @@ -741,21 +741,14 @@ fun GroupSetupScreen( contentColor = Color.White, shape = CircleShape, modifier = run { - var lastStableFabBottom by remember { mutableStateOf(18.dp) } - val rawBottom = if (imeBottomDp > 0.dp) { - imeBottomDp + 14.dp - } else if (coordinator.isEmojiBoxVisible && coordinator.emojiHeight > 0.dp) { - coordinator.emojiHeight + 14.dp - } else { - 18.dp - } - // During keyboard switch, keep FAB at last stable position - if (!coordinator.isTransitioning) { - lastStableFabBottom = rawBottom - } + // Берём максимум из всех позиций — при переключении keyboard↔emoji + // одна уходит вниз, другая уже на месте, FAB не прыгает. + val keyboardBottom = if (imeBottomDp > 0.dp) imeBottomDp + 14.dp else 0.dp + val emojiBottom = if (coordinator.isEmojiBoxVisible && coordinator.emojiHeight > 0.dp) coordinator.emojiHeight + 14.dp else 0.dp + val fabBottom = maxOf(keyboardBottom, emojiBottom, 18.dp) Modifier .align(Alignment.BottomEnd) - .padding(end = 16.dp, bottom = lastStableFabBottom) + .padding(end = 16.dp, bottom = fabBottom) .size(58.dp) } ) {