Index: /branches/gui/src/lib/gui/gl_gui/glgui_box.cc
===================================================================
--- /branches/gui/src/lib/gui/gl_gui/glgui_box.cc	(revision 8002)
+++ /branches/gui/src/lib/gui/gl_gui/glgui_box.cc	(revision 8003)
@@ -50,4 +50,7 @@
 
     this->children.push_back(widget);
+    this->addChild2D(widget);
+
+    this->resize();
   }
 
@@ -57,10 +60,18 @@
     assert(widget == NULL);
 
-    this->children.remove(widget);
+    std::vector<GLGuiWidget*>::iterator delWidget = std::find(this->children.begin(), this->children.end(), widget);
+    if (delWidget != this->children.end())
+      this->children.erase(delWidget);
+  }
+
+  void GLGuiBox::clear()
+  {
+    this->children.clear();
+    this->resize();
   }
 
   void GLGuiBox::showAll()
   {
-    std::list<GLGuiWidget*>::iterator itC = this->children.begin();
+    std::vector<GLGuiWidget*>::iterator itC = this->children.begin();
     while (itC != this->children.end())
     {
@@ -77,5 +88,5 @@
   void GLGuiBox::hideAll()
   {
-    std::list<GLGuiWidget*>::iterator itC = this->children.begin();
+    std::vector<GLGuiWidget*>::iterator itC = this->children.begin();
     while (itC != this->children.end())
     {
@@ -90,10 +101,32 @@
   }
 
+  void GLGuiBox::resize()
+  {
+    float height = 0.0f;
+    float width = 0.0f;
+    std::vector<GLGuiWidget*>::iterator widget;
+
+    // find out how big the Widgets are.
+    for (widget = this->children.begin(); widget != this->children.end(); ++widget)
+    {
+      (*widget)->setAbsCoor2D(0, height);
+      height += (*widget)->getSizeY2D();
+      width = fmax(width, (*widget)->getSizeX2D());
+    }
+
+    GLGuiWidget::resize();
+    // resize everything.
+    //for (widget = this->children.begin(); widget != this->children.end(); ++widget)
+    //{}
+  }
 
   /**
-   * draws the GLGuiBox
+   * @brief draws the GLGuiBox
    */
   void GLGuiBox::draw() const
   {
+    this->beginDraw();
+    GLGuiWidget::draw();
+    this->endDraw();
   }
 }
Index: /branches/gui/src/lib/gui/gl_gui/glgui_box.h
===================================================================
--- /branches/gui/src/lib/gui/gl_gui/glgui_box.h	(revision 8002)
+++ /branches/gui/src/lib/gui/gl_gui/glgui_box.h	(revision 8003)
@@ -24,5 +24,4 @@
     virtual ~GLGuiBox();
 
-    void init();
     /** @returns the Orientation of the Box */
     OrxGui::Orientation orientation() const { return this->_orientation; };
@@ -38,9 +37,12 @@
     virtual void draw() const;
 
-  private:
+  protected:
     virtual void resize();
 
-    Orientation              _orientation;
-    std::list<GLGuiWidget*>  children;
+  private:
+    void init();
+
+    Orientation                _orientation;
+    std::vector<GLGuiWidget*>  children;
   };
 }
