diff options
| author | Maxime Coste <frrrwww@gmail.com> | 2016-11-02 23:12:57 +0000 |
|---|---|---|
| committer | Maxime Coste <frrrwww@gmail.com> | 2016-11-02 23:12:57 +0000 |
| commit | 6347787cf2662436a942fe9208f0af7f070fc324 (patch) | |
| tree | 054c18e9c6cc1c3e591e1b6d7563ce77fb5cbb14 /src/input_handler.cc | |
| parent | 9ca0467c4d568b2c8fd1f35d549957f08ab27a13 (diff) | |
Propagate NormalParams to user mappings
Closes #896
Diffstat (limited to 'src/input_handler.cc')
| -rw-r--r-- | src/input_handler.cc | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/input_handler.cc b/src/input_handler.cc index 2b585f86..231d97f0 100644 --- a/src/input_handler.cc +++ b/src/input_handler.cc @@ -292,6 +292,8 @@ public: KeymapMode keymap_mode() const override { return KeymapMode::Normal; } private: + friend struct InputHandler::ScopedForceNormal; + NormalParams m_params = { 0, 0 }; bool m_hooks_disabled = false; bool m_enabled = false; @@ -1353,14 +1355,16 @@ void InputHandler::on_next_key(KeymapMode keymap_mode, KeyCallback callback) push_mode(new InputModes::NextKey(*this, keymap_mode, callback)); } -InputHandler::ScopedForceNormal::ScopedForceNormal(InputHandler& handler) +InputHandler::ScopedForceNormal::ScopedForceNormal(InputHandler& handler, NormalParams params) : m_handler(handler), m_mode(nullptr) { - if (handler.m_mode_stack.size() == 1) - return; + if (handler.m_mode_stack.size() != 1) + { + handler.push_mode(new InputModes::Normal(handler)); + m_mode = handler.m_mode_stack.back().get(); + } - handler.push_mode(new InputModes::Normal(handler)); - m_mode = handler.m_mode_stack.back().get(); + static_cast<InputModes::Normal*>(handler.m_mode_stack.back().get())->m_params = params; } InputHandler::ScopedForceNormal::~ScopedForceNormal() |
