Skip to content

Commit b410c9e

Browse files
committed
split-screen search keyboard bug fixed
1 parent 427bff7 commit b410c9e

2 files changed

Lines changed: 19 additions & 4 deletions

File tree

.idea/deploymentTargetSelector.xml

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/src/main/java/com/patch4code/logline/features/search/presentation/utils/KeyboardVisibilityObserver.kt

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,14 @@
11
package com.patch4code.logline.features.search.presentation.utils
22

3+
import android.os.Handler
4+
import android.os.Looper
35
import android.view.ViewTreeObserver
46
import androidx.compose.runtime.Composable
57
import androidx.compose.runtime.DisposableEffect
8+
import androidx.compose.runtime.getValue
9+
import androidx.compose.runtime.mutableStateOf
10+
import androidx.compose.runtime.remember
11+
import androidx.compose.runtime.setValue
612
import androidx.compose.ui.platform.LocalView
713
import androidx.core.view.ViewCompat
814
import androidx.core.view.WindowInsetsCompat
@@ -19,15 +25,24 @@ fun KeyboardVisibilityObserver(onKeyboardOpened:()->Unit = {}, onKeyboardClosed:
1925

2026
val view = LocalView.current
2127
val viewTreeObserver = view.viewTreeObserver
28+
29+
var lastKeyboardState by remember { mutableStateOf(false) }
30+
2231
DisposableEffect(viewTreeObserver) {
2332
val listener = ViewTreeObserver.OnGlobalLayoutListener {
2433
val isKeyboardOpen = ViewCompat.getRootWindowInsets(view)
2534
?.isVisible(WindowInsetsCompat.Type.ime()) ?: true
2635

2736
if (isKeyboardOpen) {
37+
lastKeyboardState = true
2838
onKeyboardOpened()
29-
} else {
30-
onKeyboardClosed()
39+
} else if (lastKeyboardState) {
40+
lastKeyboardState = false
41+
42+
// Delay to prevent split screen keyboard problems
43+
Handler(Looper.getMainLooper()).postDelayed({
44+
onKeyboardClosed()
45+
}, 200)
3146
}
3247
}
3348
viewTreeObserver.addOnGlobalLayoutListener(listener)

0 commit comments

Comments
 (0)