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/frame/opaque_browser_frame_view.h" | 5 #include "chrome/browser/ui/views/frame/opaque_browser_frame_view.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/compiler_specific.h" | 10 #include "base/compiler_specific.h" |
(...skipping 307 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
318 if (rect_in_tabstrip_coords.bottom() > tabstrip->GetLocalBounds().bottom()) { | 318 if (rect_in_tabstrip_coords.bottom() > tabstrip->GetLocalBounds().bottom()) { |
319 // |rect| is below the tabstrip. | 319 // |rect| is below the tabstrip. |
320 return false; | 320 return false; |
321 } | 321 } |
322 | 322 |
323 if (tabstrip->HitTestRect(rect_in_tabstrip_coords)) { | 323 if (tabstrip->HitTestRect(rect_in_tabstrip_coords)) { |
324 // Claim |rect| if it is in a non-tab portion of the tabstrip. | 324 // Claim |rect| if it is in a non-tab portion of the tabstrip. |
325 return tabstrip->IsRectInWindowCaption(rect_in_tabstrip_coords); | 325 return tabstrip->IsRectInWindowCaption(rect_in_tabstrip_coords); |
326 } | 326 } |
327 | 327 |
328 // The window switcher button is to the right of the tabstrip but is | |
329 // part of the client view. | |
330 views::View* window_switcher_button = | |
331 browser_view()->window_switcher_button(); | |
332 if (window_switcher_button && window_switcher_button->visible()) { | |
333 gfx::RectF rect_in_window_switcher_coords_f(rect); | |
334 View::ConvertRectToTarget(this, window_switcher_button, | |
335 &rect_in_window_switcher_coords_f); | |
336 gfx::Rect rect_in_window_switcher_coords = gfx::ToEnclosingRect( | |
337 rect_in_window_switcher_coords_f); | |
338 | |
339 if (window_switcher_button->HitTestRect(rect_in_window_switcher_coords)) | |
340 return false; | |
341 } | |
342 | |
343 // We claim |rect| because it is above the bottom of the tabstrip, but | 328 // We claim |rect| because it is above the bottom of the tabstrip, but |
344 // neither in the tabstrip nor in the window switcher button. In particular, | 329 // not in the tabstrip itself. In particular, the avatar label/button is left |
345 // the avatar label/button is left of the tabstrip and the window controls | 330 // of the tabstrip and the window controls are right of the tabstrip. |
346 // are right of the tabstrip. | |
347 return true; | 331 return true; |
348 } | 332 } |
349 | 333 |
350 void OpaqueBrowserFrameView::GetAccessibleState( | 334 void OpaqueBrowserFrameView::GetAccessibleState( |
351 ui::AXViewState* state) { | 335 ui::AXViewState* state) { |
352 state->role = ui::AX_ROLE_TITLE_BAR; | 336 state->role = ui::AX_ROLE_TITLE_BAR; |
353 } | 337 } |
354 | 338 |
355 /////////////////////////////////////////////////////////////////////////////// | 339 /////////////////////////////////////////////////////////////////////////////// |
356 // OpaqueBrowserFrameView, views::ButtonListener implementation: | 340 // OpaqueBrowserFrameView, views::ButtonListener implementation: |
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
496 } | 480 } |
497 | 481 |
498 bool OpaqueBrowserFrameView::IsTabStripVisible() const { | 482 bool OpaqueBrowserFrameView::IsTabStripVisible() const { |
499 return browser_view()->IsTabStripVisible(); | 483 return browser_view()->IsTabStripVisible(); |
500 } | 484 } |
501 | 485 |
502 int OpaqueBrowserFrameView::GetTabStripHeight() const { | 486 int OpaqueBrowserFrameView::GetTabStripHeight() const { |
503 return browser_view()->GetTabStripHeight(); | 487 return browser_view()->GetTabStripHeight(); |
504 } | 488 } |
505 | 489 |
506 int OpaqueBrowserFrameView::GetAdditionalReservedSpaceInTabStrip() const { | |
507 // We don't have the sysmenu buttons in Windows 8 metro mode. However there | |
508 // are buttons like the window switcher which are drawn in the non client | |
509 // are in the BrowserView. We need to ensure that the tab strip does not | |
510 // draw on the window switcher button. | |
511 views::View* button = browser_view()->window_switcher_button(); | |
512 return button ? button->width() : 0; | |
513 } | |
514 | |
515 gfx::Size OpaqueBrowserFrameView::GetTabstripPreferredSize() const { | 490 gfx::Size OpaqueBrowserFrameView::GetTabstripPreferredSize() const { |
516 gfx::Size s = browser_view()->tabstrip()->GetPreferredSize(); | 491 gfx::Size s = browser_view()->tabstrip()->GetPreferredSize(); |
517 return s; | 492 return s; |
518 } | 493 } |
519 | 494 |
520 /////////////////////////////////////////////////////////////////////////////// | 495 /////////////////////////////////////////////////////////////////////////////// |
521 // OpaqueBrowserFrameView, views::View overrides: | 496 // OpaqueBrowserFrameView, views::View overrides: |
522 | 497 |
523 void OpaqueBrowserFrameView::OnPaint(gfx::Canvas* canvas) { | 498 void OpaqueBrowserFrameView::OnPaint(gfx::Canvas* canvas) { |
524 if (frame()->IsFullscreen()) | 499 if (frame()->IsFullscreen()) |
(...skipping 396 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
921 | 896 |
922 int OpaqueBrowserFrameView::GetTopAreaHeight() const { | 897 int OpaqueBrowserFrameView::GetTopAreaHeight() const { |
923 gfx::ImageSkia* frame_image = GetFrameImage(); | 898 gfx::ImageSkia* frame_image = GetFrameImage(); |
924 int top_area_height = frame_image->height(); | 899 int top_area_height = frame_image->height(); |
925 if (browser_view()->IsTabStripVisible()) { | 900 if (browser_view()->IsTabStripVisible()) { |
926 top_area_height = std::max(top_area_height, | 901 top_area_height = std::max(top_area_height, |
927 GetBoundsForTabStrip(browser_view()->tabstrip()).bottom()); | 902 GetBoundsForTabStrip(browser_view()->tabstrip()).bottom()); |
928 } | 903 } |
929 return top_area_height; | 904 return top_area_height; |
930 } | 905 } |
OLD | NEW |