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

Side by Side Diff: ui/aura/window.cc

Issue 10566009: app_list: Fix shadow bleeds over launcher button and steals mouse events (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix aura_demo compilation Created 8 years, 6 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/aura/test/test_window_delegate.cc ('k') | ui/aura/window_delegate.h » ('j') | 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/aura/window.h" 5 #include "ui/aura/window.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/bind_helpers.h" 10 #include "base/bind_helpers.h"
(...skipping 11 matching lines...) Expand all
22 #include "ui/aura/event_filter.h" 22 #include "ui/aura/event_filter.h"
23 #include "ui/aura/focus_manager.h" 23 #include "ui/aura/focus_manager.h"
24 #include "ui/aura/layout_manager.h" 24 #include "ui/aura/layout_manager.h"
25 #include "ui/aura/root_window.h" 25 #include "ui/aura/root_window.h"
26 #include "ui/aura/window_delegate.h" 26 #include "ui/aura/window_delegate.h"
27 #include "ui/aura/window_observer.h" 27 #include "ui/aura/window_observer.h"
28 #include "ui/base/animation/multi_animation.h" 28 #include "ui/base/animation/multi_animation.h"
29 #include "ui/compositor/compositor.h" 29 #include "ui/compositor/compositor.h"
30 #include "ui/compositor/layer.h" 30 #include "ui/compositor/layer.h"
31 #include "ui/gfx/canvas.h" 31 #include "ui/gfx/canvas.h"
32 #include "ui/gfx/path.h"
32 #include "ui/gfx/screen.h" 33 #include "ui/gfx/screen.h"
33 34
34 namespace aura { 35 namespace aura {
35 36
36 namespace { 37 namespace {
37 38
38 Window* GetParentForWindow(Window* window, Window* suggested_parent) { 39 Window* GetParentForWindow(Window* window, Window* suggested_parent) {
39 if (suggested_parent) 40 if (suggested_parent)
40 return suggested_parent; 41 return suggested_parent;
41 if (client::GetStackingClient()) 42 if (client::GetStackingClient())
(...skipping 393 matching lines...) Expand 10 before | Expand all | Expand 10 after
435 bool Window::ContainsPoint(const gfx::Point& local_point) { 436 bool Window::ContainsPoint(const gfx::Point& local_point) {
436 gfx::Rect local_bounds(gfx::Point(), bounds().size()); 437 gfx::Rect local_bounds(gfx::Point(), bounds().size());
437 return local_bounds.Contains(local_point); 438 return local_bounds.Contains(local_point);
438 } 439 }
439 440
440 bool Window::HitTest(const gfx::Point& local_point) { 441 bool Window::HitTest(const gfx::Point& local_point) {
441 // Expand my bounds for hit testing (override is usually zero but it's 442 // Expand my bounds for hit testing (override is usually zero but it's
442 // probably cheaper to do the math every time than to branch). 443 // probably cheaper to do the math every time than to branch).
443 gfx::Rect local_bounds(gfx::Point(), bounds().size()); 444 gfx::Rect local_bounds(gfx::Point(), bounds().size());
444 local_bounds.Inset(hit_test_bounds_override_outer_); 445 local_bounds.Inset(hit_test_bounds_override_outer_);
445 // TODO(beng): hittest masks. 446
446 return local_bounds.Contains(local_point); 447 if (!delegate_ || !delegate_->HasHitTestMask())
448 return local_bounds.Contains(local_point);
449
450 gfx::Path mask;
451 delegate_->GetHitTestMask(&mask);
452
453 SkRegion clip_region;
454 clip_region.setRect(local_bounds.x(), local_bounds.y(),
455 local_bounds.width(), local_bounds.height());
456 SkRegion mask_region;
457 return mask_region.setPath(mask, clip_region) &&
458 mask_region.contains(local_point.x(), local_point.y());
447 } 459 }
448 460
449 Window* Window::GetEventHandlerForPoint(const gfx::Point& local_point) { 461 Window* Window::GetEventHandlerForPoint(const gfx::Point& local_point) {
450 return GetWindowForPoint(local_point, true, true); 462 return GetWindowForPoint(local_point, true, true);
451 } 463 }
452 464
453 Window* Window::GetTopWindowContainingPoint(const gfx::Point& local_point) { 465 Window* Window::GetTopWindowContainingPoint(const gfx::Point& local_point) {
454 return GetWindowForPoint(local_point, false, false); 466 return GetWindowForPoint(local_point, false, false);
455 } 467 }
456 468
(...skipping 413 matching lines...) Expand 10 before | Expand all | Expand 10 after
870 for (Windows::const_reverse_iterator it = children_.rbegin(), 882 for (Windows::const_reverse_iterator it = children_.rbegin(),
871 rend = children_.rend(); 883 rend = children_.rend();
872 it != rend; ++it) { 884 it != rend; ++it) {
873 Window* child = *it; 885 Window* child = *it;
874 child->PrintWindowHierarchy(depth + 1); 886 child->PrintWindowHierarchy(depth + 1);
875 } 887 }
876 } 888 }
877 #endif 889 #endif
878 890
879 } // namespace aura 891 } // namespace aura
OLDNEW
« no previous file with comments | « ui/aura/test/test_window_delegate.cc ('k') | ui/aura/window_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698