diff --git a/src/rime/gear/navigator.cc b/src/rime/gear/navigator.cc index 9a2d128d00..2802005072 100644 --- a/src/rime/gear/navigator.cc +++ b/src/rime/gear/navigator.cc @@ -60,6 +60,9 @@ Navigator::Navigator(const Ticket& ticket) Config* config = engine_->schema()->config(); LoadConfig(config, "navigator", Horizontal); LoadConfig(config, "navigator/vertical", Vertical); + + engine_->context()->select_notifier().connect( + [this](Context* ctx) { OnSelect(ctx); }); } ProcessResult Navigator::ProcessKeyEvent(const KeyEvent& key_event) { @@ -74,6 +77,10 @@ ProcessResult Navigator::ProcessKeyEvent(const KeyEvent& key_event) { FallbackOptions::All); } +void Navigator::OnSelect(Context* ctx) { + spans_.Clear(); +} + bool Navigator::LeftBySyllable(Context* ctx) { BeginMove(ctx); size_t confirmed_pos = ctx->composition().GetConfirmedPosition(); @@ -84,6 +91,7 @@ bool Navigator::LeftBySyllable(Context* ctx) { bool Navigator::LeftByChar(Context* ctx) { BeginMove(ctx); MoveLeft(ctx) || GoToEnd(ctx); + spans_.Clear(); return true; } @@ -107,6 +115,7 @@ bool Navigator::RightBySyllable(Context* ctx) { bool Navigator::RightByChar(Context* ctx) { BeginMove(ctx); MoveRight(ctx) || GoHome(ctx); + spans_.Clear(); return true; } diff --git a/src/rime/gear/navigator.h b/src/rime/gear/navigator.h index 53ea35cb48..f6205e8ba2 100644 --- a/src/rime/gear/navigator.h +++ b/src/rime/gear/navigator.h @@ -42,6 +42,7 @@ class Navigator : public Processor, public KeyBindingProcessor { bool MoveRight(Context* ctx); bool GoHome(Context* ctx); bool GoToEnd(Context* ctx); + void OnSelect(Context*); string input_; Spans spans_;