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

Side by Side Diff: chrome/browser/ui/views/tabs/window_finder_win.cc

Issue 1406403007: Eliminate HICON leaks caused by creating icons from bitmap image. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 5 years 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/views/tabs/window_finder.h" 5 #include "chrome/browser/ui/views/tabs/window_finder.h"
6 6
7 #include <shobjidl.h> 7 #include <shobjidl.h>
8 8
9 #include "base/win/scoped_gdi_object.h" 9 #include "base/win/scoped_gdi_object.h"
10 #include "base/win/windows_version.h" 10 #include "base/win/windows_version.h"
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
102 // WS_EX_LAYERED windows then there are effectively holes on the screen 102 // WS_EX_LAYERED windows then there are effectively holes on the screen
103 // that the user can't reattach tabs to. So we ignore them. This is a bit 103 // that the user can't reattach tabs to. So we ignore them. This is a bit
104 // problematic in so far as WS_EX_LAYERED windows need not be totally 104 // problematic in so far as WS_EX_LAYERED windows need not be totally
105 // transparent in which case we treat chrome windows as not being obscured 105 // transparent in which case we treat chrome windows as not being obscured
106 // when they really are, but this is better than not being able to 106 // when they really are, but this is better than not being able to
107 // reattach tabs. 107 // reattach tabs.
108 return false; 108 return false;
109 } 109 }
110 110
111 // hwnd is at the point. Make sure the point is within the windows region. 111 // hwnd is at the point. Make sure the point is within the windows region.
112 if (GetWindowRgn(hwnd, tmp_region_.Get()) == ERROR) { 112 if (GetWindowRgn(hwnd, tmp_region_.get()) == ERROR) {
113 // There's no region on the window and the window contains the point. Stop 113 // There's no region on the window and the window contains the point. Stop
114 // iterating. 114 // iterating.
115 return true; 115 return true;
116 } 116 }
117 117
118 // The region is relative to the window's rect. 118 // The region is relative to the window's rect.
119 BOOL is_point_in_region = PtInRegion(tmp_region_.Get(), 119 BOOL is_point_in_region = PtInRegion(
120 screen_loc_.x() - r.left, screen_loc_.y() - r.top); 120 tmp_region_.get(), screen_loc_.x() - r.left, screen_loc_.y() - r.top);
121 tmp_region_ = CreateRectRgn(0, 0, 0, 0); 121 tmp_region_.reset(CreateRectRgn(0, 0, 0, 0));
122 // Stop iterating if the region contains the point. 122 // Stop iterating if the region contains the point.
123 return !!is_point_in_region; 123 return !!is_point_in_region;
124 } 124 }
125 125
126 private: 126 private:
127 TopMostFinder(HWND window, 127 TopMostFinder(HWND window,
128 const gfx::Point& screen_loc, 128 const gfx::Point& screen_loc,
129 const std::set<HWND>& ignore) 129 const std::set<HWND>& ignore)
130 : BaseWindowFinder(ignore), 130 : BaseWindowFinder(ignore),
131 target_(window), 131 target_(window),
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 const gfx::Point& screen_point, 243 const gfx::Point& screen_point,
244 const std::set<gfx::NativeWindow>& ignore, 244 const std::set<gfx::NativeWindow>& ignore,
245 gfx::NativeWindow source) { 245 gfx::NativeWindow source) {
246 #if defined(USE_ASH) 246 #if defined(USE_ASH)
247 if (host_desktop_type == chrome::HOST_DESKTOP_TYPE_ASH) 247 if (host_desktop_type == chrome::HOST_DESKTOP_TYPE_ASH)
248 return GetLocalProcessWindowAtPointAsh(screen_point, ignore); 248 return GetLocalProcessWindowAtPointAsh(screen_point, ignore);
249 #endif 249 #endif
250 return LocalProcessWindowFinder::GetProcessWindowAtPoint( 250 return LocalProcessWindowFinder::GetProcessWindowAtPoint(
251 screen_point, RemapIgnoreSet(ignore)); 251 screen_point, RemapIgnoreSet(ignore));
252 } 252 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698