зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1497589 Part 4: Set ComputedFlexContainerInfo physical axis values, and expose them through the Flex API. r=dholbert
Depends on D8616 Differential Revision: https://phabricator.services.mozilla.com/D8617 --HG-- extra : moz-landing-system : lando
This commit is contained in:
Родитель
55045f0ce3
Коммит
e2f5a79f00
|
@ -41,6 +41,9 @@ Flex::Flex(Element* aParent,
|
|||
mLines.ElementAt(index) = line;
|
||||
index++;
|
||||
}
|
||||
|
||||
mMainAxisDirection = containerInfo->mMainAxisDirection;
|
||||
mCrossAxisDirection = containerInfo->mCrossAxisDirection;
|
||||
}
|
||||
|
||||
JSObject*
|
||||
|
|
|
@ -303,6 +303,8 @@ public:
|
|||
|
||||
// Accessors:
|
||||
// XXXdholbert [BEGIN DEPRECATED]
|
||||
// These should not be used in layout, but they are useful for devtools API
|
||||
// which reports physical axis direction.
|
||||
AxisOrientationType GetMainAxis() const { return mMainAxis; }
|
||||
AxisOrientationType GetCrossAxis() const { return mCrossAxis; }
|
||||
// XXXdholbert [END DEPRECATED]
|
||||
|
@ -4669,6 +4671,21 @@ nsFlexContainerFrame::IsUsedFlexBasisContent(const nsStyleCoord* aFlexBasis,
|
|||
aMainSize->GetUnit() == eStyleUnit_Auto);
|
||||
}
|
||||
|
||||
static mozilla::dom::FlexPhysicalDirection
|
||||
ConvertAxisOrientationTypeToAPIEnum(AxisOrientationType aAxisOrientation)
|
||||
{
|
||||
switch (aAxisOrientation) {
|
||||
case eAxis_LR:
|
||||
return mozilla::dom::FlexPhysicalDirection::Horizontal_lr;
|
||||
case eAxis_RL:
|
||||
return mozilla::dom::FlexPhysicalDirection::Horizontal_rl;
|
||||
case eAxis_TB:
|
||||
return mozilla::dom::FlexPhysicalDirection::Vertical_tb;
|
||||
default:
|
||||
return mozilla::dom::FlexPhysicalDirection::Vertical_bt;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
nsFlexContainerFrame::DoFlexLayout(nsPresContext* aPresContext,
|
||||
ReflowOutput& aDesiredSize,
|
||||
|
@ -4723,6 +4740,19 @@ nsFlexContainerFrame::DoFlexLayout(nsPresContext* aPresContext,
|
|||
"Shouldn't have lines yet.");
|
||||
}
|
||||
|
||||
// Set the axis physical directions.
|
||||
AxisOrientationType mainAxis = aAxisTracker.GetMainAxis();
|
||||
AxisOrientationType crossAxis = aAxisTracker.GetCrossAxis();
|
||||
if (aAxisTracker.AreAxesInternallyReversed()) {
|
||||
mainAxis = GetReverseAxis(mainAxis);
|
||||
crossAxis = GetReverseAxis(crossAxis);
|
||||
}
|
||||
|
||||
containerInfo->mMainAxisDirection =
|
||||
ConvertAxisOrientationTypeToAPIEnum(mainAxis);
|
||||
containerInfo->mCrossAxisDirection =
|
||||
ConvertAxisOrientationTypeToAPIEnum(crossAxis);
|
||||
|
||||
for (const FlexLine* line = lines.getFirst(); line;
|
||||
line = line->getNext()) {
|
||||
ComputedFlexLineInfo* lineInfo =
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
|
||||
#include "nsContainerFrame.h"
|
||||
#include "mozilla/UniquePtr.h"
|
||||
#include "mozilla/dom/FlexBinding.h"
|
||||
|
||||
class nsStyleCoord;
|
||||
|
||||
|
@ -72,6 +73,8 @@ struct ComputedFlexLineInfo
|
|||
struct ComputedFlexContainerInfo
|
||||
{
|
||||
nsTArray<ComputedFlexLineInfo> mLines;
|
||||
mozilla::dom::FlexPhysicalDirection mMainAxisDirection;
|
||||
mozilla::dom::FlexPhysicalDirection mCrossAxisDirection;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
Загрузка…
Ссылка в новой задаче