/* ui/window.cc This file is part of the Osirion project and is distributed under the terms of the GNU General Public License version 2 */ #include "ui/paint.h" #include "ui/window.h" namespace ui { Window::Window(Window *parent) : Widget(static_cast(parent)) { set_label("window"); set_border(true); if (parent) { parent->add_window(this); } } Window::~Window() { window_children.clear(); } void Window::draw_border() { if (!border()) return; paint::color(palette()->foreground()); paint::border(global_location(), size()); } Window::Windows::iterator Window::find_window(Window *window) { Windows::iterator it; for (it = window_children.begin(); it != window_children.end(); it++) { if ((*it) == window) return it; } return it; } void Window::add_window(Window *window) { Windows::iterator it = find_window(window); if (it == window_children.end()) { window_children.push_back(window); } } void Window::remove_window(Window *window) { Windows::iterator it = find_window(window); if (it != window_children.end()) { remove_child(*it); window_children.erase(it); } } }