summaryrefslogtreecommitdiff
path: root/src/buffer_manager.cc
diff options
context:
space:
mode:
authorMaxime Coste <mawww@kakoune.org>2019-02-16 20:02:46 +1100
committerMaxime Coste <mawww@kakoune.org>2019-02-17 11:21:26 +1100
commit8135a44c6c3d9802e912153cb0e09f41f40d5af2 (patch)
treeee3b01fd1941be20c73061b6432c5f404a0f07d1 /src/buffer_manager.cc
parent0b9164e7bc5a5679b3d3c6ee68a83f8c6bfa847b (diff)
Run WinClose hook before putting the window into trash
Diffstat (limited to 'src/buffer_manager.cc')
-rw-r--r--src/buffer_manager.cc17
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();
}