Ignore:
Timestamp:
06/19/14 01:57:53 (11 years ago)
Author:
epyon
Message:
  • decoupling - root doesn't have to be an object
  • decoupling - gui::environment doesn't need a root object at all
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/gui/gui_environment.cc

    r257 r264  
    3636        m_screen = new screen( m_area );
    3737        m_renderer = new renderer( w, shader_path );
    38         root::add_child( m_screen );
    3938}
    4039
     
    4746{
    4847        element* result = new element( r );
    49         object_created( result );
    5048        if ( parent == nullptr ) parent = m_screen;
    5149        parent->add_child( result );
    5250        return result;
     51}
     52
     53void nv::gui::environment::destroy_element( element* e )
     54{
     55        destroy_children( e );
     56        e->detach();
     57        delete e;
    5358}
    5459
     
    9499}
    95100
    96 void environment::add_child( object* child )
     101void environment::add_child( element* child )
    97102{
    98         // TODO: check if element
    99103        m_screen->add_child( child );
    100104}
    101105
     106void environment::destroy_children( element* e )
     107{
     108        while ( !e->m_children.empty() )
     109        {
     110                destroy_element( (element*)e->m_children.front() );
     111        }
     112}
     113
     114
    102115environment::~environment()
    103116{
    104         destroy_children( this );
     117        destroy_element( m_screen );
    105118        delete m_renderer;
    106119}
Note: See TracChangeset for help on using the changeset viewer.