• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
3 // found in the LICENSE file.
4 
5 #ifndef CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_DESKTOP_WINDOW_TREE_HOST_WIN_H_
6 #define CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_DESKTOP_WINDOW_TREE_HOST_WIN_H_
7 
8 #include <windows.h>
9 #include <uxtheme.h>
10 
11 #include "chrome/browser/ui/views/frame/browser_desktop_window_tree_host.h"
12 #include "chrome/browser/ui/views/frame/minimize_button_metrics_win.h"
13 #include "ui/views/widget/desktop_aura/desktop_window_tree_host_win.h"
14 
15 class BrowserFrame;
16 class BrowserView;
17 class BrowserWindowPropertyManager;
18 
19 namespace views {
20 class DesktopNativeWidgetAura;
21 class NativeMenuWin;
22 }
23 
24 class BrowserDesktopWindowTreeHostWin : public BrowserDesktopWindowTreeHost,
25                                         public views::DesktopWindowTreeHostWin {
26  public:
27   BrowserDesktopWindowTreeHostWin(
28       views::internal::NativeWidgetDelegate* native_widget_delegate,
29       views::DesktopNativeWidgetAura* desktop_native_widget_aura,
30       BrowserView* browser_view,
31       BrowserFrame* browser_frame);
32   virtual ~BrowserDesktopWindowTreeHostWin();
33 
34  private:
35   views::NativeMenuWin* GetSystemMenu();
36 
37   // Overridden from BrowserDesktopWindowTreeHost:
38   virtual DesktopWindowTreeHost* AsDesktopWindowTreeHost() OVERRIDE;
39   virtual int GetMinimizeButtonOffset() const OVERRIDE;
40   virtual bool UsesNativeSystemMenu() const OVERRIDE;
41 
42   // Overridden from DesktopWindowTreeHostWin:
43   virtual int GetInitialShowState() const OVERRIDE;
44   virtual bool GetClientAreaInsets(gfx::Insets* insets) const OVERRIDE;
45   virtual void HandleCreate() OVERRIDE;
46   virtual void HandleFrameChanged() OVERRIDE;
47   virtual bool PreHandleMSG(UINT message,
48                             WPARAM w_param,
49                             LPARAM l_param,
50                             LRESULT* result) OVERRIDE;
51   virtual void PostHandleMSG(UINT message,
52                              WPARAM w_param,
53                              LPARAM l_param) OVERRIDE;
54   virtual bool IsUsingCustomFrame() const OVERRIDE;
55   virtual bool ShouldUseNativeFrame() const OVERRIDE;
56   virtual void FrameTypeChanged() OVERRIDE;
57 
58   void UpdateDWMFrame();
59 
60   MARGINS GetDWMFrameMargins() const;
61 
62   BrowserView* browser_view_;
63   BrowserFrame* browser_frame_;
64 
65   MinimizeButtonMetrics minimize_button_metrics_;
66 
67   scoped_ptr<BrowserWindowPropertyManager> browser_window_property_manager_;
68 
69   // The wrapped system menu itself.
70   scoped_ptr<views::NativeMenuWin> system_menu_;
71 
72   // Necessary to avoid corruption on NC paint in Aero mode.
73   bool did_gdi_clear_;
74 
75   DISALLOW_COPY_AND_ASSIGN(BrowserDesktopWindowTreeHostWin);
76 };
77 
78 
79 #endif  // CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_DESKTOP_WINDOW_TREE_HOST_WIN_H_
80