| OLD | NEW |
| 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/gfx/win/window_impl.h" |
| 6 | 6 |
| 7 #include <list> | 7 #include <list> |
| 8 | 8 |
| 9 #include "base/debug/alias.h" | 9 #include "base/debug/alias.h" |
| 10 #include "base/memory/singleton.h" | 10 #include "base/memory/singleton.h" |
| 11 #include "base/strings/string_number_conversions.h" | 11 #include "base/strings/string_number_conversions.h" |
| 12 #include "base/synchronization/lock.h" | 12 #include "base/synchronization/lock.h" |
| 13 #include "base/win/wrapped_window_proc.h" | 13 #include "base/win/wrapped_window_proc.h" |
| 14 #include "ui/base/win/hwnd_util.h" | 14 #include "ui/gfx/win/hwnd_util.h" |
| 15 | 15 |
| 16 namespace ui { | 16 namespace gfx { |
| 17 | 17 |
| 18 static const DWORD kWindowDefaultChildStyle = | 18 static const DWORD kWindowDefaultChildStyle = |
| 19 WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN | WS_CLIPSIBLINGS; | 19 WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN | WS_CLIPSIBLINGS; |
| 20 static const DWORD kWindowDefaultStyle = WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN; | 20 static const DWORD kWindowDefaultStyle = WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN; |
| 21 static const DWORD kWindowDefaultExStyle = 0; | 21 static const DWORD kWindowDefaultExStyle = 0; |
| 22 | 22 |
| 23 /////////////////////////////////////////////////////////////////////////////// | 23 /////////////////////////////////////////////////////////////////////////////// |
| 24 // WindowImpl class tracking. | 24 // WindowImpl class tracking. |
| 25 | 25 |
| 26 // Several external scripts rely explicitly on this base class name for | 26 // Several external scripts rely explicitly on this base class name for |
| (...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 142 got_valid_hwnd_(false), | 142 got_valid_hwnd_(false), |
| 143 destroyed_(NULL) { | 143 destroyed_(NULL) { |
| 144 } | 144 } |
| 145 | 145 |
| 146 WindowImpl::~WindowImpl() { | 146 WindowImpl::~WindowImpl() { |
| 147 if (destroyed_) | 147 if (destroyed_) |
| 148 *destroyed_ = true; | 148 *destroyed_ = true; |
| 149 ClearUserData(); | 149 ClearUserData(); |
| 150 } | 150 } |
| 151 | 151 |
| 152 void WindowImpl::Init(HWND parent, const gfx::Rect& bounds) { | 152 void WindowImpl::Init(HWND parent, const Rect& bounds) { |
| 153 if (window_style_ == 0) | 153 if (window_style_ == 0) |
| 154 window_style_ = parent ? kWindowDefaultChildStyle : kWindowDefaultStyle; | 154 window_style_ = parent ? kWindowDefaultChildStyle : kWindowDefaultStyle; |
| 155 | 155 |
| 156 if (parent == HWND_DESKTOP) { | 156 if (parent == HWND_DESKTOP) { |
| 157 // Only non-child windows can have HWND_DESKTOP (0) as their parent. | 157 // Only non-child windows can have HWND_DESKTOP (0) as their parent. |
| 158 CHECK((window_style_ & WS_CHILD) == 0); | 158 CHECK((window_style_ & WS_CHILD) == 0); |
| 159 parent = GetWindowToParentTo(false); | 159 parent = GetWindowToParentTo(false); |
| 160 } else if (parent == ::GetDesktopWindow()) { | 160 } else if (parent == ::GetDesktopWindow()) { |
| 161 // Any type of window can have the "Desktop Window" as their parent. | 161 // Any type of window can have the "Desktop Window" as their parent. |
| 162 parent = GetWindowToParentTo(true); | 162 parent = GetWindowToParentTo(true); |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 209 base::win::WrappedWindowProc<&WindowImpl::WndProc>; | 209 base::win::WrappedWindowProc<&WindowImpl::WndProc>; |
| 210 base::debug::Alias(&procs_match); | 210 base::debug::Alias(&procs_match); |
| 211 CHECK(false); | 211 CHECK(false); |
| 212 } | 212 } |
| 213 if (!destroyed) | 213 if (!destroyed) |
| 214 destroyed_ = NULL; | 214 destroyed_ = NULL; |
| 215 | 215 |
| 216 CheckWindowCreated(hwnd_); | 216 CheckWindowCreated(hwnd_); |
| 217 | 217 |
| 218 // The window procedure should have set the data for us. | 218 // The window procedure should have set the data for us. |
| 219 CHECK_EQ(this, ui::GetWindowUserData(hwnd)); | 219 CHECK_EQ(this, GetWindowUserData(hwnd)); |
| 220 } | 220 } |
| 221 | 221 |
| 222 HICON WindowImpl::GetDefaultWindowIcon() const { | 222 HICON WindowImpl::GetDefaultWindowIcon() const { |
| 223 return NULL; | 223 return NULL; |
| 224 } | 224 } |
| 225 | 225 |
| 226 LRESULT WindowImpl::OnWndProc(UINT message, WPARAM w_param, LPARAM l_param) { | 226 LRESULT WindowImpl::OnWndProc(UINT message, WPARAM w_param, LPARAM l_param) { |
| 227 LRESULT result = 0; | 227 LRESULT result = 0; |
| 228 | 228 |
| 229 // Handle the message if it's in our message map; otherwise, let the system | 229 // Handle the message if it's in our message map; otherwise, let the system |
| 230 // handle it. | 230 // handle it. |
| 231 if (!ProcessWindowMessage(hwnd_, message, w_param, l_param, result)) | 231 if (!ProcessWindowMessage(hwnd_, message, w_param, l_param, result)) |
| 232 result = DefWindowProc(hwnd_, message, w_param, l_param); | 232 result = DefWindowProc(hwnd_, message, w_param, l_param); |
| 233 | 233 |
| 234 return result; | 234 return result; |
| 235 } | 235 } |
| 236 | 236 |
| 237 void WindowImpl::ClearUserData() { | 237 void WindowImpl::ClearUserData() { |
| 238 if (::IsWindow(hwnd_)) | 238 if (::IsWindow(hwnd_)) |
| 239 ui::SetWindowUserData(hwnd_, NULL); | 239 gfx::SetWindowUserData(hwnd_, NULL); |
| 240 } | 240 } |
| 241 | 241 |
| 242 // static | 242 // static |
| 243 LRESULT CALLBACK WindowImpl::WndProc(HWND hwnd, | 243 LRESULT CALLBACK WindowImpl::WndProc(HWND hwnd, |
| 244 UINT message, | 244 UINT message, |
| 245 WPARAM w_param, | 245 WPARAM w_param, |
| 246 LPARAM l_param) { | 246 LPARAM l_param) { |
| 247 if (message == WM_NCCREATE) { | 247 if (message == WM_NCCREATE) { |
| 248 CREATESTRUCT* cs = reinterpret_cast<CREATESTRUCT*>(l_param); | 248 CREATESTRUCT* cs = reinterpret_cast<CREATESTRUCT*>(l_param); |
| 249 WindowImpl* window = reinterpret_cast<WindowImpl*>(cs->lpCreateParams); | 249 WindowImpl* window = reinterpret_cast<WindowImpl*>(cs->lpCreateParams); |
| 250 DCHECK(window); | 250 DCHECK(window); |
| 251 ui::SetWindowUserData(hwnd, window); | 251 gfx::SetWindowUserData(hwnd, window); |
| 252 window->hwnd_ = hwnd; | 252 window->hwnd_ = hwnd; |
| 253 window->got_create_ = true; | 253 window->got_create_ = true; |
| 254 if (hwnd) | 254 if (hwnd) |
| 255 window->got_valid_hwnd_ = true; | 255 window->got_valid_hwnd_ = true; |
| 256 return TRUE; | 256 return TRUE; |
| 257 } | 257 } |
| 258 | 258 |
| 259 WindowImpl* window = reinterpret_cast<WindowImpl*>( | 259 WindowImpl* window = reinterpret_cast<WindowImpl*>(GetWindowUserData(hwnd)); |
| 260 ui::GetWindowUserData(hwnd)); | |
| 261 if (!window) | 260 if (!window) |
| 262 return 0; | 261 return 0; |
| 263 | 262 |
| 264 return window->OnWndProc(message, w_param, l_param); | 263 return window->OnWndProc(message, w_param, l_param); |
| 265 } | 264 } |
| 266 | 265 |
| 267 ATOM WindowImpl::GetWindowClassAtom() { | 266 ATOM WindowImpl::GetWindowClassAtom() { |
| 268 HICON icon = GetDefaultWindowIcon(); | 267 HICON icon = GetDefaultWindowIcon(); |
| 269 ClassInfo class_info(initial_class_style(), icon); | 268 ClassInfo class_info(initial_class_style(), icon); |
| 270 return ClassRegistrar::GetInstance()->RetrieveClassAtom(class_info); | 269 return ClassRegistrar::GetInstance()->RetrieveClassAtom(class_info); |
| 271 } | 270 } |
| 272 | 271 |
| 273 } // namespace ui | 272 } // namespace gfx |
| OLD | NEW |