blob: cd626883bf07bc55a2d3098df5770063cea54bdb [file] [log] [blame]
// Copyright 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 "ash/wm/window_settings.h"
#include "ui/aura/window.h"
#include "ui/aura/window_property.h"
#include "ui/gfx/display.h"
DECLARE_WINDOW_PROPERTY_TYPE(ash::wm::WindowSettings*);
namespace ash {
namespace wm {
DEFINE_OWNED_WINDOW_PROPERTY_KEY(WindowSettings,
kWindowSettingsKey, NULL);
WindowSettings::WindowSettings(aura::Window* window)
: window_(window),
tracked_by_workspace_(true),
window_position_managed_(false),
bounds_changed_by_user_(false),
panel_attached_(true),
continue_drag_after_reparent_(false),
ignored_by_shelf_(false) {
}
WindowSettings::~WindowSettings() {
}
void WindowSettings::AddObserver(Observer* observer) {
observer_list_.AddObserver(observer);
}
void WindowSettings::RemoveObserver(Observer* observer) {
observer_list_.RemoveObserver(observer);
}
void WindowSettings::SetTrackedByWorkspace(bool tracked_by_workspace) {
if (tracked_by_workspace_ == tracked_by_workspace)
return;
bool old = tracked_by_workspace_;
tracked_by_workspace_ = tracked_by_workspace;
FOR_EACH_OBSERVER(Observer, observer_list_,
OnTrackedByWorkspaceChanged(window_, old));
}
WindowSettings* GetWindowSettings(aura::Window* window) {
WindowSettings* settings = window->GetProperty(kWindowSettingsKey);
if(!settings) {
settings = new WindowSettings(window);
window->SetProperty(kWindowSettingsKey, settings);
}
return settings;
}
const WindowSettings* GetWindowSettings(const aura::Window* window) {
return GetWindowSettings(const_cast<aura::Window*>(window));
}
} // namespace wm
} // namespace ash