From 13f2930de727539fce8bd759450706b6094d5a98 Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Fri, 3 Jan 2003 18:25:04 +0000 Subject: share code for raising/lowering windows --- src/screen.cc | 32 +++----------------------------- 1 file changed, 3 insertions(+), 29 deletions(-) (limited to 'src/screen.cc') diff --git a/src/screen.cc b/src/screen.cc index f510749c..f0b0eb3d 100644 --- a/src/screen.cc +++ b/src/screen.cc @@ -406,7 +406,7 @@ void OBScreen::manageWindow(Window window) clients.push_back(client); // this puts into the stacking order, then raises it _stacking.push_back(client); - raise(client); + restack(true, client); // update the root properties setClientList(); @@ -461,7 +461,7 @@ void OBScreen::unmanageWindow(OBClient *client) setClientList(); } -void OBScreen::raise(OBClient *client) +void OBScreen::restack(bool raise, OBClient *client) { const int layer = client->layer(); std::vector wins; @@ -473,33 +473,7 @@ void OBScreen::raise(OBClient *client) ClientList::iterator it = _stacking.begin(), end = _stacking.end(); // insert the windows above this window for (; it != end; ++it) { - if ((*it)->layer() <= layer) - break; - wins.push_back((*it)->frame->window()); - } - // insert our client - wins.push_back(client->frame->window()); - _stacking.insert(it, client); - // insert the remaining below this window - for (; it != end; ++it) - wins.push_back((*it)->frame->window()); - - XRestackWindows(otk::OBDisplay::display, &wins[0], wins.size()); -} - -void OBScreen::lower(OBClient *client) -{ - const int layer = client->layer(); - std::vector wins; - - _stacking.remove(client); - - // the stacking list is from highest to lowest - - ClientList::iterator it = _stacking.begin(), end = _stacking.end(); - // insert the windows above this window - for (; it != end; ++it) { - if ((*it)->layer() < layer) + if ((*it)->layer() < layer || (raise && (*it)->layer() == layer)) break; wins.push_back((*it)->frame->window()); } -- cgit v1.2.3