diff options
| author | Maxime Coste <mawww@kakoune.org> | 2019-07-22 20:05:42 +1000 |
|---|---|---|
| committer | Maxime Coste <mawww@kakoune.org> | 2019-07-22 20:26:39 +1000 |
| commit | e42c81c8eb53a6562f0d7313a6a9a92d8360238f (patch) | |
| tree | 2d3ef40e454c17b8fc248492d6e918334bb98d57 /src/client_manager.cc | |
| parent | 837416ea389585a812fc789580e028163bd6bebe (diff) | |
Ensure current context switches away from buffer on delete-buffer
Fixes #3025
Diffstat (limited to 'src/client_manager.cc')
| -rw-r--r-- | src/client_manager.cc | 15 |
1 files changed, 1 insertions, 14 deletions
diff --git a/src/client_manager.cc b/src/client_manager.cc index b95e80ec..d1ac5bf3 100644 --- a/src/client_manager.cc +++ b/src/client_manager.cc @@ -167,21 +167,8 @@ void ClientManager::add_free_window(std::unique_ptr<Window>&& window, SelectionL void ClientManager::ensure_no_client_uses_buffer(Buffer& buffer) { for (auto& client : m_clients) - { - auto& context = client->context(); - context.jump_list().forget_buffer(buffer); - if (client->last_buffer() == &buffer) - client->set_last_buffer(nullptr); - - if (&context.buffer() != &buffer) - continue; + client->context().forget_buffer(buffer); - if (context.is_editing()) - context.input_handler().reset_normal_mode(); - - Buffer* last = client->last_buffer(); - context.change_buffer(last ? *last : BufferManager::instance().get_first_buffer()); - } Vector<std::unique_ptr<Window>> removed_windows; m_free_windows.erase(std::remove_if(m_free_windows.begin(), m_free_windows.end(), [&buffer, &removed_windows](WindowAndSelections& ws) { |
