From 5c1fc12d88f6b317c9a38029fb93d1024d3e2c45 Mon Sep 17 00:00:00 2001 From: xbzk Date: Sun, 8 Jun 2025 20:27:00 +0000 Subject: [PATCH] fix topbar accumulative insets margin (#163) This is incremental to pr #154 (and a replacement for pr #161) It fixes top (portrait) and sides (landscape) margins accumulating upon enter/exit search bar. Co-authored-by: Allison Cunha Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/163 Co-authored-by: xbzk Co-committed-by: xbzk --- .../org/yuzu/yuzu_emu/ui/GamesFragment.kt | 24 ++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/GamesFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/GamesFragment.kt index 893aa5f41a..d6f346b3f8 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/GamesFragment.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/GamesFragment.kt @@ -52,6 +52,11 @@ class GamesFragment : Fragment() { private var _binding: FragmentGamesBinding? = null private val binding get() = _binding!! + private var originalHeaderTopMargin: Int? = null + private var originalHeaderBottomMargin: Int? = null + private var originalHeaderRightMargin: Int? = null + private var originalHeaderLeftMargin: Int? = null + companion object { private const val SEARCH_TEXT = "SearchText" private const val PREF_VIEW_TYPE = "GamesViewType" @@ -455,6 +460,8 @@ class GamesFragment : Fragment() { val leftInsets = barInsets.left + cutoutInsets.left val rightInsets = barInsets.right + cutoutInsets.right val topInsets = barInsets.top + cutoutInsets.top + val bottomInsets = barInsets.bottom + cutoutInsets.bottom + val mlpSwipe = binding.swipeRefresh.layoutParams as ViewGroup.MarginLayoutParams if (view.getLayoutDirection() == View.LAYOUT_DIRECTION_LTR) { mlpSwipe.leftMargin = leftInsets @@ -466,9 +473,20 @@ class GamesFragment : Fragment() { binding.swipeRefresh.layoutParams = mlpSwipe val mlpHeader = binding.header.layoutParams as ViewGroup.MarginLayoutParams - mlpHeader.leftMargin += leftInsets - mlpHeader.rightMargin += rightInsets - mlpHeader.topMargin += if (!isLandscape) topInsets else 0 + + // Store original margins only once + if (originalHeaderTopMargin == null) { + originalHeaderTopMargin = mlpHeader.topMargin + originalHeaderBottomMargin = mlpHeader.bottomMargin + originalHeaderRightMargin = mlpHeader.rightMargin + originalHeaderLeftMargin = mlpHeader.leftMargin + } + + // Always set margin as original + insets + mlpHeader.leftMargin = (originalHeaderLeftMargin ?: 0) + leftInsets + mlpHeader.rightMargin = (originalHeaderRightMargin ?: 0) + rightInsets + mlpHeader.topMargin = (originalHeaderTopMargin ?: 0) + if (!isLandscape) topInsets else 0 + mlpHeader.bottomMargin = (originalHeaderBottomMargin ?: 0) + if (!isLandscape) bottomInsets else 0 binding.header.layoutParams = mlpHeader binding.noticeText.updatePadding(bottom = spacingNavigation)