X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fcontainer.cpp;h=4c0ce93fa6fda1a5fca02860cc793e13e9bb2a03;hb=033732b500a35f3737bad515349d884cb3f123f0;hp=b2b8c56adaec281394847f0d954d9f516e5859a6;hpb=91997dd3189b93a67179822ec2fed5f2a7bddb74;p=libs%2Fgltk.git diff --git a/source/container.cpp b/source/container.cpp index b2b8c56..4c0ce93 100644 --- a/source/container.cpp +++ b/source/container.cpp @@ -1,7 +1,7 @@ /* $Id$ This file is part of libmspgltk -Copyright © 2009 Mikko Rasa, Mikkosoft Productions +Copyright © 2009-2011 Mikko Rasa, Mikkosoft Productions Distributed under the LGPL */ @@ -25,8 +25,9 @@ Container::~Container() void Container::add(Widget &wdg) { - set_parent(wdg, this); + wdg.set_parent(this); children.push_back(create_child(&wdg)); + on_child_added(wdg); } void Container::remove(Widget &wdg) @@ -34,15 +35,21 @@ void Container::remove(Widget &wdg) for(list::iterator i=children.begin(); i!=children.end(); ++i) if((*i)->widget==&wdg) { - set_parent(wdg, 0); + wdg.set_parent(0); delete *i; children.erase(i); + on_child_removed(wdg); return; } throw InvalidState("That Widget is not in this Container"); } +Container::Child *Container::create_child(Widget *wdg) +{ + return new Child(*this, wdg); +} + list Container::get_children() const { list result; @@ -139,18 +146,13 @@ void Container::pointer_leave() click_focus = 0; } -Container::Child *Container::create_child(Widget *wdg) -{ - return new Child(*this, wdg); -} - void Container::on_reparent() { for(list::iterator i=children.begin(); i!=children.end(); ++i) { if(Container *c = dynamic_cast((*i)->widget)) c->on_reparent(); - update_style(*(*i)->widget); + (*i)->widget->update_style(); } }