Index: /orxonox/trunk/gui/orxonox_gui_banner.cc
===================================================================
--- /orxonox/trunk/gui/orxonox_gui_banner.cc	(revision 3147)
+++ /orxonox/trunk/gui/orxonox_gui_banner.cc	(revision 3148)
@@ -31,9 +31,27 @@
 OrxonoxGuiBanner::OrxonoxGuiBanner ()
 {
+  // Banner Itself //
   bannerEventBox = new EventBox ("BannerEventBox");
   bannerImage = new Image ("banner.xpm");
   bannerEventBox->fill(bannerImage);
   bannerEventBox->connectSignal ("button_press_event", this, LogoWindowOpen);
-  logoWindowIsOpen = -1;
+
+  // Banner Window //
+  logoWindow = new Window("Logo");
+  logoWindow->connectSignal("destroy", this, LogoWindowClose);
+  logoWindow->connectSignal("delete_event", this, LogoWindowClose);
+  logoEventBox = new EventBox();
+  logoBox = new Box('v');
+  logoLabel = new Label("OrxOnoX, " PACKAGE_VERSION);
+  logoImage = new Image("banner.xpm");
+  logoEventBox->fill(logoImage);
+  
+  logoBox->fill(logoLabel);
+  logoBox->fill(logoEventBox);
+  logoEventBox->connectSignal("button_press_event",this,LogoWindowClose);
+  
+  logoWindow->fill (logoBox);
+  
+  Window::addWindow (logoWindow);
 }
 
@@ -50,33 +68,7 @@
     it shows it if it has been created
 */
-void OrxonoxGuiBanner::logoWindowNew()
+void OrxonoxGuiBanner::logoWindowOpen()
 {
-  if (logoWindowIsOpen <= 0)
-    {
-      if (logoWindowIsOpen < 0)
-	{
-	  // creating new Logo Window //
-	  logoWindow = new Window("Logo");
-	  logoWindow->connectSignal("destroy", this, LogoWindowClose);
-	  logoWindow->connectSignal("delete_event", this, LogoWindowClose);
-	  logoEventBox = new EventBox();
-	  logoBox = new Box('v');
-	  logoLabel = new Label("OrxOnoX, " PACKAGE_VERSION);
-	  logoImage = new Image("banner.xpm");
-	  logoEventBox->fill(logoImage);
-
-	  logoBox->fill(logoLabel);
-	  logoBox->fill(logoEventBox);
-	  logoEventBox->connectSignal("button_press_event",this,LogoWindowClose);
-
-	  logoWindow->fill (logoBox);
-	  
-	}
-      //  showing Window //
-      logoWindowIsOpen = 1;
-     
-      
-      logoWindow->showall();
-    }
+  logoWindow->open();
 }
 
@@ -86,6 +78,5 @@
 void OrxonoxGuiBanner::logoWindowClose()
 {
-  logoWindowIsOpen = 0;
-  logoWindow->hide();
+  logoWindow->close();
 }
 
@@ -106,7 +97,7 @@
    \param banner the Object that holds the banner-logo-window
 */
-gint LogoWindowOpen (GtkWidget* widget, GdkEvent* event, void* banner)
+gint OrxonoxGuiBanner::LogoWindowOpen (GtkWidget* widget, GdkEvent* event, void* banner)
 {
-  static_cast<OrxonoxGuiBanner*>(banner)->logoWindowNew();
+  static_cast<OrxonoxGuiBanner*>(banner)->logoWindowOpen();
 }
 
@@ -118,5 +109,5 @@
    \param banner the Object that holds the banner-logo-window
 */
-gint LogoWindowClose (GtkWidget *widget, GdkEvent* event, void* banner)
+gint OrxonoxGuiBanner::LogoWindowClose (GtkWidget *widget, GdkEvent* event, void* banner)
 {
   static_cast<OrxonoxGuiBanner*>(banner)->logoWindowClose();
Index: /orxonox/trunk/gui/orxonox_gui_banner.h
===================================================================
--- /orxonox/trunk/gui/orxonox_gui_banner.h	(revision 3147)
+++ /orxonox/trunk/gui/orxonox_gui_banner.h	(revision 3148)
@@ -23,5 +23,4 @@
   // the logo Window
   Window* logoWindow;
-  int logoWindowIsOpen;
   EventBox* logoEventBox;
   Box* logoBox;
@@ -33,11 +32,12 @@
   ~OrxonoxGuiBanner ();
 
-  void logoWindowNew();
+  void logoWindowOpen();
   void logoWindowClose();
   Widget* getWidget ();
+
+  static gint LogoWindowOpen (GtkWidget *widget, GdkEvent* event, void* banner);
+  static gint LogoWindowClose (GtkWidget *widget, GdkEvent* event, void* banner);
 };
 
-gint LogoWindowOpen (GtkWidget *widget, GdkEvent* event, void* banner);
-gint LogoWindowClose (GtkWidget *widget, GdkEvent* event, void* banner);
 
 #endif /* _ORXONOX_GUI_BANNER_H */
Index: /orxonox/trunk/gui/orxonox_gui_gtk.cc
===================================================================
--- /orxonox/trunk/gui/orxonox_gui_gtk.cc	(revision 3147)
+++ /orxonox/trunk/gui/orxonox_gui_gtk.cc	(revision 3148)
@@ -239,4 +239,24 @@
 /* WINDOW */
 
+Window* Window::mainWindow = NULL;
+
+void Window::addWindow(Window* windowToAdd)
+{
+  if (!mainWindow)
+    {
+      mainWindow = windowToAdd;
+      return;
+    }
+
+  Widget* tmpWindow = mainWindow;
+  while (tmpWindow->next)
+    tmpWindow = tmpWindow->next;
+  tmpWindow->next = windowToAdd;
+  
+  return;
+}
+      
+
+
 /**
    \brief Creating a new Window without a Name
@@ -264,4 +284,7 @@
 void Window::init()
 {
+  if (!mainWindow)
+    mainWindow = this;
+
   isOpen = false;
 
@@ -318,6 +341,10 @@
 void Window::open()
 {
-  isOpen = true;
-  gtk_grab_add(widget);
+  if (this != mainWindow)
+    {
+      isOpen = true;
+      gtk_widget_show_all(widget);
+      gtk_grab_add(widget);
+    }
 }
 
@@ -327,6 +354,10 @@
 void Window::close()
 {
-  isOpen = false;
-  gtk_grab_remove(widget);
+  if (this != mainWindow)
+    {
+      isOpen = false;
+      gtk_grab_remove(widget);
+      gtk_widget_hide (widget);
+    }
 }
 
Index: /orxonox/trunk/gui/orxonox_gui_gtk.h
===================================================================
--- /orxonox/trunk/gui/orxonox_gui_gtk.h	(revision 3147)
+++ /orxonox/trunk/gui/orxonox_gui_gtk.h	(revision 3148)
@@ -89,4 +89,7 @@
   bool isOpen;
  public:
+  static Window* mainWindow;
+  static void addWindow(Window* windowToAdd);
+
   static Window* lastWindow;
   Window (void);
