diff options
author | kenrb <kenrb@chromium.org> | 2016-03-01 10:53:24 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-03-01 18:55:41 +0000 |
commit | 9d8b8320a54fc65539d99be0e2a489e2e2b1b7bc (patch) | |
tree | 52a3c40c73b9c2fcb91cf4dca8940520b5faba49 /cc/surfaces | |
parent | 64484f863976b3cffc84201e8a396d1fa018cba1 (diff) | |
download | chromium_src-9d8b8320a54fc65539d99be0e2a489e2e2b1b7bc.zip chromium_src-9d8b8320a54fc65539d99be0e2a489e2e2b1b7bc.tar.gz chromium_src-9d8b8320a54fc65539d99be0e2a489e2e2b1b7bc.tar.bz2 |
Make browser hit testing return correct SurfaceId with nested Surfaces
A regression caused SurfaceHittest::GetTargetSurfaceAtPoint() to return
the incorrect SurfaceId when the correct Surface was nested more than
one layer from the root Surface. This fixes the regression.
BUG=589572
CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel
Review URL: https://codereview.chromium.org/1743303002
Cr-Commit-Position: refs/heads/master@{#378495}
Diffstat (limited to 'cc/surfaces')
-rw-r--r-- | cc/surfaces/surface_hittest.cc | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/cc/surfaces/surface_hittest.cc b/cc/surfaces/surface_hittest.cc index 6db66e2..b9be19e 100644 --- a/cc/surfaces/surface_hittest.cc +++ b/cc/surfaces/surface_hittest.cc @@ -104,9 +104,13 @@ bool SurfaceHittest::GetTargetSurfaceAtPointInternal( gfx::Transform transform_to_child_space; if (GetTargetSurfaceAtPointInternal( surface_quad->surface_id, RenderPassId(), point_in_quad_space, - referenced_passes, out_surface_id, &transform_to_child_space) || - (delegate_ && - delegate_->AcceptHitTarget(surface_quad, point_in_quad_space))) { + referenced_passes, out_surface_id, &transform_to_child_space)) { + *out_transform = transform_to_child_space * target_to_quad_transform * + transform_from_root_target; + return true; + } else if (delegate_ && + delegate_->AcceptHitTarget(surface_quad, + point_in_quad_space)) { *out_surface_id = surface_quad->surface_id; *out_transform = transform_to_child_space * target_to_quad_transform * transform_from_root_target; |