@@ -31,6 +31,8 @@ const props = defineProps<{
3131 onClose: () => void
3232}>()
3333
34+ const enabledIMs = computed (() => props .inputMethods .map (({ name }) => name ))
35+
3436const selectedInputMethod = ref (props .inputMethod )
3537const uri = computed (() => ` fcitx://config/inputmethod/${selectedInputMethod .value } ` )
3638
@@ -81,18 +83,21 @@ let map: { [key: string]: {
8183 name: string
8284 displayName: string
8385}[] } = {}
86+ let languageOfIM: { [key : string ]: string } = {}
8487
8588watchEffect (() => {
8689 if (! adding .value ) {
8790 return
8891 }
8992 map = {}
93+ languageOfIM = {}
9094 for (const im of window .fcitx .getAllInputMethods ()) {
9195 const code = im .languageCode .replace (' _' , ' -' );
9296 (map [code ] = map [code ] || []).push ({
9397 name: im .name ,
9498 displayName: im .displayName ,
9599 })
100+ languageOfIM [im .name ] = code
96101 }
97102 languageOptions .value = []
98103 const sortedLanguageCodes = Object .keys (map ).sort ((a : string , b : string ) => {
@@ -124,8 +129,7 @@ const inputMethodsForLanguage = computed(() => {
124129 if (selectedLanguage .value === null ) {
125130 return []
126131 }
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 ))
129133})
130134
131135const imsToAdd = ref <string []>([])
@@ -141,7 +145,9 @@ const onlyShowCurrentLanguage = ref(false)
141145const filteredLanguageOptions = computed (() => {
142146 if (onlyShowCurrentLanguage .value ) {
143147 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 ]))
145151 }
146152 return languageOptions .value
147153})
0 commit comments