OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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_VIEWS_WINDOW_WINDOW_WIN_H__ | 5 #ifndef CHROME_VIEWS_WINDOW_WINDOW_WIN_H__ |
6 #define CHROME_VIEWS_WINDOW_WINDOW_WIN_H__ | 6 #define CHROME_VIEWS_WINDOW_WINDOW_WIN_H__ |
7 | 7 |
8 #include "chrome/common/notification_registrar.h" | 8 #include "chrome/common/notification_registrar.h" |
9 #include "chrome/views/widget/widget_win.h" | 9 #include "chrome/views/widget/widget_win.h" |
10 #include "chrome/views/window/client_view.h" | 10 #include "chrome/views/window/client_view.h" |
(...skipping 30 matching lines...) Expand all Loading... |
41 // Retrieve the show state of the window. This is one of the SW_SHOW* flags | 41 // Retrieve the show state of the window. This is one of the SW_SHOW* flags |
42 // passed into Windows' ShowWindow method. For normal windows this defaults | 42 // passed into Windows' ShowWindow method. For normal windows this defaults |
43 // to SW_SHOWNORMAL, however windows (e.g. the main window) can override this | 43 // to SW_SHOWNORMAL, however windows (e.g. the main window) can override this |
44 // method to provide different values (e.g. retrieve the user's specified | 44 // method to provide different values (e.g. retrieve the user's specified |
45 // show state from the shortcut starutp info). | 45 // show state from the shortcut starutp info). |
46 virtual int GetShowState() const; | 46 virtual int GetShowState() const; |
47 | 47 |
48 // Executes the specified SC_command. | 48 // Executes the specified SC_command. |
49 void ExecuteSystemMenuCommand(int command); | 49 void ExecuteSystemMenuCommand(int command); |
50 | 50 |
| 51 // Hides the window if it hasn't already been force-hidden, then increments |
| 52 // |force_hidden_count_| to prevent it from being shown again until |
| 53 // PopForceHidden()) is called. |
| 54 void PushForceHidden(); |
| 55 |
| 56 // Decrements |force_hidden_count_| and, if it is now zero, shows the window. |
| 57 void PopForceHidden(); |
| 58 |
51 // Accessors and setters for various properties. | 59 // Accessors and setters for various properties. |
52 HWND owning_window() const { return owning_hwnd_; } | 60 HWND owning_window() const { return owning_hwnd_; } |
53 void set_focus_on_creation(bool focus_on_creation) { | 61 void set_focus_on_creation(bool focus_on_creation) { |
54 focus_on_creation_ = focus_on_creation; | 62 focus_on_creation_ = focus_on_creation; |
55 } | 63 } |
56 void set_force_hidden(bool force_hidden) { force_hidden_ = force_hidden; } | |
57 | 64 |
58 // Window overrides: | 65 // Window overrides: |
59 virtual gfx::Rect GetBounds() const; | 66 virtual gfx::Rect GetBounds() const; |
| 67 virtual gfx::Rect GetNormalBounds() const; |
60 virtual void SetBounds(const gfx::Rect& bounds); | 68 virtual void SetBounds(const gfx::Rect& bounds); |
61 virtual void SetBounds(const gfx::Rect& bounds, | 69 virtual void SetBounds(const gfx::Rect& bounds, |
62 gfx::NativeWindow other_window); | 70 gfx::NativeWindow other_window); |
63 virtual void Show(); | 71 virtual void Show(); |
64 virtual void Activate(); | 72 virtual void Activate(); |
65 virtual void Close(); | 73 virtual void Close(); |
66 virtual void Maximize(); | 74 virtual void Maximize(); |
67 virtual void Minimize(); | 75 virtual void Minimize(); |
68 virtual void Restore(); | 76 virtual void Restore(); |
69 virtual bool IsActive() const; | 77 virtual bool IsActive() const; |
70 virtual bool IsVisible() const; | 78 virtual bool IsVisible() const; |
71 virtual bool IsMaximized() const; | 79 virtual bool IsMaximized() const; |
72 virtual bool IsMinimized() const; | 80 virtual bool IsMinimized() const; |
| 81 virtual void SetFullscreen(bool fullscreen); |
| 82 virtual bool IsFullscreen() const; |
73 virtual void EnableClose(bool enable); | 83 virtual void EnableClose(bool enable); |
74 virtual void DisableInactiveRendering(); | 84 virtual void DisableInactiveRendering(); |
75 virtual void UpdateWindowTitle(); | 85 virtual void UpdateWindowTitle(); |
76 virtual void UpdateWindowIcon(); | 86 virtual void UpdateWindowIcon(); |
77 virtual NonClientFrameView* CreateFrameViewForWindow(); | 87 virtual NonClientFrameView* CreateFrameViewForWindow(); |
78 virtual void UpdateFrameAfterFrameChange(); | 88 virtual void UpdateFrameAfterFrameChange(); |
79 virtual WindowDelegate* GetDelegate() const; | 89 virtual WindowDelegate* GetDelegate() const; |
80 virtual NonClientView* GetNonClientView() const; | 90 virtual NonClientView* GetNonClientView() const; |
81 virtual ClientView* GetClientView() const; | 91 virtual ClientView* GetClientView() const; |
82 virtual gfx::NativeWindow GetNativeWindow() const; | 92 virtual gfx::NativeWindow GetNativeWindow() const; |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
125 virtual LRESULT OnNCCalcSize(BOOL mode, LPARAM l_param); | 135 virtual LRESULT OnNCCalcSize(BOOL mode, LPARAM l_param); |
126 virtual LRESULT OnNCHitTest(const CPoint& point); | 136 virtual LRESULT OnNCHitTest(const CPoint& point); |
127 virtual void OnNCPaint(HRGN rgn); | 137 virtual void OnNCPaint(HRGN rgn); |
128 virtual void OnNCLButtonDown(UINT ht_component, const CPoint& point); | 138 virtual void OnNCLButtonDown(UINT ht_component, const CPoint& point); |
129 virtual void OnNCRButtonDown(UINT ht_component, const CPoint& point); | 139 virtual void OnNCRButtonDown(UINT ht_component, const CPoint& point); |
130 virtual LRESULT OnNCUAHDrawCaption(UINT msg, WPARAM w_param, LPARAM l_param); | 140 virtual LRESULT OnNCUAHDrawCaption(UINT msg, WPARAM w_param, LPARAM l_param); |
131 virtual LRESULT OnNCUAHDrawFrame(UINT msg, WPARAM w_param, LPARAM l_param); | 141 virtual LRESULT OnNCUAHDrawFrame(UINT msg, WPARAM w_param, LPARAM l_param); |
132 virtual LRESULT OnSetCursor(HWND window, UINT hittest_code, UINT message); | 142 virtual LRESULT OnSetCursor(HWND window, UINT hittest_code, UINT message); |
133 virtual LRESULT OnSetIcon(UINT size_type, HICON new_icon); | 143 virtual LRESULT OnSetIcon(UINT size_type, HICON new_icon); |
134 virtual LRESULT OnSetText(const wchar_t* text); | 144 virtual LRESULT OnSetText(const wchar_t* text); |
| 145 virtual void OnSettingChange(UINT flags, const wchar_t* section); |
135 virtual void OnSize(UINT size_param, const CSize& new_size); | 146 virtual void OnSize(UINT size_param, const CSize& new_size); |
136 virtual void OnSysCommand(UINT notification_code, CPoint click); | 147 virtual void OnSysCommand(UINT notification_code, CPoint click); |
137 virtual void OnWindowPosChanging(WINDOWPOS* window_pos); | 148 virtual void OnWindowPosChanging(WINDOWPOS* window_pos); |
138 virtual Window* AsWindow() { return this; } | 149 virtual Window* AsWindow() { return this; } |
139 virtual const Window* AsWindow() const { return this; } | 150 virtual const Window* AsWindow() const { return this; } |
140 | 151 |
141 // Accessor for disable_inactive_rendering_. | 152 // Accessor for disable_inactive_rendering_. |
142 bool disable_inactive_rendering() const { | 153 bool disable_inactive_rendering() const { |
143 return disable_inactive_rendering_; | 154 return disable_inactive_rendering_; |
144 } | 155 } |
145 | 156 |
146 private: | 157 private: |
| 158 // Information saved before going into fullscreen mode, used to restore the |
| 159 // window afterwards. |
| 160 struct SavedWindowInfo { |
| 161 bool maximized; |
| 162 LONG style; |
| 163 LONG ex_style; |
| 164 RECT window_rect; |
| 165 }; |
| 166 |
147 // Set the window as modal (by disabling all the other windows). | 167 // Set the window as modal (by disabling all the other windows). |
148 void BecomeModal(); | 168 void BecomeModal(); |
149 | 169 |
150 // Sets-up the focus manager with the view that should have focus when the | 170 // Sets-up the focus manager with the view that should have focus when the |
151 // window is shown the first time. If NULL is returned, the focus goes to the | 171 // window is shown the first time. If NULL is returned, the focus goes to the |
152 // button if there is one, otherwise the to the Cancel button. | 172 // button if there is one, otherwise the to the Cancel button. |
153 void SetInitialFocus(); | 173 void SetInitialFocus(); |
154 | 174 |
155 // Place and size the window when it is created. |create_bounds| are the | 175 // Place and size the window when it is created. |create_bounds| are the |
156 // bounds used when the window was created. | 176 // bounds used when the window was created. |
(...skipping 18 matching lines...) Expand all Loading... |
175 | 195 |
176 // Asks the delegate if any to save the window's location and size. | 196 // Asks the delegate if any to save the window's location and size. |
177 void SaveWindowPosition(); | 197 void SaveWindowPosition(); |
178 | 198 |
179 // Lock or unlock the window from being able to redraw itself in response to | 199 // Lock or unlock the window from being able to redraw itself in response to |
180 // updates to its invalid region. | 200 // updates to its invalid region. |
181 class ScopedRedrawLock; | 201 class ScopedRedrawLock; |
182 void LockUpdates(); | 202 void LockUpdates(); |
183 void UnlockUpdates(); | 203 void UnlockUpdates(); |
184 | 204 |
| 205 // Stops ignoring SetWindowPos() requests (see below). |
| 206 void StopIgnoringPosChanges() { ignore_window_pos_changes_ = false; } |
| 207 |
185 // Resets the window region for the current window bounds if necessary. | 208 // Resets the window region for the current window bounds if necessary. |
186 // If |force| is true, the window region is reset to NULL even for native | 209 // If |force| is true, the window region is reset to NULL even for native |
187 // frame windows. | 210 // frame windows. |
188 void ResetWindowRegion(bool force); | 211 void ResetWindowRegion(bool force); |
189 | 212 |
190 // Converts a non-client mouse down message to a regular ChromeViews event | 213 // Converts a non-client mouse down message to a regular ChromeViews event |
191 // and handle it. |point| is the mouse position of the message in screen | 214 // and handle it. |point| is the mouse position of the message in screen |
192 // coords. |flags| are flags that would be passed with a WM_L/M/RBUTTON* | 215 // coords. |flags| are flags that would be passed with a WM_L/M/RBUTTON* |
193 // message and relate to things like which button was pressed. These are | 216 // message and relate to things like which button was pressed. These are |
194 // combined with flags relating to the current key state. | 217 // combined with flags relating to the current key state. |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
234 // Whether all ancestors have been enabled. This is only used if is_modal_ is | 257 // Whether all ancestors have been enabled. This is only used if is_modal_ is |
235 // true. | 258 // true. |
236 bool restored_enabled_; | 259 bool restored_enabled_; |
237 | 260 |
238 // Whether the window is currently always on top. | 261 // Whether the window is currently always on top. |
239 bool is_always_on_top_; | 262 bool is_always_on_top_; |
240 | 263 |
241 // We need to own the text of the menu, the Windows API does not copy it. | 264 // We need to own the text of the menu, the Windows API does not copy it. |
242 std::wstring always_on_top_menu_text_; | 265 std::wstring always_on_top_menu_text_; |
243 | 266 |
| 267 // True if we're in fullscreen mode. |
| 268 bool fullscreen_; |
| 269 |
| 270 // Saved window information from before entering fullscreen mode. |
| 271 SavedWindowInfo saved_window_info_; |
| 272 |
244 // Set to true if the window is in the process of closing . | 273 // Set to true if the window is in the process of closing . |
245 bool window_closed_; | 274 bool window_closed_; |
246 | 275 |
247 // True when the window should be rendered as active, regardless of whether | 276 // True when the window should be rendered as active, regardless of whether |
248 // or not it actually is. | 277 // or not it actually is. |
249 bool disable_inactive_rendering_; | 278 bool disable_inactive_rendering_; |
250 | 279 |
251 // True if this window is the active top level window. | 280 // True if this window is the active top level window. |
252 bool is_active_; | 281 bool is_active_; |
253 | 282 |
254 // True if updates to this window are currently locked. | 283 // True if updates to this window are currently locked. |
255 bool lock_updates_; | 284 bool lock_updates_; |
256 | 285 |
257 // The window styles of the window before updates were locked. | 286 // The window styles of the window before updates were locked. |
258 DWORD saved_window_style_; | 287 DWORD saved_window_style_; |
259 | 288 |
260 // The saved maximized state for this window. See note in SetInitialBounds | 289 // The saved maximized state for this window. See note in SetInitialBounds |
261 // that explains why we save this. | 290 // that explains why we save this. |
262 bool saved_maximized_state_; | 291 bool saved_maximized_state_; |
263 | 292 |
264 // True if we should prevent attempts to make the window visible when we | 293 // When true, this flag makes us discard incoming SetWindowPos() requests that |
265 // handle WM_WINDOWPOSCHANGING. Some calls like ShowWindow(SW_RESTORE) make | 294 // only change our position/size. (We still allow changes to Z-order, |
266 // the window visible in addition to restoring it, when all we want to do is | 295 // activation, etc.) |
267 // restore it. | 296 bool ignore_window_pos_changes_; |
268 bool force_hidden_; | 297 |
| 298 // The following factory is used to ignore SetWindowPos() calls for short time |
| 299 // periods. |
| 300 ScopedRunnableMethodFactory<WindowWin> ignore_pos_changes_factory_; |
| 301 |
| 302 // If this is greater than zero, we should prevent attempts to make the window |
| 303 // visible when we handle WM_WINDOWPOSCHANGING. Some calls like |
| 304 // ShowWindow(SW_RESTORE) make the window visible in addition to restoring it, |
| 305 // when all we want to do is restore it. |
| 306 int force_hidden_count_; |
| 307 |
| 308 // The last-seen monitor containing us, and its rect and work area. These are |
| 309 // used to catch updates to the rect and work area and react accordingly. |
| 310 HMONITOR last_monitor_; |
| 311 gfx::Rect last_monitor_rect_, last_work_area_; |
269 | 312 |
270 // Hold onto notifications. | 313 // Hold onto notifications. |
271 NotificationRegistrar notification_registrar_; | 314 NotificationRegistrar notification_registrar_; |
272 | 315 |
273 DISALLOW_COPY_AND_ASSIGN(WindowWin); | 316 DISALLOW_COPY_AND_ASSIGN(WindowWin); |
274 }; | 317 }; |
275 | 318 |
276 } // namespace views | 319 } // namespace views |
277 | 320 |
278 #endif // CHROME_VIEWS_WINDOW_WINDOW_WIN_H__ | 321 #endif // CHROME_VIEWS_WINDOW_WINDOW_WIN_H__ |
OLD | NEW |