зеркало из https://github.com/mozilla/gecko-dev.git
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:
Родитель
9f333887e3
Коммит
9fe9512858
|
@ -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());
|
||||
nsRect transformed = TransformFrameRectToAncestor(
|
||||
aFrame, aBounds, aAncestorFrame);
|
||||
bool isPrecise;
|
||||
nsRegion transformedRegion;
|
||||
for (nsRegion::RectIterator it = aRegion.RectIter(); !it.Done(); it.Next()) {
|
||||
nsRect transformed = TransformFrameRectToAncestor(
|
||||
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,
|
||||
|
|
Загрузка…
Ссылка в новой задаче