From b0626b314a48e2ebe07e035d18a4bdda9bb79380 Mon Sep 17 00:00:00 2001 From: jbsession Date: Tue, 21 Oct 2025 23:48:49 +0800 Subject: [PATCH 1/7] Add own inset listener to fab --- .../thoughtcrime/securesms/home/HomeActivity.kt | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/home/HomeActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/home/HomeActivity.kt index 3318d50bf1..a419683315 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/home/HomeActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/home/HomeActivity.kt @@ -18,6 +18,8 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.platform.ViewCompositionStrategy +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat import androidx.core.view.isVisible import androidx.core.view.updateLayoutParams import androidx.core.view.updatePadding @@ -419,14 +421,21 @@ class HomeActivity : ScreenLockActionBarActivity(), binding.root.applySafeInsetsPaddings( applyBottom = false, + consumeInsets = false, alsoApply = { insets -> binding.globalSearchRecycler.updatePadding(bottom = insets.bottom) - binding.newConversationButton.updateLayoutParams { - bottomMargin = insets.bottom + resources.getDimensionPixelSize(R.dimen.new_conversation_button_bottom_offset) - } } ) + ViewCompat.setOnApplyWindowInsetsListener(binding.newConversationButton) { v, insets -> + val nav = insets.getInsets(WindowInsetsCompat.Type.navigationBars()) + v.updateLayoutParams { + bottomMargin = nav.bottom + + resources.getDimensionPixelSize(R.dimen.new_conversation_button_bottom_offset) + } + insets // don’t consume + } + // Set up in-app review binding.inAppReviewView.setThemedContent { InAppReview( From e27edff3beb331a64ed8ae1338606fa9c2f0f25b Mon Sep 17 00:00:00 2001 From: jbsession Date: Wed, 22 Oct 2025 14:50:02 +0800 Subject: [PATCH 2/7] new message fab inset --- .../securesms/home/HomeActivity.kt | 39 ++++++++++--------- 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/home/HomeActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/home/HomeActivity.kt index a419683315..aa61918b4e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/home/HomeActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/home/HomeActivity.kt @@ -88,7 +88,6 @@ import org.thoughtcrime.securesms.reviews.ui.InAppReview import org.thoughtcrime.securesms.reviews.ui.InAppReviewViewModel import org.thoughtcrime.securesms.showSessionDialog import org.thoughtcrime.securesms.tokenpage.TokenPageNotificationManager -import org.thoughtcrime.securesms.ui.ObserveAsEvents import org.thoughtcrime.securesms.ui.UINavigator import org.thoughtcrime.securesms.ui.components.Avatar import org.thoughtcrime.securesms.ui.setThemedContent @@ -419,23 +418,6 @@ class HomeActivity : ScreenLockActionBarActivity(), } } - binding.root.applySafeInsetsPaddings( - applyBottom = false, - consumeInsets = false, - alsoApply = { insets -> - binding.globalSearchRecycler.updatePadding(bottom = insets.bottom) - } - ) - - ViewCompat.setOnApplyWindowInsetsListener(binding.newConversationButton) { v, insets -> - val nav = insets.getInsets(WindowInsetsCompat.Type.navigationBars()) - v.updateLayoutParams { - bottomMargin = nav.bottom + - resources.getDimensionPixelSize(R.dimen.new_conversation_button_bottom_offset) - } - insets // don’t consume - } - // Set up in-app review binding.inAppReviewView.setThemedContent { InAppReview( @@ -444,6 +426,8 @@ class HomeActivity : ScreenLockActionBarActivity(), sendCommands = inAppReviewViewModel::sendUiCommand, ) } + + applyViewInsets() } override fun onCancelClicked() { @@ -904,6 +888,25 @@ class HomeActivity : ScreenLockActionBarActivity(), private fun showStartConversation() { homeViewModel.onCommand(HomeViewModel.Commands.ShowStartConversationSheet) } + + private fun applyViewInsets() { + binding.root.applySafeInsetsPaddings( + applyBottom = false, + consumeInsets = false, + alsoApply = { insets -> + binding.globalSearchRecycler.updatePadding(bottom = insets.bottom) + } + ) + + ViewCompat.setOnApplyWindowInsetsListener(binding.newConversationButton) { view, insets -> + val nav = insets.getInsets(WindowInsetsCompat.Type.navigationBars()) + view.updateLayoutParams { + bottomMargin = nav.bottom + + resources.getDimensionPixelSize(R.dimen.new_conversation_button_bottom_offset) + } + insets + } + } } fun Context.startHomeActivity(isFromOnboarding: Boolean, isNewAccount: Boolean) { From adda37328b27777fd16ec11da9496f25478b860c Mon Sep 17 00:00:00 2001 From: jbsession Date: Thu, 23 Oct 2025 07:39:18 +0800 Subject: [PATCH 3/7] Update typemask for inset --- .../securesms/home/HomeActivity.kt | 32 +++++++------------ 1 file changed, 12 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/home/HomeActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/home/HomeActivity.kt index aa61918b4e..57e791e790 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/home/HomeActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/home/HomeActivity.kt @@ -427,7 +427,18 @@ class HomeActivity : ScreenLockActionBarActivity(), ) } - applyViewInsets() + binding.root.applySafeInsetsPaddings( + typeMask = WindowInsetsCompat.Type.systemBars(), + applyBottom = false, + consumeInsets = false, + alsoApply = { insets -> + binding.globalSearchRecycler.updatePadding(bottom = insets.bottom) + binding.newConversationButton.updateLayoutParams { + bottomMargin = insets.bottom + + resources.getDimensionPixelSize(R.dimen.new_conversation_button_bottom_offset) + } + } + ) } override fun onCancelClicked() { @@ -888,25 +899,6 @@ class HomeActivity : ScreenLockActionBarActivity(), private fun showStartConversation() { homeViewModel.onCommand(HomeViewModel.Commands.ShowStartConversationSheet) } - - private fun applyViewInsets() { - binding.root.applySafeInsetsPaddings( - applyBottom = false, - consumeInsets = false, - alsoApply = { insets -> - binding.globalSearchRecycler.updatePadding(bottom = insets.bottom) - } - ) - - ViewCompat.setOnApplyWindowInsetsListener(binding.newConversationButton) { view, insets -> - val nav = insets.getInsets(WindowInsetsCompat.Type.navigationBars()) - view.updateLayoutParams { - bottomMargin = nav.bottom + - resources.getDimensionPixelSize(R.dimen.new_conversation_button_bottom_offset) - } - insets - } - } } fun Context.startHomeActivity(isFromOnboarding: Boolean, isNewAccount: Boolean) { From 9d2c537ae6f2257b63274b8110afab384811dce1 Mon Sep 17 00:00:00 2001 From: jbsession Date: Thu, 23 Oct 2025 07:45:29 +0800 Subject: [PATCH 4/7] Revert "Update typemask for inset" This reverts commit adda37328b27777fd16ec11da9496f25478b860c. --- .../securesms/home/HomeActivity.kt | 32 ++++++++++++------- 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/home/HomeActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/home/HomeActivity.kt index 57e791e790..aa61918b4e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/home/HomeActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/home/HomeActivity.kt @@ -427,18 +427,7 @@ class HomeActivity : ScreenLockActionBarActivity(), ) } - binding.root.applySafeInsetsPaddings( - typeMask = WindowInsetsCompat.Type.systemBars(), - applyBottom = false, - consumeInsets = false, - alsoApply = { insets -> - binding.globalSearchRecycler.updatePadding(bottom = insets.bottom) - binding.newConversationButton.updateLayoutParams { - bottomMargin = insets.bottom + - resources.getDimensionPixelSize(R.dimen.new_conversation_button_bottom_offset) - } - } - ) + applyViewInsets() } override fun onCancelClicked() { @@ -899,6 +888,25 @@ class HomeActivity : ScreenLockActionBarActivity(), private fun showStartConversation() { homeViewModel.onCommand(HomeViewModel.Commands.ShowStartConversationSheet) } + + private fun applyViewInsets() { + binding.root.applySafeInsetsPaddings( + applyBottom = false, + consumeInsets = false, + alsoApply = { insets -> + binding.globalSearchRecycler.updatePadding(bottom = insets.bottom) + } + ) + + ViewCompat.setOnApplyWindowInsetsListener(binding.newConversationButton) { view, insets -> + val nav = insets.getInsets(WindowInsetsCompat.Type.navigationBars()) + view.updateLayoutParams { + bottomMargin = nav.bottom + + resources.getDimensionPixelSize(R.dimen.new_conversation_button_bottom_offset) + } + insets + } + } } fun Context.startHomeActivity(isFromOnboarding: Boolean, isNewAccount: Boolean) { From 1fc5602cb49387af81d98296854eaa7d3af7881f Mon Sep 17 00:00:00 2001 From: jbsession Date: Thu, 23 Oct 2025 09:07:51 +0800 Subject: [PATCH 5/7] updated safe insets margins --- .../thoughtcrime/securesms/home/HomeActivity.kt | 14 ++++++-------- .../thoughtcrime/securesms/util/ViewUtilities.kt | 3 ++- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/home/HomeActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/home/HomeActivity.kt index aa61918b4e..bec8dac4c4 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/home/HomeActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/home/HomeActivity.kt @@ -18,6 +18,7 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.platform.ViewCompositionStrategy +import androidx.core.graphics.Insets import androidx.core.view.ViewCompat import androidx.core.view.WindowInsetsCompat import androidx.core.view.isVisible @@ -94,6 +95,7 @@ import org.thoughtcrime.securesms.ui.setThemedContent import org.thoughtcrime.securesms.ui.theme.LocalDimensions import org.thoughtcrime.securesms.util.AvatarUtils import org.thoughtcrime.securesms.util.DateUtils +import org.thoughtcrime.securesms.util.applySafeInsetsMargins import org.thoughtcrime.securesms.util.applySafeInsetsPaddings import org.thoughtcrime.securesms.util.disableClipping import org.thoughtcrime.securesms.util.fadeIn @@ -898,14 +900,10 @@ class HomeActivity : ScreenLockActionBarActivity(), } ) - ViewCompat.setOnApplyWindowInsetsListener(binding.newConversationButton) { view, insets -> - val nav = insets.getInsets(WindowInsetsCompat.Type.navigationBars()) - view.updateLayoutParams { - bottomMargin = nav.bottom + - resources.getDimensionPixelSize(R.dimen.new_conversation_button_bottom_offset) - } - insets - } + binding.newConversationButton.applySafeInsetsMargins( + consumeInsets = false, + additionalInsets = Insets.of(0,0,0, resources.getDimensionPixelSize(R.dimen.new_conversation_button_bottom_offset)) + ) } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/ViewUtilities.kt b/app/src/main/java/org/thoughtcrime/securesms/util/ViewUtilities.kt index 7b965f2e3c..9703ab1bf1 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/ViewUtilities.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/util/ViewUtilities.kt @@ -154,6 +154,7 @@ fun View.applySafeInsetsMargins( consumeInsets: Boolean = true, @InsetsType typeMask: Int = WindowInsetsCompat.Type.systemBars() or WindowInsetsCompat.Type.ime(), + additionalInsets : Insets = Insets.NONE // for additional offsets ) { ViewCompat.setOnApplyWindowInsetsListener(this) { view, windowInsets -> // Get system bars insets @@ -162,7 +163,7 @@ fun View.applySafeInsetsMargins( // Update view margins to account for system bars val lp = view.layoutParams as? MarginLayoutParams if (lp != null) { - lp.setMargins(systemBarsInsets.left, systemBarsInsets.top, systemBarsInsets.right, systemBarsInsets.bottom) + lp.setMargins(additionalInsets.left + systemBarsInsets.left, additionalInsets.top + systemBarsInsets.top, additionalInsets.right + systemBarsInsets.right, additionalInsets.bottom + systemBarsInsets.bottom) view.layoutParams = lp if (consumeInsets) { From 27a24c4946900b491911033628d9010348657f73 Mon Sep 17 00:00:00 2001 From: jbsession Date: Thu, 23 Oct 2025 09:10:38 +0800 Subject: [PATCH 6/7] Fix typemas --- .../main/java/org/thoughtcrime/securesms/home/HomeActivity.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/java/org/thoughtcrime/securesms/home/HomeActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/home/HomeActivity.kt index bec8dac4c4..7dc69c08ef 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/home/HomeActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/home/HomeActivity.kt @@ -902,6 +902,7 @@ class HomeActivity : ScreenLockActionBarActivity(), binding.newConversationButton.applySafeInsetsMargins( consumeInsets = false, + typeMask = WindowInsetsCompat.Type.navigationBars(), additionalInsets = Insets.of(0,0,0, resources.getDimensionPixelSize(R.dimen.new_conversation_button_bottom_offset)) ) } From 005623f1b4e846107f7dfe981630b89551344649 Mon Sep 17 00:00:00 2001 From: jbsession Date: Thu, 23 Oct 2025 10:55:41 +0800 Subject: [PATCH 7/7] Consume inset false --- .../main/java/org/thoughtcrime/securesms/home/HomeActivity.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/home/HomeActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/home/HomeActivity.kt index 7dc69c08ef..4a5ca84e43 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/home/HomeActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/home/HomeActivity.kt @@ -901,7 +901,6 @@ class HomeActivity : ScreenLockActionBarActivity(), ) binding.newConversationButton.applySafeInsetsMargins( - consumeInsets = false, typeMask = WindowInsetsCompat.Type.navigationBars(), additionalInsets = Insets.of(0,0,0, resources.getDimensionPixelSize(R.dimen.new_conversation_button_bottom_offset)) )