15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef UI_VIEWS_WIN_FULLSCREEN_HANDLER_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define UI_VIEWS_WIN_FULLSCREEN_HANDLER_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <windows.h> 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <map> 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace gfx { 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Rect; 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace views { 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class FullscreenHandler { 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FullscreenHandler(); 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ~FullscreenHandler(); 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void set_hwnd(HWND hwnd) { hwnd_ = hwnd; } 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetFullscreen(bool fullscreen); 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetMetroSnap(bool metro_snap); 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gfx::Rect GetRestoreBounds() const; 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool fullscreen() const { return fullscreen_; } 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool metro_snap() const { return metro_snap_; } 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Information saved before going into fullscreen mode, used to restore the 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // window afterwards. 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) struct SavedWindowInfo { 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool maximized; 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LONG style; 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LONG ex_style; 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RECT window_rect; 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetFullscreenImpl(bool fullscreen, bool for_metro); 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HWND hwnd_; 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool fullscreen_; 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool metro_snap_; 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Saved window information from before entering fullscreen mode. 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TODO(beng): move to private once GetRestoredBounds() moves onto Widget. 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SavedWindowInfo saved_window_info_; 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(FullscreenHandler); 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace views 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // UI_VIEWS_WIN_FULLSCREEN_HANDLER_H_