Skip to content

Commit 577e189

Browse files
committed
fix(SwitchOptionWindow): option switches might disappear after changing schema
1 parent 4c51d44 commit 577e189

2 files changed

Lines changed: 16 additions & 15 deletions

File tree

app/src/main/java/com/osfans/trime/core/Rime.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,9 @@ class Rime :
190190
is RimeMessage.DeployMessage -> {
191191
if (it.data == RimeMessage.DeployMessage.State.Start) {
192192
OpenCCDictManager.buildOpenCCDict()
193+
} else if (it.data == RimeMessage.DeployMessage.State.Success) {
194+
emitResponse()
195+
SchemaManager.init(getCurrentRimeSchema())
193196
}
194197
}
195198
is RimeMessage.CompositionMessage -> {

app/src/main/java/com/osfans/trime/ime/option/SwitchOptionWindow.kt

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,18 @@ package com.osfans.trime.ime.option
88
import android.content.Context
99
import android.view.View
1010
import android.widget.PopupMenu
11-
import androidx.lifecycle.lifecycleScope
1211
import com.osfans.trime.R
1312
import com.osfans.trime.core.RimeMessage
13+
import com.osfans.trime.core.SchemaItem
1414
import com.osfans.trime.daemon.RimeSession
1515
import com.osfans.trime.daemon.launchOnReady
16-
import com.osfans.trime.data.schema.Schema
1716
import com.osfans.trime.data.schema.SchemaManager
1817
import com.osfans.trime.data.theme.Theme
1918
import com.osfans.trime.ime.bar.ui.ToolButton
2019
import com.osfans.trime.ime.broadcast.InputBroadcastReceiver
2120
import com.osfans.trime.ime.core.TrimeInputMethodService
2221
import com.osfans.trime.ime.window.BoardWindow
2322
import com.osfans.trime.util.AppUtils
24-
import kotlinx.coroutines.launch
2523
import splitties.dimensions.dp
2624
import splitties.views.dsl.core.add
2725
import splitties.views.dsl.core.horizontalLayout
@@ -85,15 +83,20 @@ class SwitchOptionWindow(
8583
}
8684
}
8785

88-
private fun updateSchemaOptionEntries(switches: List<Schema.Switch>) {
89-
adapter.submitList(switches.map { SwitchOptionEntry.fromSwitch(it) })
86+
private fun updateSchemaOptionEntries() {
87+
adapter.submitList(
88+
SchemaManager.activeSchema.switches
89+
.filter { it.states.size > 1 }
90+
.map { SwitchOptionEntry.fromSwitch(it) },
91+
)
92+
}
93+
94+
override fun onRimeSchemaUpdated(schema: SchemaItem) {
95+
updateSchemaOptionEntries()
9096
}
9197

9298
override fun onRimeOptionUpdated(value: RimeMessage.OptionMessage.Data) {
93-
val data =
94-
SchemaManager.activeSchema.switches
95-
.filter { it.states.size > 1 }
96-
updateSchemaOptionEntries(data)
99+
updateSchemaOptionEntries()
97100
}
98101

99102
override fun onCreateView() = view
@@ -114,12 +117,7 @@ class SwitchOptionWindow(
114117
override fun onCreateBarView() = barExternalView
115118

116119
override fun onAttached() {
117-
val data =
118-
SchemaManager.activeSchema.switches
119-
.filter { it.states.size > 1 }
120-
service.lifecycleScope.launch {
121-
updateSchemaOptionEntries(data)
122-
}
120+
updateSchemaOptionEntries()
123121
}
124122

125123
override fun onDetached() {

0 commit comments

Comments
 (0)