| // 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/window_event_dispatcher.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); |
| |
| Window* root_window = window->GetRootWindow(); |
| DCHECK(root_window); |
| root_window->SetProperty(kRootWindowWindowTreeClientKey, window_tree_client); |
| } |
| |
| WindowTreeClient* GetWindowTreeClient(Window* window) { |
| DCHECK(window); |
| Window* 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 |