// 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