From 2d91031a3d61822ace52d594f7575159107312b0 Mon Sep 17 00:00:00 2001 From: Oluwadara Abijo Date: Tue, 12 May 2026 21:29:00 +0100 Subject: [PATCH] fix(ADFA-3473): Resolve find in file dialog visibility issue --- .../activities/editor/FullscreenManager.kt | 19 ++++++++++++------ .../itsaky/androidide/ui/EditorBottomSheet.kt | 5 +++-- .../itsaky/androidide/ui/SwipeRevealLayout.kt | 2 +- .../editor/ui/EditorSearchLayout.kt | 2 +- .../main/res/layout/layout_find_in_file.xml | 20 +++++++++++++++---- 5 files changed, 34 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/com/itsaky/androidide/activities/editor/FullscreenManager.kt b/app/src/main/java/com/itsaky/androidide/activities/editor/FullscreenManager.kt index 27f6bb2f55..9d87f06fee 100644 --- a/app/src/main/java/com/itsaky/androidide/activities/editor/FullscreenManager.kt +++ b/app/src/main/java/com/itsaky/androidide/activities/editor/FullscreenManager.kt @@ -107,10 +107,13 @@ class FullscreenManager( private var pendingTransitionToken = 0L private val transitionDurationMs = 350L + + private var isFullscreenState = false - private val defaultEditorBottomMargin by lazy { + private val defaultEditorBottomMargin = (editorContainer.layoutParams as ViewGroup.MarginLayoutParams).bottomMargin - } + + private val offsetListener = AppBarLayout.OnOffsetChangedListener { appBarLayout, verticalOffset -> val totalScrollRange = appBarLayout.totalScrollRange @@ -118,6 +121,13 @@ class FullscreenManager( val collapseFraction = abs(verticalOffset).toFloat() / totalScrollRange.toFloat() appBarContent.alpha = 1f - collapseFraction } + + if (!isFullscreenState) { + val visibleAppBarHeight = totalScrollRange + verticalOffset + editorContainer.updateLayoutParams { + bottomMargin = defaultEditorBottomMargin + visibleAppBarHeight + } + } } private val bottomSheetCallback = object : BottomSheetBehavior.BottomSheetCallback() { @@ -234,13 +244,10 @@ class FullscreenManager( } else { bottomSheetBehavior.isHideable = false } - - editorContainer.updateLayoutParams { - bottomMargin = defaultEditorBottomMargin - } } private fun syncToggleUi(state: FullscreenUiState) { + isFullscreenState = state.isFullscreen if (state.isFullscreen) { fullscreenToggle.setImageResource(R.drawable.ic_fullscreen_exit) fullscreenToggle.contentDescription = diff --git a/app/src/main/java/com/itsaky/androidide/ui/EditorBottomSheet.kt b/app/src/main/java/com/itsaky/androidide/ui/EditorBottomSheet.kt index 29c97c0cc8..5f8ba5e3a1 100644 --- a/app/src/main/java/com/itsaky/androidide/ui/EditorBottomSheet.kt +++ b/app/src/main/java/com/itsaky/androidide/ui/EditorBottomSheet.kt @@ -338,7 +338,8 @@ constructor( */ fun setImeVisible(isVisible: Boolean) { isImeVisible = isVisible - behavior.isGestureInsetBottomIgnored = isVisible + behavior.isGestureInsetBottomIgnored = true + behavior.peekHeight = if (isVisible) 0 else collapsedHeight.toInt() } fun setOffsetAnchor(view: View) { @@ -350,7 +351,7 @@ constructor( behavior.peekHeight = collapsedHeight.roundToInt() behavior.expandedOffset = anchorOffset - behavior.isGestureInsetBottomIgnored = isImeVisible + behavior.isGestureInsetBottomIgnored = true binding.root.updatePadding(bottom = anchorOffset + insetBottom) binding.headerContainer.apply { diff --git a/app/src/main/java/com/itsaky/androidide/ui/SwipeRevealLayout.kt b/app/src/main/java/com/itsaky/androidide/ui/SwipeRevealLayout.kt index 6689236c14..3ea5ad888d 100644 --- a/app/src/main/java/com/itsaky/androidide/ui/SwipeRevealLayout.kt +++ b/app/src/main/java/com/itsaky/androidide/ui/SwipeRevealLayout.kt @@ -224,7 +224,7 @@ open class SwipeRevealLayout @JvmOverloads constructor( hiddenContent.layout(0, paddingTop, r, paddingTop + hiddenContent.measuredHeight) val olapTop = paddingTop + (hiddenContent.height * dragProgress).toInt() - overlappingContent.layout(0, olapTop, r, b) + overlappingContent.layout(0, olapTop, r, olapTop + overlappingContent.measuredHeight) } override fun onInterceptTouchEvent(ev: MotionEvent): Boolean { diff --git a/editor/src/main/java/com/itsaky/androidide/editor/ui/EditorSearchLayout.kt b/editor/src/main/java/com/itsaky/androidide/editor/ui/EditorSearchLayout.kt index 6716ae88d0..db908269e0 100644 --- a/editor/src/main/java/com/itsaky/androidide/editor/ui/EditorSearchLayout.kt +++ b/editor/src/main/java/com/itsaky/androidide/editor/ui/EditorSearchLayout.kt @@ -118,7 +118,7 @@ class EditorSearchLayout(context: Context, val editor: IDEEditor) : FrameLayout( addView( findInFileBinding.root, - LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT) + LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT) ) } diff --git a/editor/src/main/res/layout/layout_find_in_file.xml b/editor/src/main/res/layout/layout_find_in_file.xml index 91340a9d18..360ef55b98 100644 --- a/editor/src/main/res/layout/layout_find_in_file.xml +++ b/editor/src/main/res/layout/layout_find_in_file.xml @@ -69,10 +69,13 @@ android:layout_height="40dp" android:text="@string/previous" android:textAllCaps="true" + android:minWidth="0dp" + android:paddingHorizontal="4dp" app:layout_constraintEnd_toStartOf="@+id/next" app:layout_constraintHorizontal_weight="0.25" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/search_input" /> + app:layout_constraintTop_toBottomOf="@+id/search_input" + app:layout_constraintBottom_toBottomOf="parent" /> + app:layout_constraintTop_toBottomOf="@+id/search_input" + app:layout_constraintBottom_toBottomOf="parent" /> + app:layout_constraintTop_toBottomOf="@+id/search_input" + app:layout_constraintBottom_toBottomOf="parent" /> + app:layout_constraintTop_toBottomOf="@+id/search_input" + app:layout_constraintBottom_toBottomOf="parent" />