Index: chrome/browser/ui/app_list/app_list_positioner.cc |
diff --git a/chrome/browser/ui/app_list/app_list_positioner.cc b/chrome/browser/ui/app_list/app_list_positioner.cc |
deleted file mode 100644 |
index 6ba2488bc3660f6ebd81fb6aa3c2c09c3c8f66a5..0000000000000000000000000000000000000000 |
--- a/chrome/browser/ui/app_list/app_list_positioner.cc |
+++ /dev/null |
@@ -1,204 +0,0 @@ |
-// 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 "chrome/browser/ui/app_list/app_list_positioner.h" |
- |
-#include <algorithm> |
- |
-#include "base/logging.h" |
-#include "ui/gfx/geometry/point.h" |
-#include "ui/gfx/geometry/rect.h" |
- |
-AppListPositioner::AppListPositioner(const display::Display& display, |
- const gfx::Size& window_size, |
- int min_distance_from_edge) |
- : display_(display), |
- window_size_(window_size), |
- min_distance_from_edge_(min_distance_from_edge) {} |
- |
-void AppListPositioner::WorkAreaSubtract(const gfx::Rect& rect) { |
- gfx::Rect work_area = display_.work_area(); |
- work_area.Subtract(rect); |
- display_.set_work_area(work_area); |
-} |
- |
-void AppListPositioner::WorkAreaInset(int left, |
- int top, |
- int right, |
- int bottom) { |
- gfx::Rect work_area = display_.work_area(); |
- work_area.Inset(left, top, right, bottom); |
- display_.set_work_area(work_area); |
-} |
- |
-gfx::Point AppListPositioner::GetAnchorPointForScreenCenter() const { |
- return display_.bounds().CenterPoint(); |
-} |
- |
-gfx::Point AppListPositioner::GetAnchorPointForScreenCorner( |
- ScreenCorner corner) const { |
- const gfx::Rect& screen_rect = display_.bounds(); |
- gfx::Point anchor; |
- switch (corner) { |
- case SCREEN_CORNER_TOP_LEFT: |
- anchor = screen_rect.origin(); |
- break; |
- case SCREEN_CORNER_TOP_RIGHT: |
- anchor = screen_rect.top_right(); |
- break; |
- case SCREEN_CORNER_BOTTOM_LEFT: |
- anchor = screen_rect.bottom_left(); |
- break; |
- case SCREEN_CORNER_BOTTOM_RIGHT: |
- anchor = screen_rect.bottom_right(); |
- break; |
- default: |
- NOTREACHED(); |
- anchor = gfx::Point(); |
- } |
- return ClampAnchorPoint(anchor); |
-} |
- |
-gfx::Point AppListPositioner::GetAnchorPointForShelfCorner( |
- ScreenEdge shelf_edge) const { |
- const gfx::Rect& screen_rect = display_.bounds(); |
- const gfx::Rect& work_area = display_.work_area(); |
- gfx::Point anchor; |
- switch (shelf_edge) { |
- case SCREEN_EDGE_LEFT: |
- anchor = gfx::Point(work_area.x(), screen_rect.y()); |
- break; |
- case SCREEN_EDGE_RIGHT: |
- anchor = gfx::Point(work_area.right(), screen_rect.y()); |
- break; |
- case SCREEN_EDGE_TOP: |
- anchor = gfx::Point(screen_rect.x(), work_area.y()); |
- break; |
- case SCREEN_EDGE_BOTTOM: |
- anchor = gfx::Point(screen_rect.x(), work_area.bottom()); |
- break; |
- default: |
- NOTREACHED(); |
- anchor = gfx::Point(); |
- } |
- return ClampAnchorPoint(anchor); |
-} |
- |
-gfx::Point AppListPositioner::GetAnchorPointForShelfCenter( |
- ScreenEdge shelf_edge) const { |
- const gfx::Rect& work_area = display_.work_area(); |
- gfx::Point anchor; |
- switch (shelf_edge) { |
- case SCREEN_EDGE_LEFT: |
- anchor = |
- gfx::Point(work_area.x(), work_area.y() + work_area.height() / 2); |
- break; |
- case SCREEN_EDGE_RIGHT: |
- anchor = |
- gfx::Point(work_area.right(), work_area.y() + work_area.height() / 2); |
- break; |
- case SCREEN_EDGE_TOP: |
- anchor = gfx::Point(work_area.x() + work_area.width() / 2, work_area.y()); |
- break; |
- case SCREEN_EDGE_BOTTOM: |
- anchor = |
- gfx::Point(work_area.x() + work_area.width() / 2, work_area.bottom()); |
- break; |
- default: |
- NOTREACHED(); |
- anchor = gfx::Point(); |
- } |
- return ClampAnchorPoint(anchor); |
-} |
- |
-gfx::Point AppListPositioner::GetAnchorPointForShelfCursor( |
- ScreenEdge shelf_edge, |
- const gfx::Point& cursor) const { |
- const gfx::Rect& work_area = display_.work_area(); |
- gfx::Point anchor; |
- switch (shelf_edge) { |
- case SCREEN_EDGE_LEFT: |
- anchor = gfx::Point(work_area.x(), cursor.y()); |
- break; |
- case SCREEN_EDGE_RIGHT: |
- anchor = gfx::Point(work_area.right(), cursor.y()); |
- break; |
- case SCREEN_EDGE_TOP: |
- anchor = gfx::Point(cursor.x(), work_area.y()); |
- break; |
- case SCREEN_EDGE_BOTTOM: |
- anchor = gfx::Point(cursor.x(), work_area.bottom()); |
- break; |
- default: |
- NOTREACHED(); |
- anchor = gfx::Point(); |
- } |
- return ClampAnchorPoint(anchor); |
-} |
- |
-AppListPositioner::ScreenEdge AppListPositioner::GetShelfEdge( |
- const gfx::Rect& shelf_rect) const { |
- const gfx::Rect& screen_rect = display_.bounds(); |
- const gfx::Rect& work_area = display_.work_area(); |
- |
- // If we can't find the shelf, return SCREEN_EDGE_UNKNOWN. If the display |
- // size is the same as the work area, and does not contain the shelf, either |
- // the shelf is hidden or on another monitor. |
- if (work_area == screen_rect && !work_area.Contains(shelf_rect)) |
- return SCREEN_EDGE_UNKNOWN; |
- |
- // Note: On Windows 8 the work area won't include split windows on the left or |
- // right, and neither will |shelf_rect|. |
- if (shelf_rect.x() == work_area.x() && |
- shelf_rect.width() == work_area.width()) { |
- // Shelf is horizontal. |
- if (shelf_rect.bottom() == screen_rect.bottom()) |
- return SCREEN_EDGE_BOTTOM; |
- else if (shelf_rect.y() == screen_rect.y()) |
- return SCREEN_EDGE_TOP; |
- } else if (shelf_rect.y() == work_area.y() && |
- shelf_rect.height() == work_area.height()) { |
- // Shelf is vertical. |
- if (shelf_rect.x() == screen_rect.x()) |
- return SCREEN_EDGE_LEFT; |
- else if (shelf_rect.right() == screen_rect.right()) |
- return SCREEN_EDGE_RIGHT; |
- } |
- |
- return SCREEN_EDGE_UNKNOWN; |
-} |
- |
-int AppListPositioner::GetCursorDistanceFromShelf( |
- ScreenEdge shelf_edge, |
- const gfx::Point& cursor) const { |
- const gfx::Rect& work_area = display_.work_area(); |
- switch (shelf_edge) { |
- case SCREEN_EDGE_UNKNOWN: |
- return 0; |
- case SCREEN_EDGE_LEFT: |
- return std::max(0, cursor.x() - work_area.x()); |
- case SCREEN_EDGE_RIGHT: |
- return std::max(0, work_area.right() - cursor.x()); |
- case SCREEN_EDGE_TOP: |
- return std::max(0, cursor.y() - work_area.y()); |
- case SCREEN_EDGE_BOTTOM: |
- return std::max(0, work_area.bottom() - cursor.y()); |
- default: |
- NOTREACHED(); |
- return 0; |
- } |
-} |
- |
-gfx::Point AppListPositioner::ClampAnchorPoint(gfx::Point anchor) const { |
- gfx::Rect bounds_rect(display_.work_area()); |
- |
- // Anchor the center of the window in a region that prevents the window |
- // showing outside of the work area. |
- bounds_rect.Inset(window_size_.width() / 2 + min_distance_from_edge_, |
- window_size_.height() / 2 + min_distance_from_edge_); |
- |
- anchor.SetToMax(bounds_rect.origin()); |
- anchor.SetToMin(bounds_rect.bottom_right()); |
- return anchor; |
-} |