diff options
| author | Maxime Coste <frrrwww@gmail.com> | 2012-11-05 19:15:42 +0100 |
|---|---|---|
| committer | Maxime Coste <frrrwww@gmail.com> | 2012-11-05 19:15:42 +0100 |
| commit | fedabb417604ceeae1f30e486f2142bb407a1411 (patch) | |
| tree | dbf24860424b7170bf397d2f1da0844eb5d9d89c /src/buffer.cc | |
| parent | 42315c4b5c995ba13b3d20d9abf3df5129ce3015 (diff) | |
Rework Window creation, avoid using the same window in multiple clients
Diffstat (limited to 'src/buffer.cc')
| -rw-r--r-- | src/buffer.cc | 14 |
1 files changed, 6 insertions, 8 deletions
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<Window>(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); } |
