Create PopupMenu with themedContext

fix candidate long-press menu not following system dark mode
This commit is contained in:
Rocka 2026-06-11 01:33:11 +08:00
parent d0364b8387
commit 4dda210837
No known key found for this signature in database
GPG Key ID: 28031158FFDD6853
2 changed files with 5 additions and 4 deletions

View File

@ -16,6 +16,7 @@ import androidx.core.view.WindowInsetsCompat
import androidx.lifecycle.lifecycleScope
import kotlinx.coroutines.Job
import kotlinx.coroutines.launch
import org.fcitx.fcitx5.android.R
import org.fcitx.fcitx5.android.core.FcitxEvent
import org.fcitx.fcitx5.android.daemon.FcitxConnection
import org.fcitx.fcitx5.android.data.InputFeedbacks
@ -26,6 +27,7 @@ import org.fcitx.fcitx5.android.data.theme.ThemePrefs
import org.fcitx.fcitx5.android.utils.item
import org.fcitx.fcitx5.android.utils.navbarFrameHeight
import splitties.resources.styledColor
import splitties.views.dsl.core.withTheme
import kotlin.math.max
abstract class BaseInputView(
@ -71,6 +73,8 @@ abstract class BaseInputView(
private var candidateActionMenu: PopupMenu? = null
val themedContext = context.withTheme(R.style.Theme_InputViewTheme)
fun showCandidateActionMenu(idx: Int, text: String, view: View) {
candidateActionMenu?.dismiss()
candidateActionMenu = null
@ -78,7 +82,7 @@ abstract class BaseInputView(
val actions = fcitx.runOnReady { getCandidateActions(idx) }
if (actions.isEmpty()) return@launch
InputFeedbacks.hapticFeedback(view, longPress = true)
candidateActionMenu = PopupMenu(context, view).apply {
candidateActionMenu = PopupMenu(themedContext, view).apply {
menu.add(buildSpannedString {
bold {
color(context.styledColor(android.R.attr.colorAccent)) {

View File

@ -16,7 +16,6 @@ import android.widget.ImageView
import androidx.annotation.Keep
import androidx.annotation.RequiresApi
import androidx.core.view.updateLayoutParams
import org.fcitx.fcitx5.android.R
import org.fcitx.fcitx5.android.core.CapabilityFlags
import org.fcitx.fcitx5.android.core.FcitxEvent
import org.fcitx.fcitx5.android.daemon.FcitxConnection
@ -60,7 +59,6 @@ import splitties.views.dsl.core.add
import splitties.views.dsl.core.imageView
import splitties.views.dsl.core.matchParent
import splitties.views.dsl.core.view
import splitties.views.dsl.core.withTheme
import splitties.views.dsl.core.wrapContent
import splitties.views.imageDrawable
@ -93,7 +91,6 @@ class InputView(
}
private val scope = DynamicScope()
private val themedContext = context.withTheme(R.style.Theme_InputViewTheme)
private val broadcaster = InputBroadcaster()
private val popup = PopupComponent()
private val punctuation = PunctuationComponent()