Index: /orxonox/trunk/gui/orxonox_gui_banner.cc
===================================================================
--- /orxonox/trunk/gui/orxonox_gui_banner.cc	(revision 3152)
+++ /orxonox/trunk/gui/orxonox_gui_banner.cc	(revision 3153)
@@ -35,10 +35,12 @@
   bannerImage = new Image ("banner.xpm");
   bannerEventBox->fill(bannerImage);
-  bannerEventBox->connectSignal ("button_press_event", this, LogoWindowOpen);
 
   // Banner Window //
   logoWindow = new Window("Logo");
-  logoWindow->connectSignal("destroy", this, LogoWindowClose);
-  logoWindow->connectSignal("delete_event", this, LogoWindowClose);
+    bannerEventBox->connectSignal ("button_press_event", logoWindow, Window::windowOpen);
+
+
+  logoWindow->connectSignal("destroy", logoWindow, Window::windowClose);
+  logoWindow->connectSignal("delete_event", logoWindow, Window::windowClose);
   logoEventBox = new EventBox();
   logoBox = new Box('v');
@@ -49,5 +51,5 @@
   logoBox->fill(logoLabel);
   logoBox->fill(logoEventBox);
-  logoEventBox->connectSignal("button_press_event",this,LogoWindowClose);
+  logoEventBox->connectSignal("button_press_event",logoWindow, Window::windowClose);
   
   logoWindow->fill (logoBox);
@@ -72,26 +74,3 @@
 }
 
-/**
-   \brief opens up the banner-window.\n
-   this is the Signal that does it. !!SIGNALS ARE STATIC!!
-   \param widget the widget that did it!
-   \param event the event that did it!
-   \param banner the Object that holds the banner-logo-window
-*/
-gint OrxonoxGuiBanner::LogoWindowOpen (GtkWidget* widget, GdkEvent* event, void* banner)
-{
-  static_cast<OrxonoxGuiBanner*>(banner)->logoWindow->open();
-}
 
-/**
-   \brief closes the banner-window.\n
-   this is the Signal that does it. !!SIGNALS ARE STATIC!!
-   \param widget the widget that did it!
-   \param event the event that did it!
-   \param banner the Object that holds the banner-logo-window
-*/
-gint OrxonoxGuiBanner::LogoWindowClose (GtkWidget *widget, GdkEvent* event, void* banner)
-{
-  static_cast<OrxonoxGuiBanner*>(banner)->logoWindow->close();
-  
-}
Index: /orxonox/trunk/gui/orxonox_gui_banner.h
===================================================================
--- /orxonox/trunk/gui/orxonox_gui_banner.h	(revision 3152)
+++ /orxonox/trunk/gui/orxonox_gui_banner.h	(revision 3153)
@@ -34,6 +34,4 @@
   Widget* getWidget ();
 
-  static gint LogoWindowOpen (GtkWidget *widget, GdkEvent* event, void* banner);
-  static gint LogoWindowClose (GtkWidget *widget, GdkEvent* event, void* banner);
 };
 
Index: /orxonox/trunk/gui/orxonox_gui_gtk.cc
===================================================================
--- /orxonox/trunk/gui/orxonox_gui_gtk.cc	(revision 3152)
+++ /orxonox/trunk/gui/orxonox_gui_gtk.cc	(revision 3153)
@@ -352,4 +352,28 @@
 }
 
+/**
+   \brief opens up a window (not topmost Window).
+   this is the Signal that does it. !!SIGNALS ARE STATIC!!
+   \param widget the widget that did it!
+   \param event the event that did it!
+   \param window the Window that should be opened
+*/
+gint Window::windowOpen (GtkWidget *widget, GdkEvent* event, void* window)
+{
+  static_cast<Window*>(window)->open();
+}
+
+/**
+   \brief closes a window (not topmost Window).
+   this is the Signal that does it. !!SIGNALS ARE STATIC!!
+   \param widget the widget that did it!
+   \param event the event that did it!
+   \param window the Window that should be closed
+*/
+gint Window::windowClose (GtkWidget *widget, GdkEvent* event, void* window)
+{
+  static_cast<Window*>(window)->close();
+  
+}
 /**
  * Quits the orxonox_GUI.
Index: /orxonox/trunk/gui/orxonox_gui_gtk.h
===================================================================
--- /orxonox/trunk/gui/orxonox_gui_gtk.h	(revision 3152)
+++ /orxonox/trunk/gui/orxonox_gui_gtk.h	(revision 3153)
@@ -97,7 +97,10 @@
   
   void setTitle (char* title);
-  void showall (); 
+  void showall ();
   void open();
   void close();
+
+  static gint windowOpen (GtkWidget *widget, GdkEvent* event, void* window);
+  static gint windowClose (GtkWidget *widget, GdkEvent* event, void* window);
   static gint orxonox_gui_quit (GtkWidget *widget, GdkEvent *event, gpointer data);
 };
Index: /orxonox/trunk/gui/orxonox_gui_keys.cc
===================================================================
--- /orxonox/trunk/gui/orxonox_gui_keys.cc	(revision 3152)
+++ /orxonox/trunk/gui/orxonox_gui_keys.cc	(revision 3153)
@@ -57,6 +57,4 @@
 Player::Player(char* player)
 {
-  openButton = new Button (player);
-  openButton->connectSignal("button_press_event", this, openWindowEvent);
 
   pKeyWindow = new Window("keys of player");
@@ -69,8 +67,12 @@
     
     closeButton = new Button("close");
-    closeButton->connectSignal("button_press_event", this, closeWindowEvent);
+    closeButton->connectSignal("button_press_event", pKeyWindow, Window::windowClose);
     pKeysBox->fill(closeButton);
    pKeyWindow->fill(pKeysBox);
    //  Window::addWindow(pKeyWindow);
+
+  openButton = new Button (player);
+  openButton->connectSignal("button_press_event", pKeyWindow, Window::windowOpen);
+
 }
 
@@ -100,14 +102,4 @@
 }
 
-gint Player::openWindowEvent (GtkWidget* widget, GdkEvent* event, void* player)
-{
-  static_cast<Player*>(player)->pKeyWindow->open();
-}
-
-gint Player::closeWindowEvent (GtkWidget* widget, GdkEvent* event, void* player)
-{
-  static_cast<Player*>(player)->pKeyWindow->close();
-}
-
 /**
    \brief Function which gets keystrokes
Index: /orxonox/trunk/gui/orxonox_gui_keys.h
===================================================================
--- /orxonox/trunk/gui/orxonox_gui_keys.h	(revision 3152)
+++ /orxonox/trunk/gui/orxonox_gui_keys.h	(revision 3153)
@@ -54,6 +54,4 @@
   Button* getOpenButton();
 
-  static gint openWindowEvent(GtkWidget* widget, GdkEvent* event, void* player);
-  static gint closeWindowEvent(GtkWidget* widget, GdkEvent* event, void* player);
   static gint key_cb(GtkWidget* w, GdkEventKey* event, void* widget);
   void setkey(KEYS key);
