| 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 "ui/views/bubble/tray_bubble_view.h" | 5 #include "ui/views/bubble/tray_bubble_view.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "third_party/skia/include/core/SkCanvas.h" | 9 #include "third_party/skia/include/core/SkCanvas.h" |
| 10 #include "third_party/skia/include/core/SkColor.h" | 10 #include "third_party/skia/include/core/SkColor.h" |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 43 public: | 43 public: |
| 44 TrayBubbleBorder(View* owner, | 44 TrayBubbleBorder(View* owner, |
| 45 View* anchor, | 45 View* anchor, |
| 46 TrayBubbleView::InitParams params) | 46 TrayBubbleView::InitParams params) |
| 47 : BubbleBorder(params.arrow_location, params.shadow, params.arrow_color), | 47 : BubbleBorder(params.arrow_location, params.shadow, params.arrow_color), |
| 48 owner_(owner), | 48 owner_(owner), |
| 49 anchor_(anchor), | 49 anchor_(anchor), |
| 50 tray_arrow_offset_(params.arrow_offset) { | 50 tray_arrow_offset_(params.arrow_offset) { |
| 51 set_alignment(params.arrow_alignment); | 51 set_alignment(params.arrow_alignment); |
| 52 set_background_color(params.arrow_color); | 52 set_background_color(params.arrow_color); |
| 53 set_paint_arrow(!params.hide_arrow); | 53 set_paint_arrow(params.arrow_paint_type); |
| 54 } | 54 } |
| 55 | 55 |
| 56 virtual ~TrayBubbleBorder() {} | 56 virtual ~TrayBubbleBorder() {} |
| 57 | 57 |
| 58 // Overridden from BubbleBorder. | 58 // Overridden from BubbleBorder. |
| 59 // Sets the bubble on top of the anchor when it has no arrow. | 59 // Sets the bubble on top of the anchor when it has no arrow. |
| 60 virtual gfx::Rect GetBounds(const gfx::Rect& position_relative_to, | 60 virtual gfx::Rect GetBounds(const gfx::Rect& position_relative_to, |
| 61 const gfx::Size& contents_size) const OVERRIDE { | 61 const gfx::Size& contents_size) const OVERRIDE { |
| 62 if (has_arrow(arrow_location())) | 62 if (has_arrow(arrow_location())) |
| 63 return BubbleBorder::GetBounds(position_relative_to, contents_size); | 63 return BubbleBorder::GetBounds(position_relative_to, contents_size); |
| (...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 220 : anchor_type(anchor_type), | 220 : anchor_type(anchor_type), |
| 221 anchor_alignment(anchor_alignment), | 221 anchor_alignment(anchor_alignment), |
| 222 min_width(min_width), | 222 min_width(min_width), |
| 223 max_width(max_width), | 223 max_width(max_width), |
| 224 max_height(0), | 224 max_height(0), |
| 225 can_activate(false), | 225 can_activate(false), |
| 226 close_on_deactivate(true), | 226 close_on_deactivate(true), |
| 227 arrow_color(SK_ColorBLACK), | 227 arrow_color(SK_ColorBLACK), |
| 228 arrow_location(BubbleBorder::NONE), | 228 arrow_location(BubbleBorder::NONE), |
| 229 arrow_offset(kArrowDefaultOffset), | 229 arrow_offset(kArrowDefaultOffset), |
| 230 hide_arrow(false), | 230 arrow_paint_type(BubbleBorder::PAINT_NORMAL), |
| 231 shadow(BubbleBorder::BIG_SHADOW), | 231 shadow(BubbleBorder::BIG_SHADOW), |
| 232 arrow_alignment(BubbleBorder::ALIGN_EDGE_TO_ANCHOR_EDGE) { | 232 arrow_alignment(BubbleBorder::ALIGN_EDGE_TO_ANCHOR_EDGE) { |
| 233 } | 233 } |
| 234 | 234 |
| 235 // static | 235 // static |
| 236 TrayBubbleView* TrayBubbleView::Create(gfx::NativeView parent_window, | 236 TrayBubbleView* TrayBubbleView::Create(gfx::NativeView parent_window, |
| 237 View* anchor, | 237 View* anchor, |
| 238 Delegate* delegate, | 238 Delegate* delegate, |
| 239 InitParams* init_params) { | 239 InitParams* init_params) { |
| 240 // Set arrow_location here so that it can be passed correctly to the | 240 // Set arrow_location here so that it can be passed correctly to the |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 314 | 314 |
| 315 void TrayBubbleView::SetWidth(int width) { | 315 void TrayBubbleView::SetWidth(int width) { |
| 316 width = std::max(std::min(width, params_.max_width), params_.min_width); | 316 width = std::max(std::min(width, params_.max_width), params_.min_width); |
| 317 if (preferred_width_ == width) | 317 if (preferred_width_ == width) |
| 318 return; | 318 return; |
| 319 preferred_width_ = width; | 319 preferred_width_ = width; |
| 320 if (GetWidget()) | 320 if (GetWidget()) |
| 321 SizeToContents(); | 321 SizeToContents(); |
| 322 } | 322 } |
| 323 | 323 |
| 324 void TrayBubbleView::SetPaintArrow(bool paint_arrow) { | 324 void TrayBubbleView::SetArrowPaintType( |
| 325 bubble_border_->set_paint_arrow(paint_arrow && !params_.hide_arrow); | 325 views::BubbleBorder::ArrowPaintType paint_type) { |
| 326 bubble_border_->set_paint_arrow(paint_type); |
| 326 } | 327 } |
| 327 | 328 |
| 328 gfx::Insets TrayBubbleView::GetBorderInsets() const { | 329 gfx::Insets TrayBubbleView::GetBorderInsets() const { |
| 329 return bubble_border_->GetInsets(); | 330 return bubble_border_->GetInsets(); |
| 330 } | 331 } |
| 331 | 332 |
| 332 void TrayBubbleView::Init() { | 333 void TrayBubbleView::Init() { |
| 333 BoxLayout* layout = new BottomAlignedBoxLayout(this); | 334 BoxLayout* layout = new BottomAlignedBoxLayout(this); |
| 334 layout->set_spread_blank_space(true); | 335 layout->set_spread_blank_space(true); |
| 335 SetLayoutManager(layout); | 336 SetLayoutManager(layout); |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 401 View* parent, | 402 View* parent, |
| 402 View* child) { | 403 View* child) { |
| 403 if (get_use_acceleration_when_possible() && is_add && child == this) { | 404 if (get_use_acceleration_when_possible() && is_add && child == this) { |
| 404 parent->SetPaintToLayer(true); | 405 parent->SetPaintToLayer(true); |
| 405 parent->SetFillsBoundsOpaquely(true); | 406 parent->SetFillsBoundsOpaquely(true); |
| 406 parent->layer()->SetMasksToBounds(true); | 407 parent->layer()->SetMasksToBounds(true); |
| 407 } | 408 } |
| 408 } | 409 } |
| 409 | 410 |
| 410 } // namespace views | 411 } // namespace views |
| OLD | NEW |