Skip to content

Commit

Permalink
replace main with init; allow reload before init
Browse files Browse the repository at this point in the history
  • Loading branch information
eagleoflqj committed Dec 22, 2024
1 parent 25d7386 commit 6ce4a7e
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 17 deletions.
1 change: 1 addition & 0 deletions page/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ window.fcitx = {
installPlugin,
getInstalledPlugins,
enable() {
Module.ccall('init', 'void', [], [])
document.addEventListener('focus', focus, true)
document.addEventListener('blur', blur, true)
document.addEventListener('keydown', keyEvent)
Expand Down
39 changes: 22 additions & 17 deletions src/fcitx.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,23 +29,10 @@ EMSCRIPTEN_KEEPALIVE bool process_key(const char *key, const char *code,
isRelease);
}

EMSCRIPTEN_KEEPALIVE void reload() {
instance->reloadConfig();
instance->refresh();
auto &addonManager = instance->addonManager();
for (const auto category :
{fcitx::AddonCategory::InputMethod, fcitx::AddonCategory::Frontend,
fcitx::AddonCategory::Loader, fcitx::AddonCategory::Module,
fcitx::AddonCategory::UI}) {
const auto names = addonManager.addonNames(category);
for (const auto &name : names) {
instance->reloadAddonConfig(name);
}
EMSCRIPTEN_KEEPALIVE void init() {
if (instance) {
return;
}
instance->inputMethodManager().load();
}

int main() {
umask(007); // Fix config file's mode
StandardPath::global().syncUmask();
#ifdef NDEBUG
Expand All @@ -60,7 +47,25 @@ int main() {
addonMgr.registerDefaultLoader(&getStaticAddon());
instance->initialize(); // Unnecessary to call exec.
frontend = dynamic_cast<WasmFrontend *>(addonMgr.addon("wasmfrontend"));
return 0;
}

EMSCRIPTEN_KEEPALIVE void reload() {
if (!instance) { // Pre-install plugins.
return init();
}
instance->reloadConfig();
instance->refresh();
auto &addonManager = instance->addonManager();
for (const auto category :
{fcitx::AddonCategory::InputMethod, fcitx::AddonCategory::Frontend,
fcitx::AddonCategory::Loader, fcitx::AddonCategory::Module,
fcitx::AddonCategory::UI}) {
const auto names = addonManager.addonNames(category);
for (const auto &name : names) {
instance->reloadAddonConfig(name);
}
}
instance->inputMethodManager().load();
}
}
} // namespace fcitx

0 comments on commit 6ce4a7e

Please sign in to comment.