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

Side by Side Diff: chrome/browser/ui/views/dropdown_bar_host.cc

Issue 6040002: Remove more 'using' declarations of Scoped* from scoped_handle_win.h (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix linux_view and linux_chromeos Created 10 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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/views/dropdown_bar_host.h" 5 #include "chrome/browser/views/dropdown_bar_host.h"
6 6
7 #include "app/keyboard_codes.h" 7 #include "app/keyboard_codes.h"
8 #include "app/slide_animation.h" 8 #include "app/slide_animation.h"
9 #include "base/scoped_handle.h"
10 #include "chrome/browser/ui/browser.h" 9 #include "chrome/browser/ui/browser.h"
11 #include "chrome/browser/ui/view_ids.h" 10 #include "chrome/browser/ui/view_ids.h"
12 #include "chrome/browser/ui/views/dropdown_bar_view.h" 11 #include "chrome/browser/ui/views/dropdown_bar_view.h"
13 #include "chrome/browser/ui/views/frame/browser_view.h" 12 #include "chrome/browser/ui/views/frame/browser_view.h"
14 #include "gfx/path.h" 13 #include "gfx/path.h"
15 #include "gfx/scrollbar_size.h" 14 #include "gfx/scrollbar_size.h"
16 #include "views/focus/external_focus_tracker.h" 15 #include "views/focus/external_focus_tracker.h"
17 #include "views/focus/view_storage.h" 16 #include "views/focus/view_storage.h"
18 #include "views/widget/widget.h" 17 #include "views/widget/widget.h"
19 18
20 #if defined(OS_LINUX) 19 #if defined(OS_WIN)
20 #include "base/win/scoped_gdi_object.h"
21 #elif defined(OS_LINUX)
21 #include "app/scoped_handle_gtk.h" 22 #include "app/scoped_handle_gtk.h"
22 #endif 23 #endif
23 24
24 using gfx::Path; 25 using gfx::Path;
25 26
26 // static 27 // static
27 bool DropdownBarHost::disable_animations_during_testing_ = false; 28 bool DropdownBarHost::disable_animations_during_testing_ = false;
28 29
29 //////////////////////////////////////////////////////////////////////////////// 30 ////////////////////////////////////////////////////////////////////////////////
30 // DropdownBarHost, public: 31 // DropdownBarHost, public:
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
205 // Find the largest x and y value in the polygon. 206 // Find the largest x and y value in the polygon.
206 int max_x = 0, max_y = 0; 207 int max_x = 0, max_y = 0;
207 for (size_t i = 0; i < arraysize(polygon); i++) { 208 for (size_t i = 0; i < arraysize(polygon); i++) {
208 max_x = std::max(max_x, static_cast<int>(polygon[i].x)); 209 max_x = std::max(max_x, static_cast<int>(polygon[i].x));
209 max_y = std::max(max_y, static_cast<int>(polygon[i].y)); 210 max_y = std::max(max_y, static_cast<int>(polygon[i].y));
210 } 211 }
211 212
212 // We then create the polygon and use SetWindowRgn to force the window to draw 213 // We then create the polygon and use SetWindowRgn to force the window to draw
213 // only within that area. This region may get reduced in size below. 214 // only within that area. This region may get reduced in size below.
214 Path path(polygon, arraysize(polygon)); 215 Path path(polygon, arraysize(polygon));
216 #if defined(OS_WIN)
brettw 2010/12/29 20:40:34 All of these new ifdefs in this file are disappoin
tfarina 2010/12/29 20:58:06 Done. PTAL!
217 base::win::ScopedRegion region(path.CreateNativeRegion());
218 #elif defined(OS_LINUX)
215 ScopedRegion region(path.CreateNativeRegion()); 219 ScopedRegion region(path.CreateNativeRegion());
216 220 #endif
217 // Are we animating? 221 // Are we animating?
218 if (animation_offset() > 0) { 222 if (animation_offset() > 0) {
219 // The animation happens in two steps: First, we clip the window and then in 223 // The animation happens in two steps: First, we clip the window and then in
220 // GetWidgetPosition we offset the window position so that it still looks 224 // GetWidgetPosition we offset the window position so that it still looks
221 // attached to the toolbar as it grows. We clip the window by creating a 225 // attached to the toolbar as it grows. We clip the window by creating a
222 // rectangle region (that gradually increases as the animation progresses) 226 // rectangle region (that gradually increases as the animation progresses)
223 // and find the intersection between the two regions using CombineRgn. 227 // and find the intersection between the two regions using CombineRgn.
224 228
225 // |y| shrinks as the animation progresses from the height of the view down 229 // |y| shrinks as the animation progresses from the height of the view down
226 // to 0 (and reverses when closing). 230 // to 0 (and reverses when closing).
227 int y = animation_offset(); 231 int y = animation_offset();
228 // |y| shrinking means the animation (visible) region gets larger. In other 232 // |y| shrinking means the animation (visible) region gets larger. In other
229 // words: the rectangle grows upward (when the widget is opening). 233 // words: the rectangle grows upward (when the widget is opening).
230 Path animation_path; 234 Path animation_path;
231 SkRect animation_rect = { SkIntToScalar(0), SkIntToScalar(y), 235 SkRect animation_rect = { SkIntToScalar(0), SkIntToScalar(y),
232 SkIntToScalar(max_x), SkIntToScalar(max_y) }; 236 SkIntToScalar(max_x), SkIntToScalar(max_y) };
233 animation_path.addRect(animation_rect); 237 animation_path.addRect(animation_rect);
234 ScopedRegion animation_region(animation_path.CreateNativeRegion()); 238 #if defined(OS_WIN)
239 base::win::ScopedRegion animation_region(
240 animation_path.CreateNativeRegion());
241 #elif defined(OS_LINUX)
242 ScopedRegion animation_region(
243 animation_path.CreateNativeRegion());
244 #endif
235 region.Set(Path::IntersectRegions(animation_region.Get(), region.Get())); 245 region.Set(Path::IntersectRegions(animation_region.Get(), region.Get()));
236 246
237 // Next, we need to increase the region a little bit to account for the 247 // Next, we need to increase the region a little bit to account for the
238 // curved edges that the view will draw to make it look like grows out of 248 // curved edges that the view will draw to make it look like grows out of
239 // the toolbar. 249 // the toolbar.
240 Path::Point left_curve[] = { 250 Path::Point left_curve[] = {
241 {0, y+0}, {0, y+1}, {2, y+3}, {2, y+0}, {0, y+0} 251 {0, y+0}, {0, y+1}, {2, y+3}, {2, y+0}, {0, y+0}
242 }; 252 };
243 Path::Point right_curve[] = { 253 Path::Point right_curve[] = {
244 {w+3, y+3}, {w+6, y+0}, {w+3, y+0}, {w+3, y+3} 254 {w+3, y+3}, {w+6, y+0}, {w+3, y+0}, {w+3, y+3}
245 }; 255 };
246 256
247 // Combine the region for the curve on the left with our main region. 257 // Combine the region for the curve on the left with our main region.
248 Path left_path(left_curve, arraysize(left_curve)); 258 Path left_path(left_curve, arraysize(left_curve));
259 #if defined(OS_WIN)
260 base::win::ScopedRegion r(left_path.CreateNativeRegion());
261 #elif defined(OS_LINUX)
249 ScopedRegion r(left_path.CreateNativeRegion()); 262 ScopedRegion r(left_path.CreateNativeRegion());
263 #endif
250 region.Set(Path::CombineRegions(r.Get(), region.Get())); 264 region.Set(Path::CombineRegions(r.Get(), region.Get()));
251 265
252 // Combine the region for the curve on the right with our main region. 266 // Combine the region for the curve on the right with our main region.
253 Path right_path(right_curve, arraysize(right_curve)); 267 Path right_path(right_curve, arraysize(right_curve));
254 region.Set(Path::CombineRegions(r.Get(), region.Get())); 268 region.Set(Path::CombineRegions(r.Get(), region.Get()));
255 } 269 }
256 270
257 // Now see if we need to truncate the region because parts of it obscures 271 // Now see if we need to truncate the region because parts of it obscures
258 // the main window border. 272 // the main window border.
259 gfx::Rect widget_bounds; 273 gfx::Rect widget_bounds;
(...skipping 17 matching lines...) Expand all
277 exclude[1].y = 0; 291 exclude[1].y = 0;
278 292
279 exclude[2].x = max_x; // Bottom right corner. 293 exclude[2].x = max_x; // Bottom right corner.
280 exclude[2].y = max_y; 294 exclude[2].y = max_y;
281 295
282 exclude[3].x = max_x - difference; // Bottom left corner. 296 exclude[3].x = max_x - difference; // Bottom left corner.
283 exclude[3].y = max_y; 297 exclude[3].y = max_y;
284 298
285 // Subtract this region from the original region. 299 // Subtract this region from the original region.
286 gfx::Path exclude_path(exclude, arraysize(exclude)); 300 gfx::Path exclude_path(exclude, arraysize(exclude));
301 #if defined(OS_WIN)
302 base::win::ScopedRegion exclude_region(exclude_path.CreateNativeRegion());
303 #elif defined(OS_LINUX)
287 ScopedRegion exclude_region(exclude_path.CreateNativeRegion()); 304 ScopedRegion exclude_region(exclude_path.CreateNativeRegion());
305 #endif
288 region.Set(Path::SubtractRegion(region.Get(), exclude_region.Get())); 306 region.Set(Path::SubtractRegion(region.Get(), exclude_region.Get()));
289 } 307 }
290 308
291 // Window takes ownership of the region. 309 // Window takes ownership of the region.
292 host()->SetShape(region.release()); 310 host()->SetShape(region.release());
293 } 311 }
294 312
295 void DropdownBarHost::RegisterAccelerators() { 313 void DropdownBarHost::RegisterAccelerators() {
296 DCHECK(!esc_accel_target_registered_); 314 DCHECK(!esc_accel_target_registered_);
297 views::Accelerator escape(app::VKEY_ESCAPE, false, false, false); 315 views::Accelerator escape(app::VKEY_ESCAPE, false, false, false);
298 focus_manager_->RegisterAccelerator(escape, this); 316 focus_manager_->RegisterAccelerator(escape, this);
299 esc_accel_target_registered_ = true; 317 esc_accel_target_registered_ = true;
300 } 318 }
301 319
302 void DropdownBarHost::UnregisterAccelerators() { 320 void DropdownBarHost::UnregisterAccelerators() {
303 DCHECK(esc_accel_target_registered_); 321 DCHECK(esc_accel_target_registered_);
304 views::Accelerator escape(app::VKEY_ESCAPE, false, false, false); 322 views::Accelerator escape(app::VKEY_ESCAPE, false, false, false);
305 focus_manager_->UnregisterAccelerator(escape, this); 323 focus_manager_->UnregisterAccelerator(escape, this);
306 esc_accel_target_registered_ = false; 324 esc_accel_target_registered_ = false;
307 } 325 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/tabs/dock_info_win.cc ('k') | chrome/browser/ui/views/status_icons/status_icon_win.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698