Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2083)

Unified Diff: src/platform/window_manager/stacking_manager.cc

Issue 2078031: wm: Fix override-redirect window stacking bug. (Closed) Base URL: ssh://git@gitrw.chromium.org:9222//chromeos.git
Patch Set: LOG(DFATAL) on invalid actor raise/lower Created 10 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/platform/window_manager/stacking_manager.h ('k') | src/platform/window_manager/window_manager.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/platform/window_manager/stacking_manager.cc
diff --git a/src/platform/window_manager/stacking_manager.cc b/src/platform/window_manager/stacking_manager.cc
index 96c71fe7ab82f11b25ab53f222942c46d7324777..d08010aa4b7b81fd5e2464a009839ea693e223f7 100644
--- a/src/platform/window_manager/stacking_manager.cc
+++ b/src/platform/window_manager/stacking_manager.cc
@@ -12,10 +12,11 @@
#include "window_manager/window.h"
#include "window_manager/x_connection.h"
-using std::set;
+using std::map;
using std::string;
using std::tr1::shared_ptr;
using window_manager::util::FindWithDefault;
+using window_manager::util::XidStr;
namespace window_manager {
@@ -34,10 +35,10 @@ StackingManager::StackingManager(XConnection* xconn,
xconn_->SetStringProperty(
xid, atom_cache->GetXAtom(ATOM_NET_WM_NAME), name);
layer_to_xid_[layer] = xid;
- xids_.insert(xid);
+ xid_to_layer_[xid] = layer;
shared_ptr<Compositor::Actor> actor(compositor->CreateGroup());
- actor->SetName(name);
+ actor->SetName(StringPrintf("%s %s", name.c_str(), XidStr(xid).c_str()));
actor->SetVisibility(false);
compositor->GetDefaultStage()->AddActor(actor.get());
actor->RaiseToTop();
@@ -46,8 +47,9 @@ StackingManager::StackingManager(XConnection* xconn,
}
StackingManager::~StackingManager() {
- for (set<XWindow>::const_iterator it = xids_.begin(); it != xids_.end(); ++it)
- xconn_->DestroyWindow(*it);
+ for (map<XWindow, Layer>::const_iterator it = xid_to_layer_.begin();
+ it != xid_to_layer_.end(); ++it)
+ xconn_->DestroyWindow(it->first);
}
bool StackingManager::StackWindowAtTopOfLayer(Window* win, Layer layer) {
@@ -96,6 +98,13 @@ bool StackingManager::StackWindowRelativeToOtherWindow(
win->StackClientBelow(sibling->xid());
}
+Compositor::Actor* StackingManager::GetActorIfLayerXid(XWindow xid) {
+ map<XWindow, Layer>::const_iterator it = xid_to_layer_.find(xid);
+ if (it == xid_to_layer_.end())
+ return NULL;
+ return GetActorForLayer(it->second);
+}
+
// static
const char* StackingManager::LayerToName(Layer layer) {
switch (layer) {
« no previous file with comments | « src/platform/window_manager/stacking_manager.h ('k') | src/platform/window_manager/window_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698