diff --git a/src/rime/engine.h b/src/rime/engine.h index 9f7d7c32c..5a45c6aea 100644 --- a/src/rime/engine.h +++ b/src/rime/engine.h @@ -31,11 +31,11 @@ class Engine : public Messenger { Context* context() const { return context_.get(); } CommitSink& sink() { return sink_; } - Context* active_context() const { - return active_context_ ? active_context_ : context_.get(); + Engine* active_engine() { + return active_engine_ ? active_engine_ : this; } - void set_active_context(Context* context = nullptr) { - active_context_ = context; + void set_active_engine(Engine* engine = nullptr) { + active_engine_ = engine; } RIME_API static Engine* Create(); @@ -46,7 +46,7 @@ class Engine : public Messenger { the schema_; the context_; CommitSink sink_; - Context* active_context_ = nullptr; + Engine* active_engine_ = nullptr; }; } // namespace rime diff --git a/src/rime/service.cc b/src/rime/service.cc index 1d6af56ec..8b515dddf 100644 --- a/src/rime/service.cc +++ b/src/rime/service.cc @@ -56,11 +56,11 @@ void Session::OnCommit(const string& commit_text) { } Context* Session::context() const { - return engine_ ? engine_->active_context() : NULL; + return engine_ ? engine_->active_engine()->context() : NULL; } Schema* Session::schema() const { - return engine_ ? engine_->schema() : NULL; + return engine_ ? engine_->active_engine()->schema() : NULL; } Service::Service() { diff --git a/src/rime/switcher.cc b/src/rime/switcher.cc index ee4171b02..ae53918d0 100644 --- a/src/rime/switcher.cc +++ b/src/rime/switcher.cc @@ -189,13 +189,13 @@ void Switcher::Activate() { LOG(INFO) << "switcher is activated."; context_->set_option("_fold_options", fold_options_); RefreshMenu(); - engine_->set_active_context(context_.get()); + engine_->set_active_engine(this); active_ = true; } void Switcher::Deactivate() { context_->Clear(); - engine_->set_active_context(); + engine_->set_active_engine(); active_ = false; } diff --git a/tools/rime_console.cc b/tools/rime_console.cc index 07a8a5205..e601b8f2b 100644 --- a/tools/rime_console.cc +++ b/tools/rime_console.cc @@ -53,7 +53,7 @@ class RimeConsole { const Segment ¤t(comp.back()); if (!current.menu) return; - int page_size = engine_->schema()->page_size(); + int page_size = engine_->active_engine()->schema()->page_size(); int page_no = current.selected_index / page_size; the page(current.menu->CreatePage(page_size, page_no)); if (!page) @@ -81,7 +81,7 @@ class RimeConsole { for (const KeyEvent &key : keys) { engine_->ProcessKey(key); } - Context *ctx = engine_->active_context(); + Context *ctx = engine_->active_engine()->context(); if (interactive_) { PrintComposition(ctx); }