Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(166)

Unified Diff: ash/monitor/multi_monitor_manager.cc

Issue 9960042: Refactor screen/monitor so that gfx::Screen returns monitor object. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: cleanup Created 8 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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());
}

Powered by Google App Engine
This is Rietveld 408576698