summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2013-10-15 18:50:43 +0100
committerMaxime Coste <frrrwww@gmail.com>2013-10-15 18:50:43 +0100
commitfe0a4f0d11362fd89d35067847cefe12fb249d68 (patch)
treea9bf01aede96e4ea3a5640c51fefc3c08c3d7f15 /src
parent608196f526b542c257810ef1284813c6cc13197e (diff)
Reset normal mode when changing the current editor
Diffstat (limited to 'src')
-rw-r--r--src/client.cc7
-rw-r--r--src/client.hh2
-rw-r--r--src/context.cc2
-rw-r--r--src/context.hh2
4 files changed, 11 insertions, 2 deletions
diff --git a/src/client.cc b/src/client.cc
index 2f4323bc..3e92727c 100644
--- a/src/client.cc
+++ b/src/client.cc
@@ -937,7 +937,7 @@ private:
InputMode& InputMode::reset_normal_mode()
{
- m_client.change_input_mode(new InputModes::Normal(m_client));
+ m_client.reset_normal_mode();
return *m_client.m_mode;
}
@@ -1090,4 +1090,9 @@ void Client::redraw_ifn()
}
}
+void Client::reset_normal_mode()
+{
+ change_input_mode(new InputModes::Normal(*this));
+}
+
}
diff --git a/src/client.hh b/src/client.hh
index b7cbe745..3cbb15d9 100644
--- a/src/client.hh
+++ b/src/client.hh
@@ -85,6 +85,8 @@ public:
void redraw_ifn();
UserInterface& ui() const { return *m_ui; }
+
+ void reset_normal_mode();
private:
void change_input_mode(InputMode* new_mode);
diff --git a/src/context.cc b/src/context.cc
index c36984e6..513bd6cb 100644
--- a/src/context.cc
+++ b/src/context.cc
@@ -153,6 +153,8 @@ void Context::change_editor(Editor& editor)
window().set_dimensions(ui().dimensions());
window().hooks().run_hook("WinDisplay", buffer().name(), *this);
}
+ if (has_client())
+ client().reset_normal_mode();
}
}
diff --git a/src/context.hh b/src/context.hh
index bc34de47..07e4ffa1 100644
--- a/src/context.hh
+++ b/src/context.hh
@@ -57,7 +57,7 @@ struct Context
void forget_jumps_to_buffer(Buffer& buffer);
private:
- safe_ptr<Editor> m_editor;
+ safe_ptr<Editor> m_editor;
safe_ptr<Client> m_client;
using JumpList = std::vector<DynamicSelectionList>;