X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Fscreen.cc;h=adcae6d9eabe9da4e8d575ffb001c0e55c46fab2;hb=4147215afa51dd79cbc474a79478deff4ca9ad71;hp=60208ef0aa9d4215d7ec0e3a2335a4d584772115;hpb=5de35ba1f75b4004bebec70c582b17f2f8820439;p=chaz%2Fopenbox diff --git a/src/screen.cc b/src/screen.cc index 60208ef0..adcae6d9 100644 --- a/src/screen.cc +++ b/src/screen.cc @@ -134,7 +134,7 @@ Screen::Screen(int screen) openbox->registerHandler(_info->rootWindow(), this); // call the python Startup callbacks - EventData data(_number, 0, EventAction::Shutdown, 0); + EventData data(_number, 0, EventAction::Startup, 0); openbox->bindings()->fireEvent(&data); } @@ -224,7 +224,7 @@ void Screen::updateStrut() void Screen::calcArea() { -// otk::Rect old_area = _area; + otk::Rect old_area = _area; /* #ifdef XINERAMA @@ -260,9 +260,13 @@ void Screen::calcArea() } #endif // XINERAMA */ - - //if (old_area != _area) - // XXX: re-maximize windows + + if (old_area != _area) { + // the area has changed, adjust all the maximized windows + Client::List::iterator it, end = clients.end(); + for (it = clients.begin(); it != end; ++it) + (*it)->remaximize(); + } changeWorkArea(); } @@ -512,8 +516,7 @@ void Screen::manageWindow(Window window) // reparent the client to the frame client->frame->grabClient(); - if (!(openbox->state() == Openbox::State_Starting || - client->positionRequested())) { + if (openbox->state() != Openbox::State_Starting) { // position the window intelligenty .. hopefully :) // call the python PLACEWINDOW binding EventData data(_number, client, EventAction::PlaceWindow, 0); @@ -536,7 +539,7 @@ void Screen::manageWindow(Window window) // add to the screen's list clients.push_back(client); // once the client is in the list, update our strut to include the new - // client's + // client's (it is good that this happens after window placement!) updateStrut(); // this puts into the stacking order, then raises it _stacking.push_back(client);