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

Side by Side Diff: chrome/browser/ui/tabs/dock_info_win.cc

Issue 10079011: Makes casts in DockInfoWin consistant. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/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 | « no previous file | 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "chrome/browser/ui/tabs/dock_info.h" 5 #include "chrome/browser/ui/tabs/dock_info.h"
6 6
7 #include "base/win/scoped_gdi_object.h" 7 #include "base/win/scoped_gdi_object.h"
8 #include "base/win/windows_version.h" 8 #include "base/win/windows_version.h"
9 #include "chrome/browser/ui/browser_list.h" 9 #include "chrome/browser/ui/browser_list.h"
10 #include "chrome/browser/ui/browser_window.h" 10 #include "chrome/browser/ui/browser_window.h"
(...skipping 10 matching lines...) Expand all
21 // 21 //
22 // A subclass need only override ShouldStopIterating to determine when 22 // A subclass need only override ShouldStopIterating to determine when
23 // iteration should stop. 23 // iteration should stop.
24 class BaseWindowFinder { 24 class BaseWindowFinder {
25 public: 25 public:
26 // Creates a BaseWindowFinder with the specified set of HWNDs to ignore. 26 // Creates a BaseWindowFinder with the specified set of HWNDs to ignore.
27 explicit BaseWindowFinder(const std::set<HWND>& ignore) : ignore_(ignore) {} 27 explicit BaseWindowFinder(const std::set<HWND>& ignore) : ignore_(ignore) {}
28 virtual ~BaseWindowFinder() {} 28 virtual ~BaseWindowFinder() {}
29 29
30 protected: 30 protected:
31 // Returns true if iteration should stop, false if iteration should continue.
32 virtual bool ShouldStopIterating(HWND window) = 0;
33
34 static BOOL CALLBACK WindowCallbackProc(HWND hwnd, LPARAM lParam) { 31 static BOOL CALLBACK WindowCallbackProc(HWND hwnd, LPARAM lParam) {
32 // Cast must match that in as_lparam().
35 BaseWindowFinder* finder = reinterpret_cast<BaseWindowFinder*>(lParam); 33 BaseWindowFinder* finder = reinterpret_cast<BaseWindowFinder*>(lParam);
36 if (finder->ignore_.find(hwnd) != finder->ignore_.end()) 34 if (finder->ignore_.find(hwnd) != finder->ignore_.end())
37 return TRUE; 35 return TRUE;
38 36
39 return finder->ShouldStopIterating(hwnd) ? FALSE : TRUE; 37 return finder->ShouldStopIterating(hwnd) ? FALSE : TRUE;
40 } 38 }
41 39
40 LPARAM as_lparam() {
41 // Cast must match that in WindowCallbackProc().
42 return reinterpret_cast<LPARAM>(static_cast<BaseWindowFinder*>(this));
43 }
44
45 // Returns true if iteration should stop, false if iteration should continue.
46 virtual bool ShouldStopIterating(HWND window) = 0;
47
42 private: 48 private:
43 const std::set<HWND>& ignore_; 49 const std::set<HWND>& ignore_;
44 50
45 DISALLOW_COPY_AND_ASSIGN(BaseWindowFinder); 51 DISALLOW_COPY_AND_ASSIGN(BaseWindowFinder);
46 }; 52 };
47 53
48 // TopMostFinder -------------------------------------------------------------- 54 // TopMostFinder --------------------------------------------------------------
49 55
50 // Helper class to determine if a particular point of a window is not obscured 56 // Helper class to determine if a particular point of a window is not obscured
51 // by another window. 57 // by another window.
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
111 117
112 private: 118 private:
113 TopMostFinder(HWND window, 119 TopMostFinder(HWND window,
114 const gfx::Point& screen_loc, 120 const gfx::Point& screen_loc,
115 const std::set<HWND>& ignore) 121 const std::set<HWND>& ignore)
116 : BaseWindowFinder(ignore), 122 : BaseWindowFinder(ignore),
117 target_(window), 123 target_(window),
118 screen_loc_(screen_loc), 124 screen_loc_(screen_loc),
119 is_top_most_(false), 125 is_top_most_(false),
120 tmp_region_(CreateRectRgn(0, 0, 0, 0)) { 126 tmp_region_(CreateRectRgn(0, 0, 0, 0)) {
121 EnumWindows(WindowCallbackProc, reinterpret_cast<LPARAM>(this)); 127 EnumWindows(WindowCallbackProc, as_lparam());
122 } 128 }
123 129
124 // The window we're looking for. 130 // The window we're looking for.
125 HWND target_; 131 HWND target_;
126 132
127 // Location of window to find. 133 // Location of window to find.
128 gfx::Point screen_loc_; 134 gfx::Point screen_loc_;
129 135
130 // Is target_ the top most window? This is initially false but set to true 136 // Is target_ the top most window? This is initially false but set to true
131 // in ShouldStopIterating if target_ is passed in. 137 // in ShouldStopIterating if target_ is passed in.
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 } 176 }
171 return false; 177 return false;
172 } 178 }
173 179
174 private: 180 private:
175 LocalProcessWindowFinder(const gfx::Point& screen_loc, 181 LocalProcessWindowFinder(const gfx::Point& screen_loc,
176 const std::set<HWND>& ignore) 182 const std::set<HWND>& ignore)
177 : BaseWindowFinder(ignore), 183 : BaseWindowFinder(ignore),
178 screen_loc_(screen_loc), 184 screen_loc_(screen_loc),
179 result_(NULL) { 185 result_(NULL) {
180 EnumThreadWindows(GetCurrentThreadId(), WindowCallbackProc, 186 EnumThreadWindows(GetCurrentThreadId(), WindowCallbackProc, as_lparam());
181 reinterpret_cast<LPARAM>(this));
182 } 187 }
183 188
184 // Position of the mouse. 189 // Position of the mouse.
185 gfx::Point screen_loc_; 190 gfx::Point screen_loc_;
186 191
187 // The resulting window. This is initially null but set to true in 192 // The resulting window. This is initially null but set to true in
188 // ShouldStopIterating if an appropriate window is found. 193 // ShouldStopIterating if an appropriate window is found.
189 HWND result_; 194 HWND result_;
190 195
191 DISALLOW_COPY_AND_ASSIGN(LocalProcessWindowFinder); 196 DISALLOW_COPY_AND_ASSIGN(LocalProcessWindowFinder);
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
234 239
235 private: 240 private:
236 DockToWindowFinder(const gfx::Point& screen_loc, 241 DockToWindowFinder(const gfx::Point& screen_loc,
237 const std::set<HWND>& ignore) 242 const std::set<HWND>& ignore)
238 : BaseWindowFinder(ignore), 243 : BaseWindowFinder(ignore),
239 screen_loc_(screen_loc) { 244 screen_loc_(screen_loc) {
240 gfx::Rect work_area = gfx::Screen::GetMonitorWorkAreaNearestPoint( 245 gfx::Rect work_area = gfx::Screen::GetMonitorWorkAreaNearestPoint(
241 screen_loc); 246 screen_loc);
242 if (!work_area.IsEmpty()) { 247 if (!work_area.IsEmpty()) {
243 result_.set_monitor_bounds(work_area); 248 result_.set_monitor_bounds(work_area);
244 EnumThreadWindows(GetCurrentThreadId(), WindowCallbackProc, 249 EnumThreadWindows(GetCurrentThreadId(), WindowCallbackProc, as_lparam());
245 reinterpret_cast<LPARAM>(this));
246 } 250 }
247 } 251 }
248 252
249 bool CheckPoint(HWND hwnd, int x, int y, DockInfo::Type type) { 253 bool CheckPoint(HWND hwnd, int x, int y, DockInfo::Type type) {
250 bool in_enable_area; 254 bool in_enable_area;
251 if (DockInfo::IsCloseToPoint(screen_loc_, x, y, &in_enable_area)) { 255 if (DockInfo::IsCloseToPoint(screen_loc_, x, y, &in_enable_area)) {
252 result_.set_in_enable_area(in_enable_area); 256 result_.set_in_enable_area(in_enable_area);
253 result_.set_window(hwnd); 257 result_.set_window(hwnd);
254 result_.set_type(type); 258 result_.set_type(type);
255 result_.set_hot_spot(gfx::Point(x, y)); 259 result_.set_hot_spot(gfx::Point(x, y));
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
321 325
322 void DockInfo::SizeOtherWindowTo(const gfx::Rect& bounds) const { 326 void DockInfo::SizeOtherWindowTo(const gfx::Rect& bounds) const {
323 if (IsZoomed(window())) { 327 if (IsZoomed(window())) {
324 // We're docking relative to another window, we need to make sure the 328 // We're docking relative to another window, we need to make sure the
325 // window we're docking to isn't maximized. 329 // window we're docking to isn't maximized.
326 ShowWindow(window(), SW_RESTORE | SW_SHOWNA); 330 ShowWindow(window(), SW_RESTORE | SW_SHOWNA);
327 } 331 }
328 SetWindowPos(window(), HWND_TOP, bounds.x(), bounds.y(), bounds.width(), 332 SetWindowPos(window(), HWND_TOP, bounds.x(), bounds.y(), bounds.width(),
329 bounds.height(), SWP_NOACTIVATE | SWP_NOOWNERZORDER); 333 bounds.height(), SWP_NOACTIVATE | SWP_NOOWNERZORDER);
330 } 334 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698