blob: 1b263c3e75622992ca88d209454a01c67d5e73a7 [file] [log] [blame]
// 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