]> Dogcows Code - chaz/openbox/blobdiff - src/xeventhandler.cc
not using any old blackbox classes anymore!
[chaz/openbox] / src / xeventhandler.cc
index 3225fb460e76519dab824021f1bc261b2c3c0612..560aace26a242cee9845ad5cf5c59ab190180fce 100644 (file)
@@ -8,13 +8,10 @@
 #include "client.hh"
 #include "frame.hh"
 #include "openbox.hh"
+#include "screen.hh"
 #include "otk/display.hh"
 #include "otk/rect.hh"
 
-// XXX: REMOVE THIS SOON!!#!
-#include "blackbox.hh"
-#include "screen.hh"
-
 extern "C" {
 #include <X11/Xlib.h>
 #include <X11/Xutil.h>
@@ -156,16 +153,6 @@ void OBXEventHandler::manageWindow(int screen, Window window)
 
   // create the OBClient class, which gets all of the hints on the window
   Openbox::instance->addClient(window, client = new OBClient(screen, window));
-  // add all the client's decoration windows as event handlers for the client
-  Openbox::instance->addClient(client->frame->titlebar(), client);
-  Openbox::instance->addClient(client->frame->buttonIconify(), client);
-  Openbox::instance->addClient(client->frame->buttonMax(), client);
-  Openbox::instance->addClient(client->frame->buttonStick(), client);
-  Openbox::instance->addClient(client->frame->buttonClose(), client);
-  Openbox::instance->addClient(client->frame->label(), client);
-  Openbox::instance->addClient(client->frame->handle(), client);
-  Openbox::instance->addClient(client->frame->gripLeft(), client);
-  Openbox::instance->addClient(client->frame->gripRight(), client);
 
   // we dont want a border on the client
   XSetWindowBorderWidth(otk::OBDisplay::display, window, 0);
@@ -178,11 +165,21 @@ void OBXEventHandler::manageWindow(int screen, Window window)
     // XXX: position the window intelligenty
   }
 
-  // XXX: store a style somewheres cooler!!
-  otk::Style *style = ((Blackbox*)Openbox::instance)->
-    searchScreen(RootWindow(otk::OBDisplay::display, screen))->
-    getWindowStyle();
-  client->frame = new OBFrame(client, style);
+  // create the decoration frame for the client window
+  client->frame = new OBFrame(client,
+                              Openbox::instance->screen(screen)->style());
+
+  // add all the client's decoration windows as event handlers for the client
+  Openbox::instance->addClient(client->frame->window(), client);
+  Openbox::instance->addClient(client->frame->titlebar(), client);
+  Openbox::instance->addClient(client->frame->buttonIconify(), client);
+  Openbox::instance->addClient(client->frame->buttonMax(), client);
+  Openbox::instance->addClient(client->frame->buttonStick(), client);
+  Openbox::instance->addClient(client->frame->buttonClose(), client);
+  Openbox::instance->addClient(client->frame->label(), client);
+  Openbox::instance->addClient(client->frame->handle(), client);
+  Openbox::instance->addClient(client->frame->gripLeft(), client);
+  Openbox::instance->addClient(client->frame->gripRight(), client);
   
   // XXX: if on the current desktop..
   XMapWindow(otk::OBDisplay::display, client->frame->window());
@@ -212,6 +209,7 @@ void OBXEventHandler::unmanageWindow(OBClient *client)
   // remove the client class from the search list
   Openbox::instance->removeClient(client->window());
   // remove the frame's decor elements as event handlers for the client
+  Openbox::instance->removeClient(frame->window());
   Openbox::instance->removeClient(frame->titlebar());
   Openbox::instance->removeClient(frame->buttonIconify());
   Openbox::instance->removeClient(frame->buttonMax());
This page took 0.020684 seconds and 4 git commands to generate.