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 926b61c..d01788a 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 @@ -299,9 +299,12 @@ fun ChatDetailScreen( } } - // 🔥 Закрытие экрана + // 🔥 Закрытие экрана - мгновенно прячем клавиатуру через InputMethodManager val hideKeyboardAndBack: () -> Unit = { - keyboardController?.hide() + // Используем нативный InputMethodManager для МГНОВЕННОГО закрытия + val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager + imm.hideSoftInputFromWindow(view.windowToken, 0) + focusManager.clearFocus() onBack() } diff --git a/app/src/main/java/com/rosetta/messenger/ui/chats/SearchScreen.kt b/app/src/main/java/com/rosetta/messenger/ui/chats/SearchScreen.kt index b159158..1dce4ae 100644 --- a/app/src/main/java/com/rosetta/messenger/ui/chats/SearchScreen.kt +++ b/app/src/main/java/com/rosetta/messenger/ui/chats/SearchScreen.kt @@ -18,6 +18,11 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.graphics.Color +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.platform.LocalFocusManager +import androidx.compose.ui.platform.LocalView +import android.content.Context +import android.view.inputmethod.InputMethodManager import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp @@ -45,6 +50,18 @@ fun SearchScreen( onBackClick: () -> Unit, onUserSelect: (SearchUser) -> Unit ) { + // Context и View для мгновенного закрытия клавиатуры + val context = LocalContext.current + val view = LocalView.current + val focusManager = LocalFocusManager.current + + // 🔥 Функция мгновенного закрытия клавиатуры + val hideKeyboardInstantly: () -> Unit = { + val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager + imm.hideSoftInputFromWindow(view.windowToken, 0) + focusManager.clearFocus() + } + // Цвета ТОЧНО как в ChatsListScreen val backgroundColor = if (isDarkTheme) Color(0xFF1A1A1A) else Color(0xFFFFFFFF) val textColor = if (isDarkTheme) Color.White else Color(0xFF1a1a1a) @@ -101,8 +118,11 @@ fun SearchScreen( .padding(horizontal = 4.dp), verticalAlignment = Alignment.CenterVertically ) { - // Кнопка назад - IconButton(onClick = onBackClick) { + // Кнопка назад - с мгновенным закрытием клавиатуры + IconButton(onClick = { + hideKeyboardInstantly() + onBackClick() + }) { Icon( Icons.Default.ArrowBack, contentDescription = "Back", @@ -221,6 +241,7 @@ fun SearchScreen( textColor = textColor, secondaryTextColor = secondaryTextColor, onClick = { + hideKeyboardInstantly() RecentSearchesManager.addUser(user) onUserSelect(user) }, @@ -239,6 +260,8 @@ fun SearchScreen( isDarkTheme = isDarkTheme, preloadedComposition = searchLottieComposition, onUserClick = { user -> + // Мгновенно закрываем клавиатуру + hideKeyboardInstantly() // Сохраняем пользователя в историю RecentSearchesManager.addUser(user) onUserSelect(user)