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

Unified Diff: chrome/browser/notifications/balloon_collection_mac.mm

Issue 8503037: Fix the problem that notifications and panels overlap. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix for MacOSX Created 9 years, 1 month 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: chrome/browser/notifications/balloon_collection_mac.mm
diff --git a/chrome/browser/notifications/balloon_collection_mac.mm b/chrome/browser/notifications/balloon_collection_mac.mm
index d31bc399ddb5a1c6138e930cfccdbdd87805098a..aba14ce387725f4d7d542d2bf1bf5724b0f0569d 100644
--- a/chrome/browser/notifications/balloon_collection_mac.mm
+++ b/chrome/browser/notifications/balloon_collection_mac.mm
@@ -35,6 +35,52 @@ int BalloonCollectionImpl::Layout::VerticalEdgeMargin() const {
return 0;
}
+gfx::Point BalloonCollectionImpl::Layout::GetLayoutOrigin() const {
jennb 2011/11/10 19:17:13 Comments in the code here make the code hard to re
jianli 2011/11/11 00:38:30 Done.
+ const int kVerticalSpacingBetweenBalloonAndPanel = 5;
+ int x = 0;
+ int y = 0;
+ switch (placement_) {
+ case VERTICALLY_FROM_TOP_LEFT: {
+ x = work_area_.x() + HorizontalEdgeMargin();
+ // For this placement (this corresponds to lower-right alignment due to
+ // that Mac uses a vertically reversed screen orientation), balloon needs
+ // to stay on top of left-most panels to avoid overlapping.
+ int offset = bottom_left_offset_to_move_above_panels_;
+ // Ensure that we have some sort of margin between the 1st balloon and the
+ // panel beneath it even the vertical edge margin is set to 0 on Mac.
+ if (offset && !VerticalEdgeMargin())
+ offset += kVerticalSpacingBetweenBalloonAndPanel;
+ y = work_area_.y() + VerticalEdgeMargin() + offset;
+ break;
+ }
+ case VERTICALLY_FROM_TOP_RIGHT: {
+ x = work_area_.right() - HorizontalEdgeMargin();
+ // For this placement (this corresponds to lower-right alignment due to
+ // that Mac uses a vertically reversed screen orientation), balloon needs
+ // to stay on top of right-most panels to avoid overlapping.
+ int offset = bottom_right_offset_to_move_above_panels_;
+ // Ensure that we have some sort of margin between the 1st balloon and the
+ // panel beneath it even the vertical edge margin is set to 0 on Mac.
+ if (offset && !VerticalEdgeMargin())
+ offset += kVerticalSpacingBetweenBalloonAndPanel;
+ y = work_area_.y() + VerticalEdgeMargin() + offset;
+ break;
+ }
+ case VERTICALLY_FROM_BOTTOM_LEFT:
+ x = work_area_.x() + HorizontalEdgeMargin();
+ y = work_area_.bottom() - VerticalEdgeMargin();
+ break;
+ case VERTICALLY_FROM_BOTTOM_RIGHT:
+ x = work_area_.right() - HorizontalEdgeMargin();
+ y = work_area_.bottom() - VerticalEdgeMargin();
+ break;
+ default:
+ NOTREACHED();
+ break;
+ }
+ return gfx::Point(x, y);
+}
+
void BalloonCollectionImpl::PositionBalloons(bool reposition) {
// Use an animation context so that all the balloons animate together.
[NSAnimationContext beginGrouping];

Powered by Google App Engine
This is Rietveld 408576698