Serenity Operating System
1/*
2 * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
3 *
4 * SPDX-License-Identifier: BSD-2-Clause
5 */
6
7#include "WindowList.h"
8
9WindowList& WindowList::the()
10{
11 static WindowList s_the;
12 return s_the;
13}
14
15Window* WindowList::window(WindowIdentifier const& identifier)
16{
17 auto it = m_windows.find(identifier);
18 if (it != m_windows.end())
19 return it->value;
20 return nullptr;
21}
22
23Window& WindowList::ensure_window(WindowIdentifier const& identifier)
24{
25 auto it = m_windows.find(identifier);
26 if (it != m_windows.end())
27 return *it->value;
28 auto window = make<Window>(identifier);
29 auto& window_ref = *window;
30 m_windows.set(identifier, move(window));
31 return window_ref;
32}
33
34void WindowList::remove_window(WindowIdentifier const& identifier)
35{
36 m_windows.remove(identifier);
37}