From fedabb417604ceeae1f30e486f2142bb407a1411 Mon Sep 17 00:00:00 2001 From: Maxime Coste Date: Mon, 5 Nov 2012 19:15:42 +0100 Subject: Rework Window creation, avoid using the same window in multiple clients --- src/buffer.cc | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) (limited to 'src/buffer.cc') diff --git a/src/buffer.cc b/src/buffer.cc index 62be491e..e40383cd 100644 --- a/src/buffer.cc +++ b/src/buffer.cc @@ -388,18 +388,16 @@ void Buffer::erase(BufferIterator begin, BufferIterator end) do_erase(begin, end); } -Window* Buffer::get_or_create_window() +Window& Buffer::new_window() { - if (m_windows.empty()) - m_windows.push_front(std::unique_ptr(new Window(*this))); - - return m_windows.front().get(); + m_windows.emplace_back(new Window(*this)); + return *m_windows.back(); } -void Buffer::delete_window(Window* window) +void Buffer::delete_window(Window& window) { - assert(&window->buffer() == this); - auto window_it = std::find(m_windows.begin(), m_windows.end(), window); + assert(&window.buffer() == this); + auto window_it = std::find(m_windows.begin(), m_windows.end(), &window); assert(window_it != m_windows.end()); m_windows.erase(window_it); } -- cgit v1.2.3