Fix nav bar getting out of sync with keyboard pager.

This commit is contained in:
Alex Hart
2024-03-11 16:01:45 -03:00
committed by Clark Chen
parent d52c520c02
commit 865bf0d056

View File

@@ -4,6 +4,8 @@ import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.view.Window
import androidx.fragment.app.DialogFragment
import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider
import org.thoughtcrime.securesms.R
@@ -57,10 +59,12 @@ class KeyboardPagerFragment : Fragment(), InputAwareConstraintLayout.InputFragme
}
override fun onHiddenChanged(hidden: Boolean) {
if (hidden) {
WindowUtil.setNavigationBarColor(requireActivity(), ThemeUtil.getThemedColor(requireContext(), android.R.attr.navigationBarColor))
} else {
WindowUtil.setNavigationBarColor(requireActivity(), ThemeUtil.getThemedColor(requireContext(), R.attr.mediaKeyboardBottomBarBackgroundColor))
getWindow()?.let { window ->
if (hidden) {
WindowUtil.setNavigationBarColor(requireContext(), window, ThemeUtil.getThemedColor(requireContext(), android.R.attr.navigationBarColor))
} else {
WindowUtil.setNavigationBarColor(requireContext(), window, ThemeUtil.getThemedColor(requireContext(), R.attr.mediaKeyboardBottomBarBackgroundColor))
}
}
}
@@ -70,6 +74,19 @@ class KeyboardPagerFragment : Fragment(), InputAwareConstraintLayout.InputFragme
viewModel.page().value?.let(this::onPageSelected)
}
private fun getWindow(): Window? {
var parent: Fragment? = parentFragment
while (parent != null) {
if (parent is DialogFragment) {
return parent.dialog?.window
}
parent = parent.parentFragment
}
return activity?.window
}
private fun onPageSelected(page: KeyboardPage) {
emojiButton.isSelected = page == KeyboardPage.EMOJI
stickerButton.isSelected = page == KeyboardPage.STICKER