X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Fscreen.cc;h=16e37df61a731502f4a10349162cf3502f3fe77f;hb=7f561a6a7acee71d55eecc9ed2bd278147ce2536;hp=6eaa5cc577190461a0ca2fd6022b5705ddfe758e;hpb=7fe3301e7ea905a8a76d54c22751f3d8a346e28b;p=chaz%2Fopenbox diff --git a/src/screen.cc b/src/screen.cc index 6eaa5cc5..16e37df6 100644 --- a/src/screen.cc +++ b/src/screen.cc @@ -67,12 +67,6 @@ Screen::Screen(int screen) XDefineCursor(**otk::display, _info->rootWindow(), openbox->cursors().session); - // initialize the screen's style - otk::RenderStyle::setStyle(_number, _config.theme); - // draw the root window - otk::bexec("obsetroot " + otk::RenderStyle::style(_number)->rootArgs(), - _info->displayString()); - // set up notification of netwm support changeSupportedAtoms(); @@ -83,17 +77,9 @@ Screen::Screen(int screen) otk::Property::atoms.net_desktop_geometry, otk::Property::atoms.cardinal, geometry, 2); - // Set the net_desktop_names property - otk::Property::set(_info->rootWindow(), - otk::Property::atoms.net_desktop_names, - otk::Property::utf8, _config.desktop_names); - // the above set() will cause the updateDesktopNames to fire right away so - // we have a list of desktop names - _desktop = 0; - changeNumDesktops(_config.num_desktops); // set the hint - + changeNumDesktops(4); // set the hint changeDesktop(0); // set the hint // don't start in showing-desktop mode @@ -211,7 +197,7 @@ void Screen::updateDesktopLayout() otk::Property::atoms.net_desktop_layout, otk::Property::atoms.cardinal, &num, &data)) { - if (num >= 4) { + if (num == 4) { if (data[0] == _NET_WM_ORIENTATION_VERT) _layout.orientation = DesktopLayout::Vertical; if (data[3] == _NET_WM_TOPRIGHT) @@ -267,7 +253,7 @@ void Screen::updateStruts() for (sit = _struts.begin(); sit != send; ++sit) sit->left = sit->right = sit->top = sit->bottom = 0; - ClientList::const_iterator it, end = clients.end(); + std::list::const_iterator it, end = clients.end(); for (it = clients.begin(); it != end; ++it) { if ((*it)->iconic()) continue; // these dont count in the strut @@ -331,7 +317,7 @@ void Screen::changeWorkArea() */ if (old_area != _area[i]) { // the area has changed, adjust all the maximized windows - ClientList::iterator it, end = clients.end(); + std::list::iterator it, end = clients.end(); for (it = clients.begin(); it != end; ++it) if (i < _num_desktops) { if ((*it)->desktop() == i) @@ -455,8 +441,8 @@ void Screen::changeClientList() windows = new Window[size]; win_it = windows; - ClientList::const_iterator it = clients.begin(); - const ClientList::const_iterator end = clients.end(); + std::list::const_iterator it = clients.begin(); + const std::list::const_iterator end = clients.end(); for (; it != end; ++it, ++win_it) *win_it = (*it)->window(); } else @@ -486,8 +472,8 @@ void Screen::changeStackingList() windows = new Window[size]; win_it = windows; - ClientList::const_reverse_iterator it = _stacking.rbegin(); - const ClientList::const_reverse_iterator end = _stacking.rend(); + std::list::const_reverse_iterator it = _stacking.rbegin(); + const std::list::const_reverse_iterator end = _stacking.rend(); for (; it != end; ++it, ++win_it) *win_it = (*it)->window(); } else @@ -689,8 +675,8 @@ void Screen::lowerWindow(Client *client) assert(!_stacking.empty()); // this would be bad - ClientList::iterator it = --_stacking.end(); - const ClientList::iterator end = _stacking.begin(); + std::list::iterator it = --_stacking.end(); + const std::list::iterator end = _stacking.begin(); if (client->modal() && client->transientFor()) { // don't let a modal window lower below its transient_for @@ -698,7 +684,8 @@ void Screen::lowerWindow(Client *client) assert(it != _stacking.end()); wins[0] = (it == _stacking.begin() ? _focuswindow : - ((*(--ClientList::const_iterator(it)))->frame->window())); + ((*(--std::list::const_iterator(it)))-> + frame->window())); wins[1] = client->frame->window(); if (wins[0] == wins[1]) return; // already right above the window @@ -732,8 +719,8 @@ void Screen::raiseWindow(Client *client) // remove the client before looking so we can't run into ourselves _stacking.remove(client); - ClientList::iterator it = _stacking.begin(); - const ClientList::iterator end = _stacking.end(); + std::list::iterator it = _stacking.begin(); + const std::list::iterator end = _stacking.end(); // the stacking list is from highest to lowest for (; it != end && ((*it)->layer() > client->layer() || m == *it); ++it); @@ -743,7 +730,7 @@ void Screen::raiseWindow(Client *client) otherwise, we want to stack under the previous window in the stack. */ wins[0] = (it == _stacking.begin() ? _focuswindow : - ((*(--ClientList::const_iterator(it)))->frame->window())); + ((*(--std::list::const_iterator(it)))->frame->window())); wins[1] = client->frame->window(); _stacking.insert(it, client); @@ -768,7 +755,7 @@ void Screen::changeDesktop(unsigned int desktop) if (old == _desktop) return; - ClientList::iterator it, end = clients.end(); + std::list::iterator it, end = clients.end(); for (it = clients.begin(); it != end; ++it) (*it)->showhide(); @@ -784,7 +771,7 @@ void Screen::changeNumDesktops(unsigned int num) if (!(num > 0)) return; // move windows on desktops that will no longer exist! - ClientList::iterator it, end = clients.end(); + std::list::iterator it, end = clients.end(); for (it = clients.begin(); it != end; ++it) { unsigned int d = (*it)->desktop(); if (d >= num && d != 0xffffffff) { @@ -795,7 +782,7 @@ void Screen::changeNumDesktops(unsigned int num) ce.xclient.window = (*it)->window(); ce.xclient.format = 32; ce.xclient.data.l[0] = num - 1; - XSendEvent(**otk::display, _info->rootWindow(), False, + XSendEvent(**otk::display, _info->rootWindow(), false, SubstructureNotifyMask | SubstructureRedirectMask, &ce); } } @@ -822,6 +809,9 @@ void Screen::changeNumDesktops(unsigned int num) // the number of rows/columns will differ updateDesktopLayout(); + // may be some unnamed desktops that we need to fill in with names + updateDesktopNames(); + // change our desktop if we're on one that no longer exists! if (_desktop >= _num_desktops) changeDesktop(_num_desktops - 1); @@ -830,7 +820,7 @@ void Screen::changeNumDesktops(unsigned int num) void Screen::updateDesktopNames() { - unsigned long num = (unsigned) -1; + unsigned long num; if (!otk::Property::get(_info->rootWindow(), otk::Property::atoms.net_desktop_names, @@ -841,23 +831,6 @@ void Screen::updateDesktopNames() } -void Screen::setDesktopName(unsigned int i, const otk::ustring &name) -{ - if (i >= _num_desktops) return; - - otk::Property::StringVect newnames = _desktop_names; - newnames[i] = name; - otk::Property::set(_info->rootWindow(), - otk::Property::atoms.net_desktop_names, - otk::Property::utf8, newnames); -} - -otk::ustring Screen::desktopName(unsigned int i) const -{ - if (i >= _num_desktops) return ""; - return _desktop_names[i]; -} - const otk::Rect& Screen::area(unsigned int desktop) const { assert(desktop < _num_desktops || desktop == 0xffffffff); if (desktop < _num_desktops) @@ -887,7 +860,7 @@ void Screen::showDesktop(bool show) _showing_desktop = show; - ClientList::iterator it, end = clients.end(); + std::list::iterator it, end = clients.end(); for (it = clients.begin(); it != end; ++it) { if ((*it)->type() == Client::Type_Desktop) { if (show)