void Widget::RenderTree(const vec2 &base) const { absPos = base + relPos; // Update origins if(isVisible()) { glPushMatrix(); glTranslatef(relPos.x, relPos.y, 0.0f); // draw ourselves draw(); // draw our children for(list<Widget*>::const_iterator i = m_Children.begin(); i != m_Children.end(); ++i) { Widget *widget = *i; widget->RenderTree(absPos); } glPopMatrix(); } }