| 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 "chrome/browser/ui/views/infobars/infobar_view.h" | 5 #include "chrome/browser/ui/views/infobars/infobar_view.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <memory> | 8 #include <memory> |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| (...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 218 | 218 |
| 219 int InfoBarView::EndX() const { | 219 int InfoBarView::EndX() const { |
| 220 return close_button_->x() - kBeforeCloseButtonSpacing; | 220 return close_button_->x() - kBeforeCloseButtonSpacing; |
| 221 } | 221 } |
| 222 | 222 |
| 223 int InfoBarView::OffsetY(views::View* view) const { | 223 int InfoBarView::OffsetY(views::View* view) const { |
| 224 return std::max((bar_target_height() - view->height()) / 2, 0) - | 224 return std::max((bar_target_height() - view->height()) / 2, 0) - |
| 225 (bar_target_height() - bar_height()); | 225 (bar_target_height() - bar_height()); |
| 226 } | 226 } |
| 227 | 227 |
| 228 void InfoBarView::RunMenuAt(ui::MenuModel* menu_model, | |
| 229 views::MenuButton* button, | |
| 230 views::MenuAnchorPosition anchor) { | |
| 231 DCHECK(owner()); // We'd better not open any menus while we're closing. | |
| 232 gfx::Point screen_point; | |
| 233 views::View::ConvertPointToScreen(button, &screen_point); | |
| 234 menu_runner_.reset( | |
| 235 new views::MenuRunner(menu_model, views::MenuRunner::HAS_MNEMONICS)); | |
| 236 // Ignore the result since we don't need to handle a deleted menu specially. | |
| 237 ignore_result(menu_runner_->RunMenuAt(GetWidget(), | |
| 238 button, | |
| 239 gfx::Rect(screen_point, button->size()), | |
| 240 anchor, | |
| 241 ui::MENU_SOURCE_NONE)); | |
| 242 } | |
| 243 | |
| 244 void InfoBarView::AddViewToContentArea(views::View* view) { | 228 void InfoBarView::AddViewToContentArea(views::View* view) { |
| 245 child_container_->AddChildView(view); | 229 child_container_->AddChildView(view); |
| 246 } | 230 } |
| 247 | 231 |
| 248 // static | 232 // static |
| 249 void InfoBarView::AssignWidthsSorted(Labels* labels, int available_width) { | 233 void InfoBarView::AssignWidthsSorted(Labels* labels, int available_width) { |
| 250 if (labels->empty()) | 234 if (labels->empty()) |
| 251 return; | 235 return; |
| 252 gfx::Size back_label_size(labels->back()->GetPreferredSize()); | 236 gfx::Size back_label_size(labels->back()->GetPreferredSize()); |
| 253 back_label_size.set_width( | 237 back_label_size.set_width( |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 323 } | 307 } |
| 324 | 308 |
| 325 bool InfoBarView::DoesIntersectRect(const View* target, | 309 bool InfoBarView::DoesIntersectRect(const View* target, |
| 326 const gfx::Rect& rect) const { | 310 const gfx::Rect& rect) const { |
| 327 DCHECK_EQ(this, target); | 311 DCHECK_EQ(this, target); |
| 328 // Only events that intersect the portion below the arrow are interesting. | 312 // Only events that intersect the portion below the arrow are interesting. |
| 329 gfx::Rect non_arrow_bounds = GetLocalBounds(); | 313 gfx::Rect non_arrow_bounds = GetLocalBounds(); |
| 330 non_arrow_bounds.Inset(0, arrow_height(), 0, 0); | 314 non_arrow_bounds.Inset(0, arrow_height(), 0, 0); |
| 331 return rect.Intersects(non_arrow_bounds); | 315 return rect.Intersects(non_arrow_bounds); |
| 332 } | 316 } |
| OLD | NEW |