Bug 1271432 - When combining event regions across layers, don't expand the regions that shouldn't be expanded. r=tnikkel

MozReview-Commit-ID: 6GlYiJAm7rO
This commit is contained in:
Kartikaya Gupta 2016-05-17 11:05:46 -04:00
Родитель 9f333887e3
Коммит 9fe9512858
3 изменённых файлов: 15 добавлений и 14 удалений

Просмотреть файл

@ -3282,25 +3282,25 @@ void ContainerState::FinishPaintedLayerData(PaintedLayerData& aData, FindOpaqueB
containingPaintedLayerData->mMaybeHitRegion.SimplifyOutward(8);
}
nsLayoutUtils::TransformToAncestorAndCombineRegions(
data->mHitRegion.GetBounds(),
data->mHitRegion,
mContainerReferenceFrame,
containingPaintedLayerData->mReferenceFrame,
&containingPaintedLayerData->mHitRegion,
&containingPaintedLayerData->mMaybeHitRegion);
nsLayoutUtils::TransformToAncestorAndCombineRegions(
data->mNoActionRegion.GetBounds(),
data->mNoActionRegion,
mContainerReferenceFrame,
containingPaintedLayerData->mReferenceFrame,
&containingPaintedLayerData->mNoActionRegion,
&containingPaintedLayerData->mDispatchToContentHitRegion);
nsLayoutUtils::TransformToAncestorAndCombineRegions(
data->mHorizontalPanRegion.GetBounds(),
data->mHorizontalPanRegion,
mContainerReferenceFrame,
containingPaintedLayerData->mReferenceFrame,
&containingPaintedLayerData->mHorizontalPanRegion,
&containingPaintedLayerData->mDispatchToContentHitRegion);
nsLayoutUtils::TransformToAncestorAndCombineRegions(
data->mVerticalPanRegion.GetBounds(),
data->mVerticalPanRegion,
mContainerReferenceFrame,
containingPaintedLayerData->mReferenceFrame,
&containingPaintedLayerData->mVerticalPanRegion,

Просмотреть файл

@ -9015,23 +9015,24 @@ nsLayoutUtils::GetTouchActionFromFrame(nsIFrame* aFrame)
/* static */ void
nsLayoutUtils::TransformToAncestorAndCombineRegions(
const nsRect& aBounds,
const nsRegion& aRegion,
nsIFrame* aFrame,
const nsIFrame* aAncestorFrame,
nsRegion* aPreciseTargetDest,
nsRegion* aImpreciseTargetDest)
{
if (aBounds.IsEmpty()) {
if (aRegion.IsEmpty()) {
return;
}
Matrix4x4 matrix = GetTransformToAncestor(aFrame, aAncestorFrame);
Matrix matrix2D;
bool isPrecise = (matrix.Is2D(&matrix2D)
&& !matrix2D.HasNonAxisAlignedTransform());
bool isPrecise;
nsRegion transformedRegion;
for (nsRegion::RectIterator it = aRegion.RectIter(); !it.Done(); it.Next()) {
nsRect transformed = TransformFrameRectToAncestor(
aFrame, aBounds, aAncestorFrame);
aFrame, it.Get(), aAncestorFrame, &isPrecise);
transformedRegion.OrWith(transformed);
}
nsRegion* dest = isPrecise ? aPreciseTargetDest : aImpreciseTargetDest;
dest->OrWith(transformed);
dest->OrWith(transformedRegion);
}
/* static */ bool

Просмотреть файл

@ -2558,7 +2558,7 @@ public:
*/
static void
TransformToAncestorAndCombineRegions(
const nsRect& aBounds,
const nsRegion& aRegion,
nsIFrame* aFrame,
const nsIFrame* aAncestorFrame,
nsRegion* aPreciseTargetDest,