Serenity Operating System
at master 37 lines 835 B view raw
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}