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

Unified Diff: ui/display/display_finder.cc

Issue 2730413002: Moves FindDisplayIndexContainingPoint into display (Closed)
Patch Set: comment Created 3 years, 9 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: ui/display/display_finder.cc
diff --git a/ui/display/display_finder.cc b/ui/display/display_finder.cc
index 82a9eb04b0a1e4247465f210f04f9a2439c1688a..2b556c4ba36fb7446fcc572096e6fa656caa0f9e 100644
--- a/ui/display/display_finder.cc
+++ b/ui/display/display_finder.cc
@@ -4,6 +4,7 @@
#include "ui/display/display_finder.h"
+#include <algorithm>
#include <limits>
#include "base/logging.h"
@@ -16,6 +17,10 @@ namespace display {
const Display* FindDisplayNearestPoint(const std::vector<Display>& displays,
const gfx::Point& point) {
DCHECK(!displays.empty());
+ const int containing_index = FindDisplayIndexContainingPoint(displays, point);
+ if (containing_index != -1)
+ return &displays[containing_index];
+
int min_distance = std::numeric_limits<int>::max();
const Display* nearest_display = nullptr;
for (const auto& display : displays) {
@@ -47,4 +52,13 @@ const Display* FindDisplayWithBiggestIntersection(
return matching;
}
+int FindDisplayIndexContainingPoint(const std::vector<Display>& displays,
+ const gfx::Point& point_in_screen) {
+ auto iter = std::find_if(displays.begin(), displays.end(),
+ [point_in_screen](const Display& display) {
+ return display.bounds().Contains(point_in_screen);
+ });
+ return iter == displays.end() ? -1 : (iter - displays.begin());
+}
+
} // namespace display

Powered by Google App Engine
This is Rietveld 408576698