Chromium Code Reviews| Index: Source/core/rendering/RenderLayer.cpp |
| diff --git a/Source/core/rendering/RenderLayer.cpp b/Source/core/rendering/RenderLayer.cpp |
| index 56c3a037b42130706c012b16a46797bc0057ff76..b04105ff7804f2bb99c9d54f563523385a0e8251 100644 |
| --- a/Source/core/rendering/RenderLayer.cpp |
| +++ b/Source/core/rendering/RenderLayer.cpp |
| @@ -2729,8 +2729,14 @@ bool RenderLayer::isInTopLayerSubtree() const |
| static double computeZOffset(const HitTestingTransformState& transformState) |
| { |
| // We got an affine transform, so no z-offset |
| - if (transformState.m_accumulatedTransform.isAffine()) |
| - return 0; |
| + if (transformState.m_accumulatedTransform.isAffine()) { |
| + // Non transformed layers are being hit last, not through or in-between transformed layers. |
| + // The paint order says that the divs creating stacking contexts (including transforms) are painted after the |
| + // other siblings so they should be hit tested in the reverse order. Also, a rotated div in a non-rotated parent |
| + // should be hit in its entire area, not hit its parent's background, even if the z-coordinate is negative where |
| + // the mouse is located. |
| + return -std::numeric_limits<int>::max(); |
|
eae
2013/11/21 19:36:46
Shouldn't this be std::numeric_limits<int>::min()
|
| + } |
| // Flatten the point into the target plane |
| FloatPoint targetPoint = transformState.mappedPoint(); |