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

Unified Diff: ash/display/multi_display_manager.cc

Issue 10961021: Return primary display if out of bounds point or NULL ponter is passed to gfx::Screen::GeDisplayNea (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix a few other tests that were using native coordinate. it shoud use screen coordinate now. Created 8 years, 3 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
« no previous file with comments | « ash/display/multi_display_manager.h ('k') | ash/wm/workspace/workspace_window_resizer_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ash/display/multi_display_manager.cc
diff --git a/ash/display/multi_display_manager.cc b/ash/display/multi_display_manager.cc
index 21663f034ce3010cc6de3d60fcd0047e8fa3f889..e428c7c8654e4276f60b92f255ce015bda6ef5fc 100644
--- a/ash/display/multi_display_manager.cc
+++ b/ash/display/multi_display_manager.cc
@@ -119,6 +119,16 @@ bool MultiDisplayManager::UpdateWorkAreaOfDisplayNearestWindow(
return old_work_area != display.work_area();
}
+const gfx::Display& MultiDisplayManager::GetDisplayForId(int64 id) const {
+ for (DisplayList::const_iterator iter = displays_.begin();
+ iter != displays_.end(); ++iter) {
+ if ((*iter).id() == id)
+ return *iter;
+ }
+ VLOG(1) << "display not found for id:" << id;
+ return GetInvalidDisplay();
+}
+
const gfx::Display& MultiDisplayManager::FindDisplayContainingPoint(
const gfx::Point& point_in_screen) const {
for (DisplayList::const_iterator iter = displays_.begin();
@@ -264,7 +274,7 @@ size_t MultiDisplayManager::GetNumDisplays() const {
const gfx::Display& MultiDisplayManager::GetDisplayNearestWindow(
const Window* window) const {
if (!window)
- return displays_[0];
+ return DisplayController::GetPrimaryDisplay();
const RootWindow* root = window->GetRootWindow();
MultiDisplayManager* manager = const_cast<MultiDisplayManager*>(this);
return root ? manager->FindDisplayForRootWindow(root) : GetInvalidDisplay();
@@ -275,7 +285,7 @@ const gfx::Display& MultiDisplayManager::GetDisplayNearestPoint(
// Fallback to the primary display if there is no root display containing
// the |point|.
const gfx::Display& display = FindDisplayContainingPoint(point);
- return display.is_valid() ? display : displays_[0];
+ return display.is_valid() ? display : DisplayController::GetPrimaryDisplay();
}
const gfx::Display& MultiDisplayManager::GetDisplayMatching(
@@ -296,7 +306,7 @@ const gfx::Display& MultiDisplayManager::GetDisplayMatching(
}
}
// Fallback to the primary display if there is no matching display.
- return matching ? *matching : displays_[0];
+ return matching ? *matching : DisplayController::GetPrimaryDisplay();
}
std::string MultiDisplayManager::GetDisplayNameFor(
@@ -362,37 +372,28 @@ void MultiDisplayManager::Init() {
}
void MultiDisplayManager::CycleDisplayImpl() {
+ DCHECK(!displays_.empty());
std::vector<gfx::Display> new_displays;
- if (displays_.size() > 1) {
- // Remove if there is more than one display.
- int count = displays_.size() - 1;
- for (DisplayList::const_iterator iter = displays_.begin();
- count-- > 0; ++iter) {
- new_displays.push_back(*iter);
- }
- } else {
- // Add if there is only one display.
- new_displays.push_back(displays_[0]);
+ new_displays.push_back(DisplayController::GetPrimaryDisplay());
+ // Add if there is only one display.
+ if (displays_.size() == 1)
new_displays.push_back(CreateDisplayFromSpec("100+200-500x400"));
- }
- if (new_displays.size())
- OnNativeDisplaysChanged(new_displays);
+ OnNativeDisplaysChanged(new_displays);
}
void MultiDisplayManager::ScaleDisplayImpl() {
- if (displays_.size() > 0) {
- std::vector<gfx::Display> new_displays;
- for (DisplayList::const_iterator iter = displays_.begin();
- iter != displays_.end(); ++iter) {
- gfx::Display display = *iter;
- float factor = display.device_scale_factor() == 1.0f ? 2.0f : 1.0f;
- display.SetScaleAndBounds(
- factor, gfx::Rect(display.bounds_in_pixel().origin(),
- display.size().Scale(factor)));
- new_displays.push_back(display);
- }
- OnNativeDisplaysChanged(new_displays);
+ DCHECK(!displays_.empty());
+ std::vector<gfx::Display> new_displays;
+ for (DisplayList::const_iterator iter = displays_.begin();
+ iter != displays_.end(); ++iter) {
+ gfx::Display display = *iter;
+ float factor = display.device_scale_factor() == 1.0f ? 2.0f : 1.0f;
+ display.SetScaleAndBounds(
+ factor, gfx::Rect(display.bounds_in_pixel().origin(),
+ display.size().Scale(factor)));
+ new_displays.push_back(display);
}
+ OnNativeDisplaysChanged(new_displays);
}
gfx::Display& MultiDisplayManager::FindDisplayForRootWindow(
« no previous file with comments | « ash/display/multi_display_manager.h ('k') | ash/wm/workspace/workspace_window_resizer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698