| Index: ash/monitor/multi_monitor_manager.cc
|
| diff --git a/ash/monitor/multi_monitor_manager.cc b/ash/monitor/multi_monitor_manager.cc
|
| index 46dddadd31b4cf2c7ad9c417fdfd70a9d170da69..3178a0bf89b064ac102f0b29e6c3a666c9180edb 100644
|
| --- a/ash/monitor/multi_monitor_manager.cc
|
| +++ b/ash/monitor/multi_monitor_manager.cc
|
| @@ -12,33 +12,24 @@
|
| #include "base/string_split.h"
|
| #include "ui/aura/aura_switches.h"
|
| #include "ui/aura/env.h"
|
| -#include "ui/aura/monitor.h"
|
| #include "ui/aura/root_window.h"
|
| #include "ui/aura/root_window_host.h"
|
| -#include "ui/gfx/rect.h"
|
| #include "ui/aura/window_property.h"
|
| +#include "ui/gfx/monitor.h"
|
| +#include "ui/gfx/rect.h"
|
|
|
| -DECLARE_WINDOW_PROPERTY_TYPE(aura::Monitor*);
|
| +DECLARE_WINDOW_PROPERTY_TYPE(gfx::Monitor*);
|
|
|
| namespace ash {
|
| namespace internal {
|
| -namespace {
|
| -
|
| -aura::Monitor* Copy(aura::Monitor* m) {
|
| - aura::Monitor* monitor = new aura::Monitor;
|
| - monitor->set_bounds(m->bounds());
|
| - return monitor;
|
| -}
|
| -
|
| -} // namespace
|
|
|
| -DEFINE_WINDOW_PROPERTY_KEY(aura::Monitor*, kMonitorKey, NULL);
|
| -
|
| -using std::string;
|
| -using std::vector;
|
| -using aura::Monitor;
|
| using aura::RootWindow;
|
| using aura::Window;
|
| +using gfx::Monitor;
|
| +using std::string;
|
| +using std::vector;
|
| +
|
| +DEFINE_WINDOW_PROPERTY_KEY(Monitor*, kMonitorKey, NULL);
|
|
|
| MultiMonitorManager::MultiMonitorManager() {
|
| Init();
|
| @@ -62,7 +53,7 @@ void MultiMonitorManager::CycleMonitor() {
|
| }
|
|
|
| void MultiMonitorManager::OnNativeMonitorsChanged(
|
| - const std::vector<const aura::Monitor*>& new_monitors) {
|
| + const std::vector<const Monitor*>& new_monitors) {
|
| size_t min = std::min(monitors_.size(), new_monitors.size());
|
|
|
| // For m19, we only care about 1st monitor as primary, and
|
| @@ -75,7 +66,7 @@ void MultiMonitorManager::OnNativeMonitorsChanged(
|
| Monitor* current_monitor = monitors_[i];
|
| const Monitor* new_monitor = new_monitors[i];
|
| if (current_monitor->bounds() != new_monitor->bounds()) {
|
| - current_monitor->set_bounds(new_monitor->bounds());
|
| + current_monitor->SetBoundsAndUpdateWorkArea(new_monitor->bounds());
|
| NotifyBoundsChanged(current_monitor);
|
| }
|
| }
|
| @@ -84,7 +75,8 @@ void MultiMonitorManager::OnNativeMonitorsChanged(
|
| // New monitors added
|
| for (size_t i = min; i < new_monitors.size(); ++i) {
|
| Monitor* monitor = new Monitor();
|
| - monitor->set_bounds(new_monitors[i]->bounds());
|
| + monitor->SetBoundsAndUpdateWorkArea(new_monitors[i]->bounds());
|
| +
|
| monitors_.push_back(monitor);
|
| NotifyMonitorAdded(monitor);
|
| }
|
| @@ -111,6 +103,14 @@ RootWindow* MultiMonitorManager::CreateRootWindowForMonitor(
|
| return root_window;
|
| }
|
|
|
| +Monitor* MultiMonitorManager::GetMonitorAt(size_t index) {
|
| + return index < monitors_.size() ? monitors_[index] : NULL;
|
| +}
|
| +
|
| +size_t MultiMonitorManager::GetNumMonitors() const {
|
| + return monitors_.size();
|
| +}
|
| +
|
| const Monitor* MultiMonitorManager::GetMonitorNearestWindow(
|
| const Window* window) const {
|
| if (!window) {
|
| @@ -121,6 +121,13 @@ const Monitor* MultiMonitorManager::GetMonitorNearestWindow(
|
| return root ? root->GetProperty(kMonitorKey) : NULL;
|
| }
|
|
|
| +Monitor* MultiMonitorManager::GetMonitorNearestWindow(
|
| + const Window* window) {
|
| + const MonitorManager* manager = this;
|
| + return const_cast<Monitor*>(
|
| + manager->GetMonitorNearestWindow(window));
|
| +}
|
| +
|
| const Monitor* MultiMonitorManager::GetMonitorNearestPoint(
|
| const gfx::Point& point) const {
|
| // TODO(oshima): For m19, mouse is constrained within
|
| @@ -129,24 +136,11 @@ const Monitor* MultiMonitorManager::GetMonitorNearestPoint(
|
| return manager->GetMonitorAt(0);
|
| }
|
|
|
| -Monitor* MultiMonitorManager::GetMonitorAt(size_t index) {
|
| - return index < monitors_.size() ? monitors_[index] : NULL;
|
| -}
|
| -
|
| -size_t MultiMonitorManager::GetNumMonitors() const {
|
| - return monitors_.size();
|
| -}
|
| -
|
| -Monitor* MultiMonitorManager::GetMonitorNearestWindow(const Window* window) {
|
| - const MonitorManager* manager = this;
|
| - return const_cast<Monitor*>(manager->GetMonitorNearestWindow(window));
|
| -}
|
| -
|
| void MultiMonitorManager::OnRootWindowResized(const aura::RootWindow* root,
|
| const gfx::Size& old_size) {
|
| if (!use_fullscreen_host_window()) {
|
| Monitor* monitor = root->GetProperty(kMonitorKey);
|
| - monitor->set_size(root->GetHostSize());
|
| + monitor->SetSizeAndUpdateWorkArea(root->GetHostSize());
|
| NotifyBoundsChanged(monitor);
|
| }
|
| }
|
| @@ -171,11 +165,11 @@ void MultiMonitorManager::AddRemoveMonitorImpl() {
|
| // Remove if there is more than one monitor.
|
| int count = monitors_.size() - 1;
|
| for (Monitors::const_iterator iter = monitors_.begin(); count-- > 0; ++iter)
|
| - new_monitors.push_back(Copy(*iter));
|
| + new_monitors.push_back(new Monitor(**iter));
|
| } else {
|
| // Add if there is only one monitor.
|
| - new_monitors.push_back(Copy(monitors_[0]));
|
| - aura::Monitor* extra_monitor = new Monitor;
|
| + new_monitors.push_back(new Monitor(*monitors_[0]));
|
| + Monitor* extra_monitor = new Monitor;
|
| extra_monitor->set_bounds(gfx::Rect(100, 100, 1440, 800));
|
| new_monitors.push_back(extra_monitor);
|
| }
|
| @@ -189,8 +183,8 @@ void MultiMonitorManager::CycleMonitorImpl() {
|
| std::vector<const Monitor*> new_monitors;
|
| for (Monitors::const_iterator iter = monitors_.begin() + 1;
|
| iter != monitors_.end(); ++iter)
|
| - new_monitors.push_back(Copy(*iter));
|
| - new_monitors.push_back(Copy(monitors_.front()));
|
| + new_monitors.push_back(new Monitor(**iter));
|
| + new_monitors.push_back(new Monitor(*monitors_.front()));
|
| OnNativeMonitorsChanged(new_monitors);
|
| STLDeleteContainerPointers(new_monitors.begin(), new_monitors.end());
|
| }
|
|
|