From 20c6696fdff7367f042659c1779fdad7910f8613 Mon Sep 17 00:00:00 2001 From: k1ngsterr1 Date: Sat, 28 Mar 2026 13:01:19 +0500 Subject: [PATCH] =?UTF-8?q?=D0=97=D0=B0=D0=BA=D1=80=D1=8B=D1=82=D0=B8?= =?UTF-8?q?=D0=B5=20=D0=BA=D0=BB=D0=B0=D0=B2=D0=B8=D0=B0=D1=82=D1=83=D1=80?= =?UTF-8?q?=D1=8B=20=D0=BD=D0=B0=20=D0=B7=D0=B2=D0=BE=D0=BD=D0=BA=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/rosetta/messenger/MainActivity.kt | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/app/src/main/java/com/rosetta/messenger/MainActivity.kt b/app/src/main/java/com/rosetta/messenger/MainActivity.kt index 666ac1a..62972e7 100644 --- a/app/src/main/java/com/rosetta/messenger/MainActivity.kt +++ b/app/src/main/java/com/rosetta/messenger/MainActivity.kt @@ -20,7 +20,12 @@ import androidx.compose.runtime.* import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.platform.LocalFocusManager +import androidx.compose.ui.platform.LocalSoftwareKeyboardController +import androidx.compose.ui.platform.LocalView import androidx.core.content.ContextCompat +import androidx.core.view.WindowCompat +import androidx.core.view.WindowInsetsCompat import androidx.fragment.app.FragmentActivity import androidx.lifecycle.lifecycleScope import com.google.firebase.FirebaseApp @@ -586,6 +591,9 @@ fun MainScreen( // Load username AND name from AccountManager (persisted in DataStore) val context = LocalContext.current + val keyboardController = LocalSoftwareKeyboardController.current + val focusManager = LocalFocusManager.current + val rootView = LocalView.current val callScope = rememberCoroutineScope() val callUiState by CallManager.state.collectAsState() var pendingOutgoingCall by remember { mutableStateOf(null) } @@ -757,6 +765,20 @@ fun MainScreen( CallManager.bindAccount(accountPublicKey) } + LaunchedEffect(callUiState.isVisible) { + if (callUiState.isVisible) { + keyboardController?.hide() + focusManager.clearFocus(force = true) + + // Fallback for cases where IME survives focus reset due to window transitions. + val activity = rootView.context as? android.app.Activity + activity?.window?.let { window -> + WindowCompat.getInsetsController(window, rootView) + ?.hide(WindowInsetsCompat.Type.ime()) + } + } + } + LaunchedEffect(accountPublicKey, reloadTrigger) { if (accountPublicKey.isNotBlank()) { val accountManager = AccountManager(context)