diff options
Diffstat (limited to 'ui/aura/client/window_tree_client.cc')
-rw-r--r-- | ui/aura/client/window_tree_client.cc | 51 |
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 |