| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "ash/launcher/overflow_bubble.h" | 5 #include "ash/launcher/overflow_bubble.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "ash/launcher/launcher_types.h" | 9 #include "ash/launcher/launcher_types.h" |
| 10 #include "ash/launcher/launcher_view.h" | 10 #include "ash/launcher/launcher_view.h" |
| 11 #include "ash/shell.h" |
| 11 #include "ui/gfx/insets.h" | 12 #include "ui/gfx/insets.h" |
| 12 #include "ui/gfx/screen.h" | 13 #include "ui/gfx/screen.h" |
| 13 #include "ui/views/bubble/bubble_delegate.h" | 14 #include "ui/views/bubble/bubble_delegate.h" |
| 14 #include "ui/views/bubble/bubble_frame_view.h" | 15 #include "ui/views/bubble/bubble_frame_view.h" |
| 15 #include "ui/views/widget/widget.h" | 16 #include "ui/views/widget/widget.h" |
| 16 | 17 |
| 17 namespace ash { | 18 namespace ash { |
| 18 namespace internal { | 19 namespace internal { |
| 19 | 20 |
| 20 namespace { | 21 namespace { |
| (...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 138 const gfx::Size contents_size(GetContentsSize()); | 139 const gfx::Size contents_size(GetContentsSize()); |
| 139 | 140 |
| 140 int y = std::min(contents_size.height() - visible_bounds.height(), | 141 int y = std::min(contents_size.height() - visible_bounds.height(), |
| 141 std::max(0, scroll_offset_.y() + y_offset)); | 142 std::max(0, scroll_offset_.y() + y_offset)); |
| 142 scroll_offset_.set_y(y); | 143 scroll_offset_.set_y(y); |
| 143 } | 144 } |
| 144 | 145 |
| 145 gfx::Size OverflowBubbleView::GetPreferredSize() { | 146 gfx::Size OverflowBubbleView::GetPreferredSize() { |
| 146 gfx::Size preferred_size = GetContentsSize(); | 147 gfx::Size preferred_size = GetContentsSize(); |
| 147 | 148 |
| 148 const gfx::Rect monitor_rect = gfx::Screen::GetDisplayNearestPoint( | 149 const gfx::Rect monitor_rect = Shell::GetAshScreen()->GetDisplayNearestPoint( |
| 149 GetAnchorRect().CenterPoint()).work_area(); | 150 GetAnchorRect().CenterPoint()).work_area(); |
| 150 if (!monitor_rect.IsEmpty()) { | 151 if (!monitor_rect.IsEmpty()) { |
| 151 if (is_horizontal_alignment()) { | 152 if (is_horizontal_alignment()) { |
| 152 preferred_size.set_width(std::min( | 153 preferred_size.set_width(std::min( |
| 153 preferred_size.width(), | 154 preferred_size.width(), |
| 154 static_cast<int>(monitor_rect.width() * | 155 static_cast<int>(monitor_rect.width() * |
| 155 kMaxBubbleSizeToScreenRatio))); | 156 kMaxBubbleSizeToScreenRatio))); |
| 156 } else { | 157 } else { |
| 157 preferred_size.set_height(std::min( | 158 preferred_size.set_height(std::min( |
| 158 preferred_size.height(), | 159 preferred_size.height(), |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 208 | 209 |
| 209 const gfx::Size content_size = GetPreferredSize(); | 210 const gfx::Size content_size = GetPreferredSize(); |
| 210 border->set_arrow_offset(arrow_offset); | 211 border->set_arrow_offset(arrow_offset); |
| 211 | 212 |
| 212 const gfx::Rect anchor_rect = GetAnchorRect(); | 213 const gfx::Rect anchor_rect = GetAnchorRect(); |
| 213 gfx::Rect bubble_rect = GetBubbleFrameView()->GetUpdatedWindowBounds( | 214 gfx::Rect bubble_rect = GetBubbleFrameView()->GetUpdatedWindowBounds( |
| 214 anchor_rect, | 215 anchor_rect, |
| 215 content_size, | 216 content_size, |
| 216 false); | 217 false); |
| 217 | 218 |
| 218 gfx::Rect monitor_rect = gfx::Screen::GetDisplayNearestPoint( | 219 gfx::Rect monitor_rect = Shell::GetAshScreen()->GetDisplayNearestPoint( |
| 219 anchor_rect.CenterPoint()).work_area(); | 220 anchor_rect.CenterPoint()).work_area(); |
| 220 | 221 |
| 221 int offset = 0; | 222 int offset = 0; |
| 222 if (views::BubbleBorder::is_arrow_on_horizontal(arrow_location())) { | 223 if (views::BubbleBorder::is_arrow_on_horizontal(arrow_location())) { |
| 223 if (bubble_rect.x() < monitor_rect.x()) | 224 if (bubble_rect.x() < monitor_rect.x()) |
| 224 offset = monitor_rect.x() - bubble_rect.x(); | 225 offset = monitor_rect.x() - bubble_rect.x(); |
| 225 else if (bubble_rect.right() > monitor_rect.right()) | 226 else if (bubble_rect.right() > monitor_rect.right()) |
| 226 offset = monitor_rect.right() - bubble_rect.right(); | 227 offset = monitor_rect.right() - bubble_rect.right(); |
| 227 | 228 |
| 228 bubble_rect.Offset(offset, 0); | 229 bubble_rect.Offset(offset, 0); |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 279 bubble_ = NULL; | 280 bubble_ = NULL; |
| 280 } | 281 } |
| 281 | 282 |
| 282 void OverflowBubble::OnWidgetClosing(views::Widget* widget) { | 283 void OverflowBubble::OnWidgetClosing(views::Widget* widget) { |
| 283 DCHECK(widget == bubble_->GetWidget()); | 284 DCHECK(widget == bubble_->GetWidget()); |
| 284 bubble_ = NULL; | 285 bubble_ = NULL; |
| 285 } | 286 } |
| 286 | 287 |
| 287 } // namespace internal | 288 } // namespace internal |
| 288 } // namespace ash | 289 } // namespace ash |
| OLD | NEW |