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

Side by Side Diff: chrome/browser/views/frame/opaque_non_client_view.cc

Issue 20161: Make aero glass code look more like other nonclient views in hopes of easing ... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 10 months 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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/views/frame/opaque_non_client_view.h" 5 #include "chrome/browser/views/frame/opaque_non_client_view.h"
6 6
7 #include "chrome/app/theme/theme_resources.h" 7 #include "chrome/app/theme/theme_resources.h"
8 #include "chrome/browser/tab_contents/tab_contents.h"
9 #include "chrome/browser/views/frame/browser_view.h" 8 #include "chrome/browser/views/frame/browser_view.h"
10 #include "chrome/browser/views/tabs/tab_strip.h" 9 #include "chrome/browser/views/tabs/tab_strip.h"
11 #include "chrome/common/gfx/chrome_font.h" 10 #include "chrome/common/gfx/chrome_font.h"
12 #include "chrome/common/gfx/path.h" 11 #include "chrome/common/gfx/path.h"
13 #include "chrome/common/l10n_util.h" 12 #include "chrome/common/l10n_util.h"
14 #include "chrome/common/resource_bundle.h" 13 #include "chrome/common/resource_bundle.h"
15 #include "chrome/common/win_util.h" 14 #include "chrome/common/win_util.h"
16 #include "chrome/views/root_view.h" 15 #include "chrome/views/root_view.h"
17 #include "chrome/views/window_resources.h" 16 #include "chrome/views/window_resources.h"
18 #include "chromium_strings.h" 17 #include "chromium_strings.h"
(...skipping 483 matching lines...) Expand 10 before | Expand all | Expand 10 after
502 501
503 CPoint OpaqueNonClientView::GetSystemMenuPoint() const { 502 CPoint OpaqueNonClientView::GetSystemMenuPoint() const {
504 // TODO(pkasting): This is wrong; Windows native runs the menu at the bottom 503 // TODO(pkasting): This is wrong; Windows native runs the menu at the bottom
505 // of the titlebar, not the bottom of the window icon. 504 // of the titlebar, not the bottom of the window icon.
506 CPoint system_menu_point(icon_bounds_.x(), icon_bounds_.bottom()); 505 CPoint system_menu_point(icon_bounds_.x(), icon_bounds_.bottom());
507 MapWindowPoints(frame_->GetHWND(), HWND_DESKTOP, &system_menu_point, 1); 506 MapWindowPoints(frame_->GetHWND(), HWND_DESKTOP, &system_menu_point, 1);
508 return system_menu_point; 507 return system_menu_point;
509 } 508 }
510 509
511 int OpaqueNonClientView::NonClientHitTest(const gfx::Point& point) { 510 int OpaqueNonClientView::NonClientHitTest(const gfx::Point& point) {
512 // First see if it's within the grow box area, since that overlaps the client 511 if (!bounds().Contains(point))
513 // bounds. 512 return HTNOWHERE;
513
514 int frame_component = frame_->client_view()->NonClientHitTest(point); 514 int frame_component = frame_->client_view()->NonClientHitTest(point);
515 if (frame_component != HTNOWHERE) 515 if (frame_component != HTNOWHERE)
516 return frame_component; 516 return frame_component;
517 517
518 // Then see if the point is within any of the window controls. 518 // Then see if the point is within any of the window controls.
519 if (close_button_->GetBounds(APPLY_MIRRORING_TRANSFORMATION).Contains(point)) 519 if (close_button_->GetBounds(APPLY_MIRRORING_TRANSFORMATION).Contains(point))
520 return HTCLOSE; 520 return HTCLOSE;
521 if (restore_button_->GetBounds(APPLY_MIRRORING_TRANSFORMATION).Contains( 521 if (restore_button_->GetBounds(APPLY_MIRRORING_TRANSFORMATION).Contains(
522 point)) 522 point))
523 return HTMAXBUTTON; 523 return HTMAXBUTTON;
524 if (maximize_button_->GetBounds(APPLY_MIRRORING_TRANSFORMATION).Contains( 524 if (maximize_button_->GetBounds(APPLY_MIRRORING_TRANSFORMATION).Contains(
525 point)) 525 point))
526 return HTMAXBUTTON; 526 return HTMAXBUTTON;
527 if (minimize_button_->GetBounds(APPLY_MIRRORING_TRANSFORMATION).Contains( 527 if (minimize_button_->GetBounds(APPLY_MIRRORING_TRANSFORMATION).Contains(
528 point)) 528 point))
529 return HTMINBUTTON; 529 return HTMINBUTTON;
530 if (window_icon_ && 530 if (window_icon_ &&
531 window_icon_->GetBounds(APPLY_MIRRORING_TRANSFORMATION).Contains(point)) 531 window_icon_->GetBounds(APPLY_MIRRORING_TRANSFORMATION).Contains(point))
532 return HTSYSMENU; 532 return HTSYSMENU;
533 533
534 int window_component = GetHTComponentForFrame(point, TopResizeHeight(), 534 int window_component = GetHTComponentForFrame(point, TopResizeHeight(),
535 NonClientBorderThickness(), kResizeAreaCornerSize, 535 NonClientBorderThickness(), kResizeAreaCornerSize, kResizeAreaCornerSize,
536 frame_->window_delegate()->CanResize()); 536 frame_->window_delegate()->CanResize());
537 // Fall back to the caption if no other component matches. 537 // Fall back to the caption if no other component matches.
538 return ((window_component == HTNOWHERE) && bounds().Contains(point)) ? 538 return (window_component == HTNOWHERE) ? HTCAPTION : window_component;
539 HTCAPTION : window_component;
540 } 539 }
541 540
542 void OpaqueNonClientView::GetWindowMask(const gfx::Size& size, 541 void OpaqueNonClientView::GetWindowMask(const gfx::Size& size,
543 gfx::Path* window_mask) { 542 gfx::Path* window_mask) {
544 DCHECK(window_mask); 543 DCHECK(window_mask);
545 544
546 // Redefine the window visible region for the new size. 545 // Redefine the window visible region for the new size.
547 window_mask->moveTo(0, 3); 546 window_mask->moveTo(0, 3);
548 window_mask->lineTo(1, 2); 547 window_mask->lineTo(1, 2);
549 window_mask->lineTo(1, 1); 548 window_mask->lineTo(1, 1);
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
590 } 589 }
591 590
592 void OpaqueNonClientView::Layout() { 591 void OpaqueNonClientView::Layout() {
593 LayoutWindowControls(); 592 LayoutWindowControls();
594 LayoutDistributorLogo(); 593 LayoutDistributorLogo();
595 LayoutTitleBar(); 594 LayoutTitleBar();
596 LayoutOTRAvatar(); 595 LayoutOTRAvatar();
597 LayoutClientView(); 596 LayoutClientView();
598 } 597 }
599 598
600 gfx::Size OpaqueNonClientView::GetPreferredSize() {
601 gfx::Size prefsize(frame_->client_view()->GetPreferredSize());
602 int border_thickness = NonClientBorderThickness();
603 prefsize.Enlarge(2 * border_thickness,
604 NonClientTopBorderHeight() + border_thickness);
605 return prefsize;
606 }
607
608 views::View* OpaqueNonClientView::GetViewForPoint(const gfx::Point& point, 599 views::View* OpaqueNonClientView::GetViewForPoint(const gfx::Point& point,
609 bool can_create_floating) { 600 bool can_create_floating) {
610 // We override this function because the ClientView can overlap the non - 601 // We override this function because the ClientView can overlap the non -
611 // client view, making it impossible to click on the window controls. We need 602 // client view, making it impossible to click on the window controls. We need
612 // to ensure the window controls are checked _first_. 603 // to ensure the window controls are checked _first_.
613 views::View* views[] = 604 views::View* views[] =
614 { close_button_, restore_button_, maximize_button_, minimize_button_ }; 605 { close_button_, restore_button_, maximize_button_, minimize_button_ };
615 for (int i = 0; i < arraysize(views); ++i) { 606 for (int i = 0; i < arraysize(views); ++i) {
616 if (!views[i]->IsVisible()) 607 if (!views[i]->IsVisible())
617 continue; 608 continue;
(...skipping 465 matching lines...) Expand 10 before | Expand all | Expand 10 after
1083 } 1074 }
1084 1075
1085 // static 1076 // static
1086 void OpaqueNonClientView::InitAppWindowResources() { 1077 void OpaqueNonClientView::InitAppWindowResources() {
1087 static bool initialized = false; 1078 static bool initialized = false;
1088 if (!initialized) { 1079 if (!initialized) {
1089 title_font_ = win_util::GetWindowTitleFont(); 1080 title_font_ = win_util::GetWindowTitleFont();
1090 initialized = true; 1081 initialized = true;
1091 } 1082 }
1092 } 1083 }
OLDNEW
« no previous file with comments | « chrome/browser/views/frame/opaque_non_client_view.h ('k') | chrome/views/custom_frame_window.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698