#include "rootcontainer.h" namespace SDLwidgets { bool RootContainer::handleEvent( SDL_Event* event ) { if ( event->type == SDL_KEYDOWN && _focus_manager.getFocusedWidget() ) { return _focus_manager.handleEvent( event ); } else { for ( std::vector::const_iterator iter = _children.begin(); iter != _children.end(); iter++ ) { if ( (*iter)->handleEvent( event ) ) return true; } } return false; } void RootContainer::draw() const { for ( std::vector::const_iterator iter = _children.begin(); iter != _children.end(); iter++ ) { (*iter)->draw( _surface ); } } void RootContainer::remove( Widget* widget ) { // remove focus from the currently focused widget if it is // contained in the widget to be removed if ( _focus_manager.getFocusedWidget() && contains( widget ) ) _focus_manager.removeFocus( _focus_manager.getFocusedWidget() ); // now remove the widget WidgetComposite::remove( widget ); } void RootContainer::removeAll() { // also remove focus _focus_manager.removeFocus( _focus_manager.getFocusedWidget() ); WidgetComposite::removeAll(); } void RootContainer::removeAndDeleteAll() { // also remove focus _focus_manager.removeFocus( _focus_manager.getFocusedWidget() ); WidgetComposite::removeAndDeleteAll(); } }