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

Side by Side Diff: ui/base/win/window_impl.cc

Issue 10059001: Merge 131673 - Make WindowImpl take into account the icon in the class registrar. (Closed) Base URL: svn://svn.chromium.org/chrome/branches/1084/src/
Patch Set: Created 8 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « ui/base/win/window_impl.h ('k') | no next file » | 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) 2012 The Chromium Authors. All rights reserved. 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 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 #include "ui/base/win/window_impl.h" 5 #include "ui/base/win/window_impl.h"
6 6
7 #include <list> 7 #include <list>
8 8
9 #include "base/memory/singleton.h" 9 #include "base/memory/singleton.h"
10 #include "base/string_number_conversions.h" 10 #include "base/string_number_conversions.h"
(...skipping 11 matching lines...) Expand all
22 // WindowImpl class tracking. 22 // WindowImpl class tracking.
23 23
24 // Several external scripts rely explicitly on this base class name for 24 // Several external scripts rely explicitly on this base class name for
25 // acquiring the window handle and will break if this is modified! 25 // acquiring the window handle and will break if this is modified!
26 // static 26 // static
27 const wchar_t* const WindowImpl::kBaseClassName = L"Chrome_WidgetWin_"; 27 const wchar_t* const WindowImpl::kBaseClassName = L"Chrome_WidgetWin_";
28 28
29 // WindowImpl class information used for registering unique windows. 29 // WindowImpl class information used for registering unique windows.
30 struct ClassInfo { 30 struct ClassInfo {
31 UINT style; 31 UINT style;
32 HBRUSH background; 32 HICON icon;
33 33
34 explicit ClassInfo(int style) 34 ClassInfo(int style, HICON icon)
35 : style(style), 35 : style(style),
36 background(NULL) {} 36 icon(icon) {}
37 37
38 // Compares two ClassInfos. Returns true if all members match. 38 // Compares two ClassInfos. Returns true if all members match.
39 bool Equals(const ClassInfo& other) const { 39 bool Equals(const ClassInfo& other) const {
40 return (other.style == style && other.background == background); 40 return (other.style == style && other.icon == icon);
41 } 41 }
42 }; 42 };
43 43
44 class ClassRegistrar { 44 class ClassRegistrar {
45 public: 45 public:
46 static ClassRegistrar* GetInstance() { 46 static ClassRegistrar* GetInstance() {
47 return Singleton<ClassRegistrar>::get(); 47 return Singleton<ClassRegistrar>::get();
48 } 48 }
49 49
50 ~ClassRegistrar() { 50 ~ClassRegistrar() {
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
190 190
191 WindowImpl* window = reinterpret_cast<WindowImpl*>( 191 WindowImpl* window = reinterpret_cast<WindowImpl*>(
192 ui::GetWindowUserData(hwnd)); 192 ui::GetWindowUserData(hwnd));
193 if (!window) 193 if (!window)
194 return 0; 194 return 0;
195 195
196 return window->OnWndProc(message, w_param, l_param); 196 return window->OnWndProc(message, w_param, l_param);
197 } 197 }
198 198
199 std::wstring WindowImpl::GetWindowClassName() { 199 std::wstring WindowImpl::GetWindowClassName() {
200 ClassInfo class_info(initial_class_style()); 200 HICON icon = GetDefaultWindowIcon();
201 ClassInfo class_info(initial_class_style(), icon);
201 std::wstring name; 202 std::wstring name;
202 if (ClassRegistrar::GetInstance()->RetrieveClassName(class_info, &name)) 203 if (ClassRegistrar::GetInstance()->RetrieveClassName(class_info, &name))
203 return name; 204 return name;
204 205
205 HICON icon = GetDefaultWindowIcon();
206
207 // No class found, need to register one. 206 // No class found, need to register one.
207 HBRUSH background = NULL;
208 WNDCLASSEX class_ex = { 208 WNDCLASSEX class_ex = {
209 sizeof(WNDCLASSEX), 209 sizeof(WNDCLASSEX),
210 class_info.style, 210 class_info.style,
211 base::win::WrappedWindowProc<&WindowImpl::WndProc>, 211 base::win::WrappedWindowProc<&WindowImpl::WndProc>,
212 0, 212 0,
213 0, 213 0,
214 NULL, 214 NULL,
215 icon, 215 icon,
216 NULL, 216 NULL,
217 reinterpret_cast<HBRUSH>(class_info.background + 1), 217 reinterpret_cast<HBRUSH>(background + 1),
218 NULL, 218 NULL,
219 name.c_str(), 219 name.c_str(),
220 icon 220 icon
221 }; 221 };
222 ATOM atom = RegisterClassEx(&class_ex); 222 ATOM atom = RegisterClassEx(&class_ex);
223 CHECK(atom) << GetLastError(); 223 CHECK(atom) << GetLastError();
224 224
225 ClassRegistrar::GetInstance()->RegisterClass(class_info, name, atom); 225 ClassRegistrar::GetInstance()->RegisterClass(class_info, name, atom);
226 226
227 return name; 227 return name;
228 } 228 }
229 229
230 } // namespace ui 230 } // namespace ui
OLDNEW
« no previous file with comments | « ui/base/win/window_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698