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

Side by Side Diff: chrome/views/custom_frame_window.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
« no previous file with comments | « chrome/browser/views/frame/opaque_non_client_view.cc ('k') | chrome/views/non_client_view.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/views/custom_frame_window.h" 5 #include "chrome/views/custom_frame_window.h"
6 6
7 #include "base/gfx/point.h" 7 #include "base/gfx/point.h"
8 #include "base/gfx/size.h" 8 #include "base/gfx/size.h"
9 #include "base/win_util.h" 9 #include "base/win_util.h"
10 #include "chrome/app/theme/theme_resources.h" 10 #include "chrome/app/theme/theme_resources.h"
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after
236 int height) const; 236 int height) const;
237 virtual CPoint GetSystemMenuPoint() const; 237 virtual CPoint GetSystemMenuPoint() const;
238 virtual int NonClientHitTest(const gfx::Point& point); 238 virtual int NonClientHitTest(const gfx::Point& point);
239 virtual void GetWindowMask(const gfx::Size& size, gfx::Path* window_mask); 239 virtual void GetWindowMask(const gfx::Size& size, gfx::Path* window_mask);
240 virtual void EnableClose(bool enable); 240 virtual void EnableClose(bool enable);
241 virtual void ResetWindowControls(); 241 virtual void ResetWindowControls();
242 242
243 // View overrides: 243 // View overrides:
244 virtual void Paint(ChromeCanvas* canvas); 244 virtual void Paint(ChromeCanvas* canvas);
245 virtual void Layout(); 245 virtual void Layout();
246 virtual gfx::Size GetPreferredSize();
247 virtual void ViewHierarchyChanged(bool is_add, View* parent, View* child); 246 virtual void ViewHierarchyChanged(bool is_add, View* parent, View* child);
248 247
249 // BaseButton::ButtonListener implementation: 248 // BaseButton::ButtonListener implementation:
250 virtual void ButtonPressed(BaseButton* sender); 249 virtual void ButtonPressed(BaseButton* sender);
251 250
252 private: 251 private:
253 // Returns the thickness of the border that makes up the window frame edges. 252 // Returns the thickness of the border that makes up the window frame edges.
254 // This does not include any client edge. 253 // This does not include any client edge.
255 int FrameBorderThickness() const; 254 int FrameBorderThickness() const;
256 255
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
444 CPoint DefaultNonClientView::GetSystemMenuPoint() const { 443 CPoint DefaultNonClientView::GetSystemMenuPoint() const {
445 // TODO(pkasting): This is wrong; Windows native runs the menu at the bottom 444 // TODO(pkasting): This is wrong; Windows native runs the menu at the bottom
446 // of the titlebar, not the bottom of the window icon. 445 // of the titlebar, not the bottom of the window icon.
447 CPoint system_menu_point(system_menu_button_->x(), 446 CPoint system_menu_point(system_menu_button_->x(),
448 system_menu_button_->y() + system_menu_button_->height()); 447 system_menu_button_->y() + system_menu_button_->height());
449 MapWindowPoints(container_->GetHWND(), HWND_DESKTOP, &system_menu_point, 1); 448 MapWindowPoints(container_->GetHWND(), HWND_DESKTOP, &system_menu_point, 1);
450 return system_menu_point; 449 return system_menu_point;
451 } 450 }
452 451
453 int DefaultNonClientView::NonClientHitTest(const gfx::Point& point) { 452 int DefaultNonClientView::NonClientHitTest(const gfx::Point& point) {
454 // First see if it's within the grow box area, since that overlaps the client 453 if (!bounds().Contains(point))
455 // bounds. 454 return HTNOWHERE;
455
456 int frame_component = container_->client_view()->NonClientHitTest(point); 456 int frame_component = container_->client_view()->NonClientHitTest(point);
457 if (frame_component != HTNOWHERE) 457 if (frame_component != HTNOWHERE)
458 return frame_component; 458 return frame_component;
459 459
460 // Then see if the point is within any of the window controls. 460 // Then see if the point is within any of the window controls.
461 if (close_button_->GetBounds(APPLY_MIRRORING_TRANSFORMATION).Contains(point)) 461 if (close_button_->GetBounds(APPLY_MIRRORING_TRANSFORMATION).Contains(point))
462 return HTCLOSE; 462 return HTCLOSE;
463 if (restore_button_->GetBounds(APPLY_MIRRORING_TRANSFORMATION).Contains( 463 if (restore_button_->GetBounds(APPLY_MIRRORING_TRANSFORMATION).Contains(
464 point)) 464 point))
465 return HTMAXBUTTON; 465 return HTMAXBUTTON;
466 if (maximize_button_->GetBounds(APPLY_MIRRORING_TRANSFORMATION).Contains( 466 if (maximize_button_->GetBounds(APPLY_MIRRORING_TRANSFORMATION).Contains(
467 point)) 467 point))
468 return HTMAXBUTTON; 468 return HTMAXBUTTON;
469 if (minimize_button_->GetBounds(APPLY_MIRRORING_TRANSFORMATION).Contains( 469 if (minimize_button_->GetBounds(APPLY_MIRRORING_TRANSFORMATION).Contains(
470 point)) 470 point))
471 return HTMINBUTTON; 471 return HTMINBUTTON;
472 if (system_menu_button_->GetBounds(APPLY_MIRRORING_TRANSFORMATION).Contains( 472 if (system_menu_button_->GetBounds(APPLY_MIRRORING_TRANSFORMATION).Contains(
473 point)) 473 point))
474 return HTSYSMENU; 474 return HTSYSMENU;
475 475
476 int window_component = GetHTComponentForFrame(point, FrameBorderThickness(), 476 int window_component = GetHTComponentForFrame(point, FrameBorderThickness(),
477 NonClientBorderThickness(), kResizeAreaCornerSize, 477 NonClientBorderThickness(), kResizeAreaCornerSize, kResizeAreaCornerSize,
478 container_->window_delegate()->CanResize()); 478 container_->window_delegate()->CanResize());
479 // Fall back to the caption if no other component matches. 479 // Fall back to the caption if no other component matches.
480 return ((window_component == HTNOWHERE) && bounds().Contains(point)) ? 480 return (window_component == HTNOWHERE) ? HTCAPTION : window_component;
481 HTCAPTION : window_component;
482 } 481 }
483 482
484 void DefaultNonClientView::GetWindowMask(const gfx::Size& size, 483 void DefaultNonClientView::GetWindowMask(const gfx::Size& size,
485 gfx::Path* window_mask) { 484 gfx::Path* window_mask) {
486 DCHECK(window_mask); 485 DCHECK(window_mask);
487 486
488 // Redefine the window visible region for the new size. 487 // Redefine the window visible region for the new size.
489 window_mask->moveTo(0, 3); 488 window_mask->moveTo(0, 3);
490 window_mask->lineTo(1, 2); 489 window_mask->lineTo(1, 2);
491 window_mask->lineTo(1, 1); 490 window_mask->lineTo(1, 1);
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
527 if (!container_->IsMaximized()) 526 if (!container_->IsMaximized())
528 PaintRestoredClientEdge(canvas); 527 PaintRestoredClientEdge(canvas);
529 } 528 }
530 529
531 void DefaultNonClientView::Layout() { 530 void DefaultNonClientView::Layout() {
532 LayoutWindowControls(); 531 LayoutWindowControls();
533 LayoutTitleBar(); 532 LayoutTitleBar();
534 LayoutClientView(); 533 LayoutClientView();
535 } 534 }
536 535
537 gfx::Size DefaultNonClientView::GetPreferredSize() {
538 gfx::Size prefsize(container_->client_view()->GetPreferredSize());
539 int border_thickness = NonClientBorderThickness();
540 prefsize.Enlarge(2 * border_thickness,
541 NonClientTopBorderHeight() + border_thickness);
542 return prefsize;
543 }
544
545 void DefaultNonClientView::ViewHierarchyChanged(bool is_add, 536 void DefaultNonClientView::ViewHierarchyChanged(bool is_add,
546 View* parent, 537 View* parent,
547 View* child) { 538 View* child) {
548 // Add our Client View as we are added to the Widget so that if we are 539 // Add our Client View as we are added to the Widget so that if we are
549 // subsequently resized all the parent-child relationships are established. 540 // subsequently resized all the parent-child relationships are established.
550 if (is_add && GetWidget() && child == this) 541 if (is_add && GetWidget() && child == this)
551 AddChildView(container_->client_view()); 542 AddChildView(container_->client_view());
552 } 543 }
553 544
554 /////////////////////////////////////////////////////////////////////////////// 545 ///////////////////////////////////////////////////////////////////////////////
(...skipping 773 matching lines...) Expand 10 before | Expand all | Expand 10 after
1328 if ((GetKeyState(VK_CONTROL) & 0x80) == 0x80) 1319 if ((GetKeyState(VK_CONTROL) & 0x80) == 0x80)
1329 message_flags |= MK_CONTROL; 1320 message_flags |= MK_CONTROL;
1330 if ((GetKeyState(VK_SHIFT) & 0x80) == 0x80) 1321 if ((GetKeyState(VK_SHIFT) & 0x80) == 0x80)
1331 message_flags |= MK_SHIFT; 1322 message_flags |= MK_SHIFT;
1332 message_flags |= flags; 1323 message_flags |= flags;
1333 ProcessMousePressed(temp, message_flags, false); 1324 ProcessMousePressed(temp, message_flags, false);
1334 } 1325 }
1335 1326
1336 } // namespace views 1327 } // namespace views
1337 1328
OLDNEW
« no previous file with comments | « chrome/browser/views/frame/opaque_non_client_view.cc ('k') | chrome/views/non_client_view.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698