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

Side by Side Diff: chrome/views/window.h

Issue 27317: Support DWM switching.... (Closed) Base URL: svn://chrome-svn.corp.google.com/chrome/trunk/src/
Patch Set: '' Created 11 years, 9 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 unified diff | Download patch
« no previous file with comments | « chrome/views/widget_win.cc ('k') | chrome/views/window.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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_H__ 5 #ifndef CHROME_VIEWS_WINDOW_H__
6 #define CHROME_VIEWS_WINDOW_H__ 6 #define CHROME_VIEWS_WINDOW_H__
7 7
8 #include "chrome/common/notification_registrar.h" 8 #include "chrome/common/notification_registrar.h"
9 #include "chrome/views/client_view.h" 9 #include "chrome/views/client_view.h"
10 #include "chrome/views/non_client_view.h" 10 #include "chrome/views/non_client_view.h"
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 61
62 // Sizes and/or places the window to the specified bounds, size or position. 62 // Sizes and/or places the window to the specified bounds, size or position.
63 void SetBounds(const gfx::Rect& bounds); 63 void SetBounds(const gfx::Rect& bounds);
64 // As above, except the window is inserted after |other_hwnd| in the window 64 // As above, except the window is inserted after |other_hwnd| in the window
65 // Z-order. If this window's HWND is not yet visible, other_hwnd's monitor 65 // Z-order. If this window's HWND is not yet visible, other_hwnd's monitor
66 // is used as the constraining rectangle, rather than this window's hwnd's 66 // is used as the constraining rectangle, rather than this window's hwnd's
67 // monitor. 67 // monitor.
68 void SetBounds(const gfx::Rect& bounds, HWND other_hwnd); 68 void SetBounds(const gfx::Rect& bounds, HWND other_hwnd);
69 69
70 // Closes the window, ultimately destroying it. 70 // Closes the window, ultimately destroying it.
71 virtual void Close(); 71 void Close();
72 72
73 // Whether or not the window is maximized or minimized. 73 // Whether or not the window is maximized or minimized.
74 bool IsMaximized() const; 74 bool IsMaximized() const;
75 bool IsMinimized() const; 75 bool IsMinimized() const;
76 76
77 // Toggles the enable state for the Close button (and the Close menu item in 77 // Toggles the enable state for the Close button (and the Close menu item in
78 // the system menu). 78 // the system menu).
79 virtual void EnableClose(bool enable); 79 void EnableClose(bool enable);
80 80
81 // Prevents the window from being rendered as deactivated when |disable| is 81 // Prevents the window from being rendered as deactivated the next time it is.
82 // true, until called with |disable| false. Used when a sub-window is to be 82 // This state is reset automatically as soon as the window becomes actiated
83 // shown that shouldn't visually de-activate the window. 83 // again. There is no ability to control the state through this API as this
84 // Subclasses can override this to perform additional actions when this value 84 // leads to sync problems.
85 // changes. 85 void DisableInactiveRendering();
86 virtual void DisableInactiveRendering(bool disable);
87 86
87 // Tell the window to update its title from the delegate.
88 void UpdateWindowTitle();
89
90 // Tell the window to update its icon from the delegate.
91 void UpdateWindowIcon();
92
93 // Executes the specified SC_command.
94 void ExecuteSystemMenuCommand(int command);
95
96 // Shortcut to access the determination of whether or not we're using a
97 // native frame. This triggers different rendering modes in certain views and
98 // should be used in preference to calling win_util::ShouldUseVistaFrame.
99 bool UseNativeFrame() const { return non_client_view_->UseNativeFrame(); }
100
101 // Returns the bounds of the window required to display the content area
102 // at the specified bounds.
103 gfx::Rect GetWindowBoundsForClientBounds(const gfx::Rect& client_bounds);
104
105 // Creates an appropriate NonClientFrameView for this window.
106 virtual NonClientFrameView* CreateFrameViewForWindow();
107
108 // Updates the frame after an event caused it to be changed.
109 virtual void UpdateFrameAfterFrameChange();
110
111 // Accessors and setters for various properties.
88 WindowDelegate* window_delegate() const { return window_delegate_; } 112 WindowDelegate* window_delegate() const { return window_delegate_; }
89 113 HWND owning_window() const { return owning_hwnd_; }
114 ClientView* client_view() const { return non_client_view_->client_view(); }
115 bool is_active() const { return is_active_; }
90 void set_focus_on_creation(bool focus_on_creation) { 116 void set_focus_on_creation(bool focus_on_creation) {
91 focus_on_creation_ = focus_on_creation; 117 focus_on_creation_ = focus_on_creation;
92 } 118 }
93 119
94 // Tell the window to update its title from the delegate.
95 virtual void UpdateWindowTitle();
96
97 // Tell the window to update its icon from the delegate.
98 virtual void UpdateWindowIcon();
99
100 // Executes the specified SC_command.
101 void ExecuteSystemMenuCommand(int command);
102
103 // The parent of this window.
104 HWND owning_window() const { return owning_hwnd_; }
105
106 // Shortcut to access the ClientView associated with this window.
107 ClientView* client_view() const { return non_client_view_->client_view(); }
108
109 // Returns the preferred size of the contents view of this window based on 120 // Returns the preferred size of the contents view of this window based on
110 // its localized size data. The width in cols is held in a localized string 121 // its localized size data. The width in cols is held in a localized string
111 // resource identified by |col_resource_id|, the height in the same fashion. 122 // resource identified by |col_resource_id|, the height in the same fashion.
112 // TODO(beng): This should eventually live somewhere else, probably closer to 123 // TODO(beng): This should eventually live somewhere else, probably closer to
113 // ClientView. 124 // ClientView.
114 static int GetLocalizedContentsWidth(int col_resource_id); 125 static int GetLocalizedContentsWidth(int col_resource_id);
115 static int GetLocalizedContentsHeight(int row_resource_id); 126 static int GetLocalizedContentsHeight(int row_resource_id);
116 static gfx::Size GetLocalizedContentsSize(int col_resource_id, 127 static gfx::Size GetLocalizedContentsSize(int col_resource_id,
117 int row_resource_id); 128 int row_resource_id);
118 129
(...skipping 18 matching lines...) Expand all
137 // Returns true if the Window is considered to be an "app window" - i.e. any 148 // Returns true if the Window is considered to be an "app window" - i.e. any
138 // window which when it is the last of its type closed causes the application 149 // window which when it is the last of its type closed causes the application
139 // to exit. 150 // to exit.
140 virtual bool IsAppWindow() const { return false; } 151 virtual bool IsAppWindow() const { return false; }
141 152
142 // Shows the system menu at the specified screen point. 153 // Shows the system menu at the specified screen point.
143 void RunSystemMenu(const gfx::Point& point); 154 void RunSystemMenu(const gfx::Point& point);
144 155
145 // Overridden from WidgetWin: 156 // Overridden from WidgetWin:
146 virtual void OnActivate(UINT action, BOOL minimized, HWND window); 157 virtual void OnActivate(UINT action, BOOL minimized, HWND window);
158 virtual void OnActivateApp(BOOL active, DWORD thread_id);
147 virtual LRESULT OnAppCommand(HWND window, short app_command, WORD device, 159 virtual LRESULT OnAppCommand(HWND window, short app_command, WORD device,
148 int keystate); 160 int keystate);
149 virtual void OnCommand(UINT notification_code, int command_id, HWND window); 161 virtual void OnCommand(UINT notification_code, int command_id, HWND window);
150 virtual void OnDestroy(); 162 virtual void OnDestroy();
163 virtual LRESULT OnDwmCompositionChanged(UINT msg, WPARAM w_param,
164 LPARAM l_param);
151 virtual void OnInitMenu(HMENU menu); 165 virtual void OnInitMenu(HMENU menu);
152 virtual void OnMouseLeave(); 166 virtual void OnMouseLeave();
153 virtual LRESULT OnNCActivate(BOOL active); 167 virtual LRESULT OnNCActivate(BOOL active);
154 virtual LRESULT OnNCCalcSize(BOOL mode, LPARAM l_param); 168 virtual LRESULT OnNCCalcSize(BOOL mode, LPARAM l_param);
155 virtual LRESULT OnNCHitTest(const CPoint& point); 169 virtual LRESULT OnNCHitTest(const CPoint& point);
156 virtual LRESULT OnNCUAHDrawCaption(UINT msg, WPARAM w_param, LPARAM l_param);
157 virtual LRESULT OnNCUAHDrawFrame(UINT msg, WPARAM w_param, LPARAM l_param);
158 virtual void OnNCPaint(HRGN rgn); 170 virtual void OnNCPaint(HRGN rgn);
159 virtual void OnNCLButtonDown(UINT ht_component, const CPoint& point); 171 virtual void OnNCLButtonDown(UINT ht_component, const CPoint& point);
160 virtual void OnNCRButtonDown(UINT ht_component, const CPoint& point); 172 virtual void OnNCRButtonDown(UINT ht_component, const CPoint& point);
173 virtual LRESULT OnNCUAHDrawCaption(UINT msg, WPARAM w_param, LPARAM l_param);
174 virtual LRESULT OnNCUAHDrawFrame(UINT msg, WPARAM w_param, LPARAM l_param);
161 virtual LRESULT OnSetCursor(HWND window, UINT hittest_code, UINT message); 175 virtual LRESULT OnSetCursor(HWND window, UINT hittest_code, UINT message);
162 virtual LRESULT OnSetIcon(UINT size_type, HICON new_icon); 176 virtual LRESULT OnSetIcon(UINT size_type, HICON new_icon);
163 virtual LRESULT OnSetText(const wchar_t* text); 177 virtual LRESULT OnSetText(const wchar_t* text);
164 virtual void OnSize(UINT size_param, const CSize& new_size); 178 virtual void OnSize(UINT size_param, const CSize& new_size);
165 virtual void OnSysCommand(UINT notification_code, CPoint click); 179 virtual void OnSysCommand(UINT notification_code, CPoint click);
180 virtual Window* AsWindow() { return this; }
181 virtual const Window* AsWindow() const { return this; }
166 182
167 // The View that provides the non-client area of the window (title bar, 183 // The View that provides the non-client area of the window (title bar,
168 // window controls, sizing borders etc). To use an implementation other than 184 // window controls, sizing borders etc). To use an implementation other than
169 // the default, this class must be subclassed and this value set to the 185 // the default, this class must be subclassed and this value set to the
170 // desired implementation before calling |Init|. 186 // desired implementation before calling |Init|.
171 NonClientView* non_client_view_; 187 NonClientView* non_client_view_;
172 188
173 // Accessor for disable_inactive_rendering_. 189 // Accessor for disable_inactive_rendering_.
174 bool disable_inactive_rendering() const { 190 bool disable_inactive_rendering() const {
175 return disable_inactive_rendering_; 191 return disable_inactive_rendering_;
176 } 192 }
177 193
178 private: 194 private:
179 // Sets the specified view as the ClientView of this Window. The ClientView
180 // is responsible for laying out the Window's contents view, as well as
181 // performing basic hit-testing, and perhaps other responsibilities depending
182 // on the implementation. The Window's view hierarchy takes ownership of the
183 // ClientView unless the ClientView specifies otherwise. This must be called
184 // only once, and after the native window has been created.
185 // This is called by Init. |client_view| cannot be NULL.
186 void SetClientView(ClientView* client_view);
187
188 // Set the window as modal (by disabling all the other windows). 195 // Set the window as modal (by disabling all the other windows).
189 void BecomeModal(); 196 void BecomeModal();
190 197
191 // Sets-up the focus manager with the view that should have focus when the 198 // Sets-up the focus manager with the view that should have focus when the
192 // window is shown the first time. If NULL is returned, the focus goes to the 199 // window is shown the first time. If NULL is returned, the focus goes to the
193 // button if there is one, otherwise the to the Cancel button. 200 // button if there is one, otherwise the to the Cancel button.
194 void SetInitialFocus(); 201 void SetInitialFocus();
195 202
196 // Place and size the window when it is created. |create_bounds| are the 203 // Place and size the window when it is created. |create_bounds| are the
197 // bounds used when the window was created. 204 // bounds used when the window was created.
(...skipping 19 matching lines...) Expand all
217 // Asks the delegate if any to save the window's location and size. 224 // Asks the delegate if any to save the window's location and size.
218 void SaveWindowPosition(); 225 void SaveWindowPosition();
219 226
220 // Lock or unlock the window from being able to redraw itself in response to 227 // Lock or unlock the window from being able to redraw itself in response to
221 // updates to its invalid region. 228 // updates to its invalid region.
222 class ScopedRedrawLock; 229 class ScopedRedrawLock;
223 void LockUpdates(); 230 void LockUpdates();
224 void UnlockUpdates(); 231 void UnlockUpdates();
225 232
226 // Resets the window region for the current window bounds if necessary. 233 // Resets the window region for the current window bounds if necessary.
227 void ResetWindowRegion(); 234 // If |force| is true, the window region is reset to NULL even for native
235 // frame windows.
236 void ResetWindowRegion(bool force);
228 237
229 // Converts a non-client mouse down message to a regular ChromeViews event 238 // Converts a non-client mouse down message to a regular ChromeViews event
230 // and handle it. |point| is the mouse position of the message in screen 239 // and handle it. |point| is the mouse position of the message in screen
231 // coords. |flags| are flags that would be passed with a WM_L/M/RBUTTON* 240 // coords. |flags| are flags that would be passed with a WM_L/M/RBUTTON*
232 // message and relate to things like which button was pressed. These are 241 // message and relate to things like which button was pressed. These are
233 // combined with flags relating to the current key state. 242 // combined with flags relating to the current key state.
234 void ProcessNCMousePress(const CPoint& point, int flags); 243 void ProcessNCMousePress(const CPoint& point, int flags);
235 244
245 // Calls the default WM_NCACTIVATE handler with the specified activation
246 // value, safely wrapping the call in a ScopedRedrawLock to prevent frame
247 // flicker.
248 LRESULT CallDefaultNCActivateHandler(BOOL active);
249
236 // Static resource initialization. 250 // Static resource initialization.
237 static void InitClass(); 251 static void InitClass();
238 enum ResizeCursor { 252 enum ResizeCursor {
239 RC_NORMAL = 0, RC_VERTICAL, RC_HORIZONTAL, RC_NESW, RC_NWSE 253 RC_NORMAL = 0, RC_VERTICAL, RC_HORIZONTAL, RC_NESW, RC_NWSE
240 }; 254 };
241 static HCURSOR resize_cursors_[6]; 255 static HCURSOR resize_cursors_[6];
242 256
243 // Our window delegate (see Init method for documentation). 257 // Our window delegate (see Init method for documentation).
244 WindowDelegate* window_delegate_; 258 WindowDelegate* window_delegate_;
245 259
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
291 305
292 // Hold onto notifications. 306 // Hold onto notifications.
293 NotificationRegistrar notification_registrar_; 307 NotificationRegistrar notification_registrar_;
294 308
295 DISALLOW_COPY_AND_ASSIGN(Window); 309 DISALLOW_COPY_AND_ASSIGN(Window);
296 }; 310 };
297 311
298 } // namespace views 312 } // namespace views
299 313
300 #endif // CHROME_VIEWS_WINDOW_H__ 314 #endif // CHROME_VIEWS_WINDOW_H__
OLDNEW
« no previous file with comments | « chrome/views/widget_win.cc ('k') | chrome/views/window.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698