diff options
| author | Maxime Coste <mawww@kakoune.org> | 2019-02-16 20:02:46 +1100 |
|---|---|---|
| committer | Maxime Coste <mawww@kakoune.org> | 2019-02-17 11:21:26 +1100 |
| commit | 8135a44c6c3d9802e912153cb0e09f41f40d5af2 (patch) | |
| tree | ee3b01fd1941be20c73061b6432c5f404a0f07d1 /src/buffer_manager.cc | |
| parent | 0b9164e7bc5a5679b3d3c6ee68a83f8c6bfa847b (diff) | |
Run WinClose hook before putting the window into trash
Diffstat (limited to 'src/buffer_manager.cc')
| -rw-r--r-- | src/buffer_manager.cc | 17 |
1 files changed, 2 insertions, 15 deletions
diff --git a/src/buffer_manager.cc b/src/buffer_manager.cc index a26caa40..6b083c55 100644 --- a/src/buffer_manager.cc +++ b/src/buffer_manager.cc @@ -50,13 +50,13 @@ void BufferManager::delete_buffer(Buffer& buffer) auto it = find_if(m_buffers, [&](auto& p) { return p.get() == &buffer; }); kak_assert(it != m_buffers.end()); + buffer.on_unregistered(); + m_buffer_trash.emplace_back(std::move(*it)); m_buffers.erase(it); if (ClientManager::has_instance()) ClientManager::instance().ensure_no_client_uses_buffer(buffer); - - buffer.on_unregistered(); } Buffer* BufferManager::get_buffer_ifp(StringView name) @@ -99,19 +99,6 @@ void BufferManager::backup_modified_buffers() void BufferManager::clear_buffer_trash() { - for (auto& buffer : m_buffer_trash) - { - // Do that again, to be tolerant in some corner cases, where a buffer is - // deleted during its creation - if (ClientManager::has_instance()) - { - ClientManager::instance().ensure_no_client_uses_buffer(*buffer); - ClientManager::instance().clear_window_trash(); - } - - buffer.reset(); - } - m_buffer_trash.clear(); } |
