summaryrefslogtreecommitdiffstats
path: root/ui/aura/client/window_tree_client.cc
diff options
context:
space:
mode:
Diffstat (limited to 'ui/aura/client/window_tree_client.cc')
-rw-r--r--ui/aura/client/window_tree_client.cc51
1 files changed, 51 insertions, 0 deletions
diff --git a/ui/aura/client/window_tree_client.cc b/ui/aura/client/window_tree_client.cc
new file mode 100644
index 0000000..b2ea10f
--- /dev/null
+++ b/ui/aura/client/window_tree_client.cc
@@ -0,0 +1,51 @@
+// Copyright (c) 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "ui/aura/client/window_tree_client.h"
+
+#include "ui/aura/env.h"
+#include "ui/aura/root_window.h"
+#include "ui/aura/window_property.h"
+
+DECLARE_WINDOW_PROPERTY_TYPE(aura::client::WindowTreeClient*)
+
+namespace aura {
+namespace client {
+
+DEFINE_WINDOW_PROPERTY_KEY(
+ WindowTreeClient*, kRootWindowWindowTreeClientKey, NULL);
+
+void SetWindowTreeClient(Window* window, WindowTreeClient* window_tree_client) {
+ DCHECK(window);
+
+ RootWindow* root_window = window->GetRootWindow();
+ DCHECK(root_window);
+ root_window->SetProperty(kRootWindowWindowTreeClientKey, window_tree_client);
+}
+
+WindowTreeClient* GetWindowTreeClient(Window* window) {
+ DCHECK(window);
+ RootWindow* root_window = window->GetRootWindow();
+ DCHECK(root_window);
+ WindowTreeClient* client =
+ root_window->GetProperty(kRootWindowWindowTreeClientKey);
+ DCHECK(client);
+ return client;
+}
+
+void ParentWindowWithContext(Window* window,
+ Window* context,
+ const gfx::Rect& screen_bounds) {
+ DCHECK(context);
+
+ // |context| must be attached to a hierarchy with a WindowTreeClient.
+ WindowTreeClient* client = GetWindowTreeClient(context);
+ DCHECK(client);
+ Window* default_parent =
+ client->GetDefaultParent(context, window, screen_bounds);
+ default_parent->AddChild(window);
+}
+
+} // namespace client
+} // namespace aura