From 6bf66cae267ae33d2764e1382c9f9e3bdb8c9e48 Mon Sep 17 00:00:00 2001 From: k1ngsterr1 Date: Wed, 14 Jan 2026 04:08:23 +0500 Subject: [PATCH] feat: Apply imePadding to bottom bar for improved keyboard interaction --- .../com/rosetta/messenger/ui/chats/ChatDetailScreen.kt | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/rosetta/messenger/ui/chats/ChatDetailScreen.kt b/app/src/main/java/com/rosetta/messenger/ui/chats/ChatDetailScreen.kt index fd950ce..d8452d9 100644 --- a/app/src/main/java/com/rosetta/messenger/ui/chats/ChatDetailScreen.kt +++ b/app/src/main/java/com/rosetta/messenger/ui/chats/ChatDetailScreen.kt @@ -892,6 +892,8 @@ fun ChatDetailScreen( containerColor = backgroundColor, // Фон всего чата // 🔥 Bottom bar - инпут с imePadding автоматически поднимается над клавиатурой bottomBar = { + // 🔥 Весь bottomBar поднимается над клавиатурой + Column(modifier = Modifier.imePadding()) { // 🔥 FLOATING INPUT BAR - плавает поверх сообщений, поднимается с клавиатурой // Скрываем когда в режиме выбора AnimatedVisibility( @@ -1049,15 +1051,15 @@ fun ChatDetailScreen( } } } + } // Закрытие Column с imePadding } ) { paddingValues -> // 🔥 Column структура - список сжимается когда клавиатура открывается - // Emoji panel внутри MessageInputBar - НЕ нужен дополнительный отступ + // imePadding применён к bottomBar, поэтому контент автоматически сжимается Column( modifier = Modifier .fillMaxSize() - .padding(top = paddingValues.calculateTopPadding()) - // 🔥 imePadding убран - он в MessageInputBar, чтобы инпут поднимался над клавиатурой + .padding(paddingValues) // 🔥 Учитываем top и bottom padding от Scaffold .background(backgroundColor) ) { // Список сообщений - занимает всё доступное место @@ -2089,7 +2091,7 @@ private fun MessageInputBar( modifier = Modifier .fillMaxWidth() .graphicsLayer { clip = false } - .imePadding() // 🔥 Поднимаем инпут над клавиатурой + // imePadding уже применён к родительскому контейнеру ) { // Если пользователь заблокирован - показываем BlockedChatFooter (плоский как инпут) if (isBlocked) {