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

Side by Side Diff: ui/views/view.cc

Issue 108283008: Merge 241955 "Make extensions icons easier to target with gestures" (Closed) Base URL: svn://svn.chromium.org/chrome/branches/1750/src/
Patch Set: Created 7 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
« no previous file with comments | « ui/views/view.h ('k') | ui/views/view_unittest.cc » ('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 #define _USE_MATH_DEFINES // For VC++ to get M_PI. This has to be first. 5 #define _USE_MATH_DEFINES // For VC++ to get M_PI. This has to be first.
6 6
7 #include "ui/views/view.h" 7 #include "ui/views/view.h"
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <cmath> 10 #include <cmath>
(...skipping 857 matching lines...) Expand 10 before | Expand all | Expand 10 after
868 return cur_view; 868 return cur_view;
869 869
870 gfx::RectF cur_view_bounds_f(cur_view->GetLocalBounds()); 870 gfx::RectF cur_view_bounds_f(cur_view->GetLocalBounds());
871 ConvertRectToTarget(cur_view, this, &cur_view_bounds_f); 871 ConvertRectToTarget(cur_view, this, &cur_view_bounds_f);
872 gfx::Rect cur_view_bounds = gfx::ToEnclosingRect( 872 gfx::Rect cur_view_bounds = gfx::ToEnclosingRect(
873 cur_view_bounds_f); 873 cur_view_bounds_f);
874 if (views::PercentCoveredBy(cur_view_bounds, rect) >= kRectTargetOverlap) { 874 if (views::PercentCoveredBy(cur_view_bounds, rect) >= kRectTargetOverlap) {
875 // |cur_view| is a suitable candidate for rect-based targeting. 875 // |cur_view| is a suitable candidate for rect-based targeting.
876 // Check to see if it is the closest suitable candidate so far. 876 // Check to see if it is the closest suitable candidate so far.
877 gfx::Point touch_center(rect.CenterPoint()); 877 gfx::Point touch_center(rect.CenterPoint());
878 int cur_dist = views::DistanceSquaredFromCenterLineToPoint( 878 int cur_dist = views::DistanceSquaredFromCenterToPoint(touch_center,
879 touch_center, cur_view_bounds); 879 cur_view_bounds);
880 if (!rect_view || cur_dist < rect_view_distance) { 880 if (!rect_view || cur_dist < rect_view_distance) {
881 rect_view = cur_view; 881 rect_view = cur_view;
882 rect_view_distance = cur_dist; 882 rect_view_distance = cur_dist;
883 } 883 }
884 } else if (!rect_view && !point_view) { 884 } else if (!rect_view && !point_view) {
885 // Rect-based targeting has not yielded any candidates so far. Check 885 // Rect-based targeting has not yielded any candidates so far. Check
886 // if point-based targeting would have selected |cur_view|. 886 // if point-based targeting would have selected |cur_view|.
887 gfx::Point point_in_child_coords(rect_in_child_coords.CenterPoint()); 887 gfx::Point point_in_child_coords(rect_in_child_coords.CenterPoint());
888 if (child->HitTestPoint(point_in_child_coords)) 888 if (child->HitTestPoint(point_in_child_coords))
889 point_view = child->GetEventHandlerForPoint(point_in_child_coords); 889 point_view = child->GetEventHandlerForPoint(point_in_child_coords);
890 } 890 }
891 } 891 }
892 892
893 if (views::UsePointBasedTargeting(rect) || (!rect_view && !point_view)) 893 if (views::UsePointBasedTargeting(rect) || (!rect_view && !point_view))
894 return this; 894 return this;
895 895
896 // If |this| is a suitable candidate for rect-based targeting, check to 896 // If |this| is a suitable candidate for rect-based targeting, check to
897 // see if it is closer than the current best suitable candidate so far. 897 // see if it is closer than the current best suitable candidate so far.
898 gfx::Rect local_bounds(GetLocalBounds()); 898 gfx::Rect local_bounds(GetLocalBounds());
899 if (views::PercentCoveredBy(local_bounds, rect) >= kRectTargetOverlap) { 899 if (views::PercentCoveredBy(local_bounds, rect) >= kRectTargetOverlap) {
900 gfx::Point touch_center(rect.CenterPoint()); 900 gfx::Point touch_center(rect.CenterPoint());
901 int cur_dist = views::DistanceSquaredFromCenterLineToPoint(touch_center, 901 int cur_dist = views::DistanceSquaredFromCenterToPoint(touch_center,
902 local_bounds); 902 local_bounds);
903 if (!rect_view || cur_dist < rect_view_distance) 903 if (!rect_view || cur_dist < rect_view_distance)
904 rect_view = this; 904 rect_view = this;
905 } 905 }
906 906
907 return rect_view ? rect_view : point_view; 907 return rect_view ? rect_view : point_view;
908 } 908 }
909 909
910 View* View::GetTooltipHandlerForPoint(const gfx::Point& point) { 910 View* View::GetTooltipHandlerForPoint(const gfx::Point& point) {
911 if (!HitTestPoint(point)) 911 if (!HitTestPoint(point))
912 return NULL; 912 return NULL;
(...skipping 1482 matching lines...) Expand 10 before | Expand all | Expand 10 after
2395 // Message the RootView to do the drag and drop. That way if we're removed 2395 // Message the RootView to do the drag and drop. That way if we're removed
2396 // the RootView can detect it and avoid calling us back. 2396 // the RootView can detect it and avoid calling us back.
2397 gfx::Point widget_location(event.location()); 2397 gfx::Point widget_location(event.location());
2398 ConvertPointToWidget(this, &widget_location); 2398 ConvertPointToWidget(this, &widget_location);
2399 widget->RunShellDrag(this, data, widget_location, drag_operations, source); 2399 widget->RunShellDrag(this, data, widget_location, drag_operations, source);
2400 // WARNING: we may have been deleted. 2400 // WARNING: we may have been deleted.
2401 return true; 2401 return true;
2402 } 2402 }
2403 2403
2404 } // namespace views 2404 } // namespace views
OLDNEW
« no previous file with comments | « ui/views/view.h ('k') | ui/views/view_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698