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

Unified Diff: chrome/views/window/window_win.h

Issue 78002: Reorganize fullscreen mode handling. Now nearly everything is in WindowWin. ... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 8 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/views/window/window.h ('k') | chrome/views/window/window_win.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/views/window/window_win.h
===================================================================
--- chrome/views/window/window_win.h (revision 13759)
+++ chrome/views/window/window_win.h (working copy)
@@ -48,15 +48,23 @@
// Executes the specified SC_command.
void ExecuteSystemMenuCommand(int command);
+ // Hides the window if it hasn't already been force-hidden, then increments
+ // |force_hidden_count_| to prevent it from being shown again until
+ // PopForceHidden()) is called.
+ void PushForceHidden();
+
+ // Decrements |force_hidden_count_| and, if it is now zero, shows the window.
+ void PopForceHidden();
+
// Accessors and setters for various properties.
HWND owning_window() const { return owning_hwnd_; }
void set_focus_on_creation(bool focus_on_creation) {
focus_on_creation_ = focus_on_creation;
}
- void set_force_hidden(bool force_hidden) { force_hidden_ = force_hidden; }
// Window overrides:
virtual gfx::Rect GetBounds() const;
+ virtual gfx::Rect GetNormalBounds() const;
virtual void SetBounds(const gfx::Rect& bounds);
virtual void SetBounds(const gfx::Rect& bounds,
gfx::NativeWindow other_window);
@@ -70,6 +78,8 @@
virtual bool IsVisible() const;
virtual bool IsMaximized() const;
virtual bool IsMinimized() const;
+ virtual void SetFullscreen(bool fullscreen);
+ virtual bool IsFullscreen() const;
virtual void EnableClose(bool enable);
virtual void DisableInactiveRendering();
virtual void UpdateWindowTitle();
@@ -132,6 +142,7 @@
virtual LRESULT OnSetCursor(HWND window, UINT hittest_code, UINT message);
virtual LRESULT OnSetIcon(UINT size_type, HICON new_icon);
virtual LRESULT OnSetText(const wchar_t* text);
+ virtual void OnSettingChange(UINT flags, const wchar_t* section);
virtual void OnSize(UINT size_param, const CSize& new_size);
virtual void OnSysCommand(UINT notification_code, CPoint click);
virtual void OnWindowPosChanging(WINDOWPOS* window_pos);
@@ -144,6 +155,15 @@
}
private:
+ // Information saved before going into fullscreen mode, used to restore the
+ // window afterwards.
+ struct SavedWindowInfo {
+ bool maximized;
+ LONG style;
+ LONG ex_style;
+ RECT window_rect;
+ };
+
// Set the window as modal (by disabling all the other windows).
void BecomeModal();
@@ -182,6 +202,9 @@
void LockUpdates();
void UnlockUpdates();
+ // Stops ignoring SetWindowPos() requests (see below).
+ void StopIgnoringPosChanges() { ignore_window_pos_changes_ = false; }
+
// Resets the window region for the current window bounds if necessary.
// If |force| is true, the window region is reset to NULL even for native
// frame windows.
@@ -241,6 +264,12 @@
// We need to own the text of the menu, the Windows API does not copy it.
std::wstring always_on_top_menu_text_;
+ // True if we're in fullscreen mode.
+ bool fullscreen_;
+
+ // Saved window information from before entering fullscreen mode.
+ SavedWindowInfo saved_window_info_;
+
// Set to true if the window is in the process of closing .
bool window_closed_;
@@ -261,12 +290,26 @@
// that explains why we save this.
bool saved_maximized_state_;
- // True if we should prevent attempts to make the window visible when we
- // handle WM_WINDOWPOSCHANGING. Some calls like ShowWindow(SW_RESTORE) make
- // the window visible in addition to restoring it, when all we want to do is
- // restore it.
- bool force_hidden_;
+ // When true, this flag makes us discard incoming SetWindowPos() requests that
+ // only change our position/size. (We still allow changes to Z-order,
+ // activation, etc.)
+ bool ignore_window_pos_changes_;
+ // The following factory is used to ignore SetWindowPos() calls for short time
+ // periods.
+ ScopedRunnableMethodFactory<WindowWin> ignore_pos_changes_factory_;
+
+ // If this is greater than zero, we should prevent attempts to make the window
+ // visible when we handle WM_WINDOWPOSCHANGING. Some calls like
+ // ShowWindow(SW_RESTORE) make the window visible in addition to restoring it,
+ // when all we want to do is restore it.
+ int force_hidden_count_;
+
+ // The last-seen monitor containing us, and its rect and work area. These are
+ // used to catch updates to the rect and work area and react accordingly.
+ HMONITOR last_monitor_;
+ gfx::Rect last_monitor_rect_, last_work_area_;
+
// Hold onto notifications.
NotificationRegistrar notification_registrar_;
« no previous file with comments | « chrome/views/window/window.h ('k') | chrome/views/window/window_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698