X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Fscreen.cc;h=6525150bc478e4af53ea5cc07cde2908c5f835d2;hb=ff98438acca3ae7ca0b2be66cb39cc29643ecaba;hp=6bc04ad133382f3cb93109ee23d32a9ef7aac668;hpb=dd6f90684899e8e26e653af4b2e7e7eab1abf798;p=chaz%2Fopenbox diff --git a/src/screen.cc b/src/screen.cc index 6bc04ad1..6525150b 100644 --- a/src/screen.cc +++ b/src/screen.cc @@ -89,6 +89,7 @@ Screen::Screen(int screen) } _style.load(sconfig); */ + otk::display->renderControl(_number)->drawRoot(*_style.rootColor()); // set up notification of netwm support changeSupportedAtoms(); @@ -470,6 +471,12 @@ void Screen::manageWindow(Window window) // create the decoration frame for the client window client->frame = new Frame(client, &_style); + // register the plate for events (map req's) + // this involves removing itself from the handler list first, since it is + // auto added to the list, being a widget. we won't get any events on the + // plate except for events for the client (SubstructureRedirectMask) + openbox->clearHandler(client->frame->plate()); + openbox->registerHandler(client->frame->plate(), client); // add to the wm's map openbox->addClient(client->frame->window(), client); @@ -478,7 +485,7 @@ void Screen::manageWindow(Window window) openbox->addClient(client->frame->label(), client); openbox->addClient(client->frame->button_max(), client); openbox->addClient(client->frame->button_iconify(), client); - openbox->addClient(client->frame->button_stick(), client); + openbox->addClient(client->frame->button_alldesk(), client); openbox->addClient(client->frame->button_close(), client); openbox->addClient(client->frame->handle(), client); openbox->addClient(client->frame->grip_left(), client); @@ -543,7 +550,7 @@ void Screen::unmanageWindow(Client *client) openbox->removeClient(frame->label()); openbox->removeClient(frame->button_max()); openbox->removeClient(frame->button_iconify()); - openbox->removeClient(frame->button_stick()); + openbox->removeClient(frame->button_alldesk()); openbox->removeClient(frame->button_close()); openbox->removeClient(frame->handle()); openbox->removeClient(frame->grip_left()); @@ -594,7 +601,7 @@ void Screen::lowerWindow(Client *client) assert(!_stacking.empty()); // this would be bad Client::List::iterator it = --_stacking.end(); - Client::List::const_iterator end = _stacking.begin(); + const Client::List::iterator end = _stacking.begin(); for (; it != end && (*it)->layer() < client->layer(); --it); if (*it == client) return; // already the bottom, return @@ -619,7 +626,7 @@ void Screen::raiseWindow(Client *client) _stacking.remove(client); Client::List::iterator it = _stacking.begin(); - Client::List::const_iterator end = _stacking.end(); + const Client::List::iterator end = _stacking.end(); // the stacking list is from highest to lowest for (; it != end && (*it)->layer() > client->layer(); ++it); @@ -764,30 +771,7 @@ void Screen::mapRequestHandler(const XMapRequestEvent &e) printf("MapRequest for 0x%lx\n", e.window); #endif // DEBUG - /* - MapRequest events come here even after the window exists instead of going - right to the client window, because of how they are sent and their struct - layout. - */ - Client *c = openbox->findClient(e.window); - - if (c) { - // send a net_active_window message - XEvent ce; - ce.xclient.type = ClientMessage; - ce.xclient.message_type = otk::Property::atoms.net_active_window; - ce.xclient.display = **otk::display; - ce.xclient.window = c->window(); - ce.xclient.format = 32; - ce.xclient.data.l[0] = 0l; - ce.xclient.data.l[1] = 0l; - ce.xclient.data.l[2] = 0l; - ce.xclient.data.l[3] = 0l; - ce.xclient.data.l[4] = 0l; - XSendEvent(**otk::display, _info->rootWindow(), false, - SubstructureRedirectMask | SubstructureNotifyMask, - &ce); - } else - manageWindow(e.window); + manageWindow(e.window); } + }