Index: /branches/gui/src/story_entities/simple_game_menu.cc
===================================================================
--- /branches/gui/src/story_entities/simple_game_menu.cc	(revision 8002)
+++ /branches/gui/src/story_entities/simple_game_menu.cc	(revision 8003)
@@ -85,29 +85,38 @@
 void SimpleGameMenu::enterGui()
 {
-  ///
-  OrxGui::GLGuiButton* dnpb = new OrxGui::GLGuiCheckButton("Push the button");
-  dnpb->show();
-  dnpb->setAbsCoor2D(350, 50);
-
-
-  OrxGui::GLGuiPushButton* rdnpb = new OrxGui::GLGuiPushButton("Quit ORXONOX!!");
-  rdnpb->show();
-  rdnpb->setAbsCoor2D(200, 180);
-  rdnpb->connect(SIGNAL(rdnpb, released), this, SLOT(SimpleGameMenu, quitMenu));
-
-  OrxGui::GLGuiInputLine* input = new OrxGui::GLGuiInputLine();
-  input->setText("input some text here");
-  input->connect(SIGNAL(input, textChanged), this, SLOT(SimpleGameMenu, TEST));
-  input->show();
-  input->setAbsCoor2D(200, 230);
-
-  OrxGui::GLGuiSlider* slider = new OrxGui::GLGuiSlider();
-  slider->connect(SIGNAL(slider, valueChanged), this, SLOT(SimpleGameMenu, TEST));
-  slider->connect(SIGNAL(slider, valueChanged), slider, SLOT(OrxGui::GLGuiWidget, setBackgroundColor));
-  slider->setRange(0, 1);
-  slider->setValue(slider->min());
-  slider->show();
-  slider->setAbsCoor2D(200, 270);
-
+
+  OrxGui::GLGuiBox* box = new OrxGui::GLGuiBox();
+  {
+    ///
+    OrxGui::GLGuiButton* dnpb = new OrxGui::GLGuiCheckButton("Push the button");
+    dnpb->show();
+    dnpb->setAbsCoor2D(350, 50);
+
+    box->pack(dnpb);
+
+    OrxGui::GLGuiPushButton* rdnpb = new OrxGui::GLGuiPushButton("Quit ORXONOX!!");
+    rdnpb->show();
+    rdnpb->setAbsCoor2D(200, 180);
+    rdnpb->connect(SIGNAL(rdnpb, released), this, SLOT(SimpleGameMenu, quitMenu));
+
+    box->pack(rdnpb);
+
+    OrxGui::GLGuiInputLine* input = new OrxGui::GLGuiInputLine();
+    input->setText("input some text here");
+    input->connect(SIGNAL(input, textChanged), this, SLOT(SimpleGameMenu, TEST));
+    input->show();
+    input->setAbsCoor2D(200, 230);
+    box->pack(input);
+
+    OrxGui::GLGuiSlider* slider = new OrxGui::GLGuiSlider();
+    slider->connect(SIGNAL(slider, valueChanged), this, SLOT(SimpleGameMenu, TEST));
+    slider->connect(SIGNAL(slider, valueChanged), dnpb, SLOT(OrxGui::GLGuiWidget, setBackgroundColor));
+    slider->setRange(0, 1);
+    slider->setValue(slider->min());
+    slider->show();
+    slider->setAbsCoor2D(200, 270);
+    box->pack(slider);
+  }
+  box->setAbsCoor2D(50, 200);
   /////
 }
@@ -133,12 +142,12 @@
   system ((std::string("firefox ") + URL).c_str());
 #elif defined __OSX__
-    CFURLRef url_handle = CFURLCreateWithBytes (NULL, (UInt8 *)URL.c_str(), URL.size(),
-                                         kCFStringEncodingASCII, NULL);
-    LSOpenCFURLRef (url_handle, NULL);
-    CFRelease (url_handle);
+  CFURLRef url_handle = CFURLCreateWithBytes (NULL, (UInt8 *)URL.c_str(), URL.size(),
+                        kCFStringEncodingASCII, NULL);
+  LSOpenCFURLRef (url_handle, NULL);
+  CFRelease (url_handle);
 #elif defined __WIN32__
-    ShellExecute(GetActiveWindow(),
-                 "open", URL.c_str(), NULL, NULL, SW_SHOWNORMAL);
-  }
+  ShellExecute(GetActiveWindow(),
+               "open", URL.c_str(), NULL, NULL, SW_SHOWNORMAL);
+}
 #endif
   PRINTF(3)("loaded external webpage %s\n", URL.c_str());
