From 1000f017f51c467a898eff6574e65287638e74fd Mon Sep 17 00:00:00 2001 From: k1ngsterr1 Date: Thu, 15 Jan 2026 12:16:09 +0500 Subject: [PATCH] feat: Preserve keyboard height when closing to restore emoji height --- .../keyboard/KeyboardTransitionCoordinator.kt | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/app/rosette/android/ui/keyboard/KeyboardTransitionCoordinator.kt b/app/src/main/java/app/rosette/android/ui/keyboard/KeyboardTransitionCoordinator.kt index a0ff857..88c49d8 100644 --- a/app/src/main/java/app/rosette/android/ui/keyboard/KeyboardTransitionCoordinator.kt +++ b/app/src/main/java/app/rosette/android/ui/keyboard/KeyboardTransitionCoordinator.kt @@ -55,6 +55,9 @@ class KeyboardTransitionCoordinator { var keyboardHeight by mutableStateOf(0.dp) var emojiHeight by mutableStateOf(0.dp) + // 🔥 Сохраняем максимальную высоту клавиатуры для правильного восстановления emoji + private var maxKeyboardHeight by mutableStateOf(0.dp) + // ============ Флаги видимости ============ var isKeyboardVisible by mutableStateOf(false) @@ -262,17 +265,36 @@ class KeyboardTransitionCoordinator { fun updateKeyboardHeight(height: Dp) { Log.d(TAG, "════════════════════════════════════════════════════════") Log.d(TAG, "📏 updateKeyboardHeight called: $keyboardHeight → $height") - Log.d(TAG, " isKeyboardVisible=$isKeyboardVisible, emojiHeight=$emojiHeight") + Log.d(TAG, " isKeyboardVisible=$isKeyboardVisible, emojiHeight=$emojiHeight, maxHeight=$maxKeyboardHeight") if (height > 100.dp && height != keyboardHeight) { Log.d(TAG, "✅ Keyboard height updated: $keyboardHeight → $height") keyboardHeight = height + // 🔥 Сохраняем максимальную высоту + if (height > maxKeyboardHeight) { + Log.d(TAG, "📊 Updating max height: $maxKeyboardHeight → $height") + maxKeyboardHeight = height + } + // Если emoji высота не установлена, синхронизировать if (emojiHeight == 0.dp) { Log.d(TAG, "🔄 Syncing emoji height (was 0): $emojiHeight → $height") emojiHeight = height } + } else if (height == 0.dp && keyboardHeight != 0.dp) { + // 🔥 Клавиатура закрывается - восстанавливаем emojiHeight до МАКСИМАЛЬНОЙ высоты + Log.d(TAG, "⌨️ Keyboard closing, restoring emoji height to max") + Log.d(TAG, " Before: keyboardHeight=$keyboardHeight, emojiHeight=$emojiHeight, maxHeight=$maxKeyboardHeight") + + // Восстанавливаем emojiHeight до максимальной высоты + if (maxKeyboardHeight > 0.dp) { + emojiHeight = maxKeyboardHeight + Log.d(TAG, " After: emojiHeight restored to $maxKeyboardHeight") + } + + // Обнуляем keyboardHeight только после восстановления emoji + keyboardHeight = 0.dp } else { Log.d(TAG, "⏭️ No update needed (height too small or unchanged)") }