• 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 UI_VIEWS_WIN_FULLSCREEN_HANDLER_H_
6 #define UI_VIEWS_WIN_FULLSCREEN_HANDLER_H_
7 
8 #include <windows.h>
9 
10 #include <map>
11 
12 #include "base/basictypes.h"
13 
14 namespace gfx {
15 class Rect;
16 }
17 
18 namespace views {
19 
20 class FullscreenHandler {
21  public:
22   FullscreenHandler();
23   ~FullscreenHandler();
24 
set_hwnd(HWND hwnd)25   void set_hwnd(HWND hwnd) { hwnd_ = hwnd; }
26 
27   void SetFullscreen(bool fullscreen);
28   void SetMetroSnap(bool metro_snap);
29 
30   gfx::Rect GetRestoreBounds() const;
31 
fullscreen()32   bool fullscreen() const { return fullscreen_; }
metro_snap()33   bool metro_snap() const { return metro_snap_; }
34 
35  private:
36   // Information saved before going into fullscreen mode, used to restore the
37   // window afterwards.
38   struct SavedWindowInfo {
39     bool maximized;
40     LONG style;
41     LONG ex_style;
42     RECT window_rect;
43   };
44 
45   void SetFullscreenImpl(bool fullscreen, bool for_metro);
46 
47   HWND hwnd_;
48   bool fullscreen_;
49   bool metro_snap_;
50 
51   // Saved window information from before entering fullscreen mode.
52   // TODO(beng): move to private once GetRestoredBounds() moves onto Widget.
53   SavedWindowInfo saved_window_info_;
54 
55   DISALLOW_COPY_AND_ASSIGN(FullscreenHandler);
56 };
57 
58 }  // namespace views
59 
60 #endif  // UI_VIEWS_WIN_FULLSCREEN_HANDLER_H_