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

Unified Diff: ui/views/view.h

Issue 22891016: Add support for rect-based event targeting in views (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: comments addressed, moved fuzzing utility functions to new file Created 7 years, 2 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 side-by-side diff with in-line comments
Download patch
Index: ui/views/view.h
diff --git a/ui/views/view.h b/ui/views/view.h
index 3d0a8b544145fc23a7a42aae5830e89e928c8c9a..99b5b7ef7e3239e0b6bcf588763ab26d0557e828 100644
--- a/ui/views/view.h
+++ b/ui/views/view.h
@@ -449,6 +449,16 @@ class VIEWS_EXPORT View : public ui::LayerDelegate,
const View* target,
gfx::Point* point);
+ // Convert |rect| from the coordinate system of |source| to the coordinate
+ // system of |target|.
+ //
+ // |source| and |target| must be in the same widget, but doesn't need to be in
+ // the same view hierarchy.
+ // |source| can be NULL in which case it means the screen coordinate system.
+ static void ConvertRectToTarget(const View* source,
+ const View* target,
+ gfx::Rect* rect);
+
// Convert a point from a View's coordinate system to that of its Widget.
static void ConvertPointToWidget(const View* src, gfx::Point* point);
@@ -549,12 +559,20 @@ class VIEWS_EXPORT View : public ui::LayerDelegate,
static bool get_use_acceleration_when_possible();
// Input ---------------------------------------------------------------------
- // The points (and mouse locations) in the following functions are in the
- // view's coordinates, except for a RootView.
+ // The points, rects, mouse locations, and touch locations in the following
+ // functions are in the view's coordinates, except for a RootView.
- // Returns the deepest visible descendant that contains the specified point
- // and supports event handling.
- virtual View* GetEventHandlerForPoint(const gfx::Point& point);
+ // Convenience functions which calls into GetEventHandler() with
+ // a 1x1 rect centered at |point|.
+ View* GetEventHandlerForPoint(const gfx::Point& point);
+
+ // If point-based targeting should be used, return the deepest visible
+ // descendant that contains the center point of |rect|.
+ // If rect-based targeting (i.e., fuzzing) should be used, return the
+ // closest visible descendant having at least kRectTargetOverlap of
+ // its area covered by |rect|. If no such descendant exists, return the
+ // deepest visible descendant that contains the center point of |rect|.
+ virtual View* GetEventHandlerForRect(const gfx::Rect& rect);
// Returns the deepest visible descendant that contains the specified point
// and supports tooltips. If the view does not contain the point, returns
@@ -1306,10 +1324,21 @@ class VIEWS_EXPORT View : public ui::LayerDelegate,
// Convert a point in the ancestor's coordinate system to the view's
// coordinate system using necessary transformations. Returns whether the
- // point was successfully from the ancestor's coordinate system to the view's
- // coordinate system.
+ // point was successfully converted from the ancestor's coordinate system
+ // to the view's coordinate system.
bool ConvertPointFromAncestor(const View* ancestor, gfx::Point* point) const;
+ // Convert a rect in the view's coordinate to an ancestor view's coordinate
+ // system using necessary transformations. Returns whether the rect was
+ // successfully converted to the ancestor's coordinate system.
+ bool ConvertRectForAncestor(const View* ancestor, gfx::Rect* rect) const;
+
+ // Convert a rect in the ancestor's coordinate system to the view's
+ // coordinate system using necessary transformations. Returns whether the
+ // rect was successfully converted from the ancestor's coordinate system
+ // to the view's coordinate system.
+ bool ConvertRectFromAncestor(const View* ancestor, gfx::Rect* rect) const;
+
// Accelerated painting ------------------------------------------------------
// Creates the layer and related fields for this view.

Powered by Google App Engine
This is Rietveld 408576698