@@ -31,6 +31,8 @@ const props = defineProps<{
31
31
onClose: () => void
32
32
}>()
33
33
34
+ const enabledIMs = computed (() => props .inputMethods .map (({ name }) => name ))
35
+
34
36
const selectedInputMethod = ref (props .inputMethod )
35
37
const uri = computed (() => ` fcitx://config/inputmethod/${selectedInputMethod .value } ` )
36
38
@@ -81,18 +83,21 @@ let map: { [key: string]: {
81
83
name: string
82
84
displayName: string
83
85
}[] } = {}
86
+ let languageOfIM: { [key : string ]: string } = {}
84
87
85
88
watchEffect (() => {
86
89
if (! adding .value ) {
87
90
return
88
91
}
89
92
map = {}
93
+ languageOfIM = {}
90
94
for (const im of window .fcitx .getAllInputMethods ()) {
91
95
const code = im .languageCode .replace (' _' , ' -' );
92
96
(map [code ] = map [code ] || []).push ({
93
97
name: im .name ,
94
98
displayName: im .displayName ,
95
99
})
100
+ languageOfIM [im .name ] = code
96
101
}
97
102
languageOptions .value = []
98
103
const sortedLanguageCodes = Object .keys (map ).sort ((a : string , b : string ) => {
@@ -124,8 +129,7 @@ const inputMethodsForLanguage = computed(() => {
124
129
if (selectedLanguage .value === null ) {
125
130
return []
126
131
}
127
- const enabledIMs = props .inputMethods .map (({ name }) => name )
128
- return map [selectedLanguage .value ].filter (({ name }) => ! enabledIMs .includes (name ))
132
+ return map [selectedLanguage .value ].filter (({ name }) => ! enabledIMs .value .includes (name ))
129
133
})
130
134
131
135
const imsToAdd = ref <string []>([])
@@ -141,7 +145,9 @@ const onlyShowCurrentLanguage = ref(false)
141
145
const filteredLanguageOptions = computed (() => {
142
146
if (onlyShowCurrentLanguage .value ) {
143
147
const currentLanguage = navigator .language .split (' -' )[0 ]
144
- return languageOptions .value .filter (({ key }) => key .split (' -' )[0 ] === currentLanguage )
148
+ const languages = new Set (enabledIMs .value .map (name => languageOfIM [name ]).filter (code => code ))
149
+ languages .add (currentLanguage )
150
+ return languageOptions .value .filter (({ key }) => languages .has (key .split (' -' )[0 ]))
145
151
}
146
152
return languageOptions .value
147
153
})
0 commit comments