From a14d80f83aebe75241bf63b4f3ffca3a5d952577 Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Mon, 6 Oct 2008 18:22:32 +0000 Subject: libui updates, support menu .ini files --- src/ui/widget.cc | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) (limited to 'src/ui/widget.cc') diff --git a/src/ui/widget.cc b/src/ui/widget.cc index 94260cb..068d60f 100644 --- a/src/ui/widget.cc +++ b/src/ui/widget.cc @@ -19,8 +19,8 @@ Widget::Widget(Widget *parent) { widget_label.assign("widget"); if (widget_parent) { - widget_palette = parent->widget_palette; parent->add_child(this); + widget_palette = parent->widget_palette; } else { widget_palette = 0; } @@ -28,30 +28,29 @@ Widget::Widget(Widget *parent) { Widget::~Widget() { - if (widget_parent) { - widget_parent->remove_child(this); - } - for (Children::iterator it = widget_children.begin(); it != widget_children.end(); it++) { - (*it)->widget_parent = 0; delete (*it); + (*it) = 0; } - widget_children.clear(); } size_t Widget::list(size_t indent) { + print(indent); size_t n = 1; - std::string marker(""); - con_print << aux::pad_left(marker, indent*2) << label() << " " << (size_t)(this) << std::endl; - for (Children::iterator it = widget_children.begin(); it != widget_children.end(); it++) { n += (*it)->list(indent+1); } return n; } +void Widget::print(size_t indent) +{ + std::string marker(""); + con_print << aux::pad_left(marker, indent*2) << label() << std::endl; +} + void Widget::show() { widget_visible = true; @@ -128,9 +127,9 @@ void Widget::add_child(Widget *child) void Widget::remove_child(Widget *child) { - Children::iterator it = find_child(child); if (it != widget_children.end()) { + delete (*it); widget_children.erase(it); } } @@ -172,8 +171,7 @@ void Widget::draw_background() if (palette()) render::gl::color(palette()->background()); - math::Vector2f v(to_global(location())); - render::primitives::rectangle(v, size()); + render::primitives::rectangle(global_location(), size()); } void Widget::draw_border() @@ -183,8 +181,7 @@ void Widget::draw_border() if (palette()) render::gl::color(palette()->border()); - math::Vector2f v(to_global(location())); - render::primitives::border(v, size()); + render::primitives::border(global_location(), size()); } } -- cgit v1.2.3