| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 #ifndef CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_NON_CLIENT_FRAME_VIEW_AURA_H_ | 5 #ifndef CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_NON_CLIENT_FRAME_VIEW_AURA_H_ |
| 6 #define CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_NON_CLIENT_FRAME_VIEW_AURA_H_ | 6 #define CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_NON_CLIENT_FRAME_VIEW_AURA_H_ |
| 7 #pragma once | 7 #pragma once |
| 8 | 8 |
| 9 #include "ash/wm/window_frame.h" | |
| 10 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
| 11 #include "chrome/browser/ui/views/frame/browser_non_client_frame_view.h" | 10 #include "chrome/browser/ui/views/frame/browser_non_client_frame_view.h" |
| 12 #include "ui/views/controls/button/button.h" | 11 #include "chrome/browser/ui/views/tab_icon_view.h" |
| 13 #include "ui/views/widget/widget.h" | 12 #include "ui/views/controls/button/button.h" // ButtonListener |
| 14 | 13 |
| 15 class BrowserFrame; | 14 namespace views { |
| 16 class BrowserView; | 15 class FrameBackground; |
| 17 class FrameBackgroundView; | 16 class ImageButton; |
| 18 class WindowControlButton; | 17 } |
| 19 | 18 |
| 20 class BrowserNonClientFrameViewAura : public BrowserNonClientFrameView, | 19 class BrowserNonClientFrameViewAura : public BrowserNonClientFrameView, |
| 21 public views::ButtonListener, | 20 public views::ButtonListener, |
| 22 public views::Widget::Observer, | 21 public TabIconView::TabIconViewModel { |
| 23 public ash::WindowFrame { | |
| 24 public: | 22 public: |
| 25 BrowserNonClientFrameViewAura(BrowserFrame* frame, BrowserView* browser_view); | 23 BrowserNonClientFrameViewAura(BrowserFrame* frame, BrowserView* browser_view); |
| 26 virtual ~BrowserNonClientFrameViewAura(); | 24 virtual ~BrowserNonClientFrameViewAura(); |
| 27 | 25 |
| 28 // Control the slide-in animation of the frame background. | 26 void Init(); |
| 29 void ShowFrameBackground(); | |
| 30 void HideFrameBackground(); | |
| 31 | |
| 32 private: | |
| 33 // Returns a HitTest code. | |
| 34 int NonClientHitTestImpl(const gfx::Point& point); | |
| 35 | |
| 36 // Returns the target rectangle for the frame background, based on a mouse | |
| 37 // position from |hittest_code| and the window's active/inactive state. | |
| 38 // Pass HTNOWHERE to get default bounds. | |
| 39 gfx::Rect GetFrameBackgroundBounds(int hittest_code, bool active_window); | |
| 40 | |
| 41 // Recomputes the bounds of the semi-transparent frame background. | |
| 42 void UpdateFrameBackground(bool active_window); | |
| 43 | |
| 44 // Invoked when the active state changes. | |
| 45 void ActiveStateChanged(); | |
| 46 | 27 |
| 47 // BrowserNonClientFrameView overrides: | 28 // BrowserNonClientFrameView overrides: |
| 48 virtual gfx::Rect GetBoundsForTabStrip(views::View* tabstrip) const OVERRIDE; | 29 virtual gfx::Rect GetBoundsForTabStrip(views::View* tabstrip) const OVERRIDE; |
| 49 virtual int GetHorizontalTabStripVerticalOffset(bool restored) const OVERRIDE; | 30 virtual int GetHorizontalTabStripVerticalOffset(bool restored) const OVERRIDE; |
| 50 virtual void UpdateThrobber(bool running) OVERRIDE; | 31 virtual void UpdateThrobber(bool running) OVERRIDE; |
| 51 | 32 |
| 52 // views::NonClientFrameView overrides: | 33 // views::NonClientFrameView overrides: |
| 53 virtual gfx::Rect GetBoundsForClientView() const OVERRIDE; | 34 virtual gfx::Rect GetBoundsForClientView() const OVERRIDE; |
| 54 virtual gfx::Rect GetWindowBoundsForClientBounds( | 35 virtual gfx::Rect GetWindowBoundsForClientBounds( |
| 55 const gfx::Rect& client_bounds) const OVERRIDE; | 36 const gfx::Rect& client_bounds) const OVERRIDE; |
| 56 virtual int NonClientHitTest(const gfx::Point& point) OVERRIDE; | 37 virtual int NonClientHitTest(const gfx::Point& point) OVERRIDE; |
| 57 virtual void GetWindowMask(const gfx::Size& size, | 38 virtual void GetWindowMask(const gfx::Size& size, |
| 58 gfx::Path* window_mask) OVERRIDE; | 39 gfx::Path* window_mask) OVERRIDE; |
| 59 virtual void ResetWindowControls() OVERRIDE; | 40 virtual void ResetWindowControls() OVERRIDE; |
| 60 virtual void UpdateWindowIcon() OVERRIDE; | 41 virtual void UpdateWindowIcon() OVERRIDE; |
| 61 virtual void ShouldPaintAsActiveChanged() OVERRIDE; | |
| 62 | 42 |
| 63 // views::View overrides: | 43 // views::View overrides: |
| 44 virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE; |
| 64 virtual void Layout() OVERRIDE; | 45 virtual void Layout() OVERRIDE; |
| 65 virtual views::View* GetEventHandlerForPoint( | 46 virtual bool HitTest(const gfx::Point& l) const OVERRIDE; |
| 66 const gfx::Point& point) OVERRIDE; | 47 virtual void GetAccessibleState(ui::AccessibleViewState* state) OVERRIDE; |
| 67 virtual bool HitTest(const gfx::Point& p) const OVERRIDE; | |
| 68 virtual void OnMouseMoved(const views::MouseEvent& event) OVERRIDE; | |
| 69 virtual void OnMouseExited(const views::MouseEvent& event) OVERRIDE; | |
| 70 virtual gfx::NativeCursor GetCursor(const views::MouseEvent& event) OVERRIDE; | |
| 71 | 48 |
| 72 // views::ButtonListener overrides: | 49 // views::ButtonListener overrides: |
| 73 virtual void ButtonPressed(views::Button* sender, | 50 virtual void ButtonPressed(views::Button* sender, |
| 74 const views::Event& event) OVERRIDE; | 51 const views::Event& event) OVERRIDE; |
| 75 | 52 |
| 76 // views::Widget::Observer overrides: | 53 // Overridden from TabIconView::TabIconViewModel: |
| 77 virtual void OnWidgetActivationChanged(views::Widget* widget, | 54 virtual bool ShouldTabIconViewAnimate() const OVERRIDE; |
| 78 bool active) OVERRIDE; | 55 virtual SkBitmap GetFaviconForTabIconView() OVERRIDE; |
| 79 | 56 |
| 80 // ash::WindowFrame overrides: | 57 private: |
| 81 virtual void OnWindowHoverChanged(bool hovered) OVERRIDE; | 58 // Sets the images for a button base on IDs from the frame's theme provider. |
| 59 void SetButtonImages(views::ImageButton* button, |
| 60 int normal_bitmap_id, |
| 61 int hot_bitmap_id, |
| 62 int pushed_bitmap_id); |
| 82 | 63 |
| 83 int last_hittest_code_; | 64 // Distance between top of window and client area. |
| 84 WindowControlButton* maximize_button_; | 65 int NonClientTopBorderHeight(bool restored) const; |
| 85 WindowControlButton* close_button_; | 66 |
| 86 FrameBackgroundView* frame_background_; | 67 void PaintHeader(gfx::Canvas* canvas); |
| 68 void PaintTitleBar(gfx::Canvas* canvas); |
| 69 |
| 70 // Returns the correct bitmap for the frame header based on activation state |
| 71 // and incognito mode. |
| 72 SkBitmap* GetThemeFrameBitmap() const; |
| 73 SkBitmap* GetThemeFrameOverlayBitmap() const; |
| 74 |
| 75 // Returns the theme image bitmap for |bitmap_id| if the user has a custom |
| 76 // theme image, or the bitmap for |fallback_bitmap_id| if not. |
| 77 SkBitmap* GetCustomBitmap(int bitmap_id, int fallback_bitmap_id) const; |
| 78 |
| 79 // Window controls. |
| 80 views::ImageButton* maximize_button_; |
| 81 views::ImageButton* close_button_; |
| 82 |
| 83 // For popups, the window icon. |
| 84 TabIconView* window_icon_; |
| 85 |
| 86 // Window frame header/caption parts. |
| 87 SkBitmap* button_separator_; |
| 88 SkBitmap* top_left_corner_; |
| 89 SkBitmap* top_edge_; |
| 90 SkBitmap* top_right_corner_; |
| 91 SkBitmap* header_left_edge_; |
| 92 SkBitmap* header_right_edge_; |
| 87 | 93 |
| 88 DISALLOW_COPY_AND_ASSIGN(BrowserNonClientFrameViewAura); | 94 DISALLOW_COPY_AND_ASSIGN(BrowserNonClientFrameViewAura); |
| 89 }; | 95 }; |
| 90 | 96 |
| 91 #endif // CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_NON_CLIENT_FRAME_VIEW_AURA_H_ | 97 #endif // CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_NON_CLIENT_FRAME_VIEW_AURA_H_ |
| OLD | NEW |