mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-21 06:37:30 +09:00
Revert "Issue #1986 - Part 2: Add IsItemInlineAxisMainAxis() and rework some nsFrame code."
This reverts commit c3e18955ad.
This commit is contained in:
parent
e46011bcc3
commit
c522a01d6c
3 changed files with 7 additions and 58 deletions
|
|
@ -1990,10 +1990,6 @@ FlexItem::FlexItem(ReflowInput& aFlexItemReflowInput,
|
||||||
"placeholder frames should not be treated as flex items");
|
"placeholder frames should not be treated as flex items");
|
||||||
MOZ_ASSERT(!(mFrame->GetStateBits() & NS_FRAME_OUT_OF_FLOW),
|
MOZ_ASSERT(!(mFrame->GetStateBits() & NS_FRAME_OUT_OF_FLOW),
|
||||||
"out-of-flow frames should not be treated as flex items");
|
"out-of-flow frames should not be treated as flex items");
|
||||||
MOZ_ASSERT(mIsInlineAxisMainAxis ==
|
|
||||||
nsFlexContainerFrame::IsItemInlineAxisMainAxis(mFrame),
|
|
||||||
"public API should be consistent with internal state (about "
|
|
||||||
"whether flex item's inline axis is flex container's main axis)");
|
|
||||||
|
|
||||||
const ReflowInput* containerRS = aFlexItemReflowInput.mParentReflowInput;
|
const ReflowInput* containerRS = aFlexItemReflowInput.mParentReflowInput;
|
||||||
if (IsLegacyBox(containerRS->mFrame)) {
|
if (IsLegacyBox(containerRS->mFrame)) {
|
||||||
|
|
@ -4425,41 +4421,6 @@ nsFlexContainerFrame::CalculatePackingSpace(uint32_t aNumThingsToPack,
|
||||||
*aPackingSpaceRemaining -= totalEdgePackingSpace;
|
*aPackingSpaceRemaining -= totalEdgePackingSpace;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* static */
|
|
||||||
bool
|
|
||||||
nsFlexContainerFrame::IsItemInlineAxisMainAxis(nsIFrame* aFrame)
|
|
||||||
{
|
|
||||||
MOZ_ASSERT(aFrame && aFrame->IsFlexItem(), "expecting arg to be a flex item");
|
|
||||||
const WritingMode flexItemWM = aFrame->GetWritingMode();
|
|
||||||
const nsIFrame* flexContainer = aFrame->GetParent();
|
|
||||||
|
|
||||||
if (IsLegacyBox(flexContainer)) {
|
|
||||||
// For legacy boxes, the main axis is determined by "box-orient", and we can
|
|
||||||
// just directly check if that's vertical, and compare that to whether the
|
|
||||||
// item's WM is also vertical:
|
|
||||||
bool boxOrientIsVertical =
|
|
||||||
(flexContainer->StyleXUL()->mBoxOrient == StyleBoxOrient::Vertical);
|
|
||||||
return flexItemWM.IsVertical() == boxOrientIsVertical;
|
|
||||||
}
|
|
||||||
|
|
||||||
// For modern CSS flexbox, we get our return value by asking two questions
|
|
||||||
// and comparing their answers.
|
|
||||||
// Question 1: does aFrame have the same inline axis as its flex container?
|
|
||||||
bool itemInlineAxisIsParallelToParent =
|
|
||||||
!flexItemWM.IsOrthogonalTo(flexContainer->GetWritingMode());
|
|
||||||
|
|
||||||
// Question 2: is aFrame's flex container row-oriented? (This tells us
|
|
||||||
// whether the flex container's main axis is its inline axis.)
|
|
||||||
auto flexDirection = flexContainer->StylePosition()->mFlexDirection;
|
|
||||||
bool flexContainerIsRowOriented =
|
|
||||||
flexDirection == NS_STYLE_FLEX_DIRECTION_ROW ||
|
|
||||||
flexDirection == NS_STYLE_FLEX_DIRECTION_ROW_REVERSE;
|
|
||||||
|
|
||||||
// aFrame's inline axis is its flex container's main axis IFF the above
|
|
||||||
// questions have the same answer.
|
|
||||||
return flexContainerIsRowOriented == itemInlineAxisIsParallelToParent;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
nsFlexContainerFrame::DoFlexLayout(nsPresContext* aPresContext,
|
nsFlexContainerFrame::DoFlexLayout(nsPresContext* aPresContext,
|
||||||
ReflowOutput& aDesiredSize,
|
ReflowOutput& aDesiredSize,
|
||||||
|
|
|
||||||
|
|
@ -133,21 +133,6 @@ public:
|
||||||
uint32_t* aNumPackingSpacesRemaining,
|
uint32_t* aNumPackingSpacesRemaining,
|
||||||
nscoord* aPackingSpaceRemaining);
|
nscoord* aPackingSpaceRemaining);
|
||||||
|
|
||||||
/**
|
|
||||||
* Given a frame for a flex item, this method returns true IFF that flex
|
|
||||||
* item's inline axis is the same as (i.e. not orthogonal to) its flex
|
|
||||||
* container's main axis.
|
|
||||||
*
|
|
||||||
* (This method is only intended to be used from external
|
|
||||||
* callers. Inside of flex reflow code, FlexItem::IsInlineAxisMainAxis() is
|
|
||||||
* equivalent & more optimal.)
|
|
||||||
*
|
|
||||||
* @param aFrame a flex item (must return true from IsFlexItem)
|
|
||||||
* @return true iff aFrame's inline axis is the same as (i.e. not orthogonal
|
|
||||||
* to) its flex container's main axis. Otherwise, false.
|
|
||||||
*/
|
|
||||||
static bool IsItemInlineAxisMainAxis(nsIFrame* aFrame);
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// Protected constructor & destructor
|
// Protected constructor & destructor
|
||||||
explicit nsFlexContainerFrame(nsStyleContext* aContext)
|
explicit nsFlexContainerFrame(nsStyleContext* aContext)
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,6 @@
|
||||||
#include "mozilla/Logging.h"
|
#include "mozilla/Logging.h"
|
||||||
#include "mozilla/Sprintf.h"
|
#include "mozilla/Sprintf.h"
|
||||||
#include "nsFrameManager.h"
|
#include "nsFrameManager.h"
|
||||||
#include "nsFlexContainerFrame.h"
|
|
||||||
#include "nsLayoutUtils.h"
|
#include "nsLayoutUtils.h"
|
||||||
#include "LayoutLogging.h"
|
#include "LayoutLogging.h"
|
||||||
#include "mozilla/RestyleManager.h"
|
#include "mozilla/RestyleManager.h"
|
||||||
|
|
@ -4753,11 +4752,12 @@ nsFrame::ComputeSize(nsRenderingContext* aRenderingContext,
|
||||||
}
|
}
|
||||||
bool isFlexItem = (parentFrameType == nsGkAtoms::flexContainerFrame &&
|
bool isFlexItem = (parentFrameType == nsGkAtoms::flexContainerFrame &&
|
||||||
!(GetStateBits() & NS_FRAME_OUT_OF_FLOW));
|
!(GetStateBits() & NS_FRAME_OUT_OF_FLOW));
|
||||||
|
|
||||||
bool isInlineFlexItem = false;
|
bool isInlineFlexItem = false;
|
||||||
if (isFlexItem) {
|
if (isFlexItem) {
|
||||||
|
uint32_t flexDirection = GetParent()->StylePosition()->mFlexDirection;
|
||||||
isInlineFlexItem =
|
isInlineFlexItem =
|
||||||
nsFlexContainerFrame::IsItemInlineAxisMainAxis(this);
|
flexDirection == NS_STYLE_FLEX_DIRECTION_ROW ||
|
||||||
|
flexDirection == NS_STYLE_FLEX_DIRECTION_ROW_REVERSE;
|
||||||
|
|
||||||
const nsStyleCoord* flexBasis = &(stylePos->mFlexBasis);
|
const nsStyleCoord* flexBasis = &(stylePos->mFlexBasis);
|
||||||
SetCoordToFlexBasis(isInlineFlexItem, false, flexBasis,
|
SetCoordToFlexBasis(isInlineFlexItem, false, flexBasis,
|
||||||
|
|
@ -4973,8 +4973,11 @@ nsFrame::ComputeSizeWithIntrinsicDimensions(nsRenderingContext* aRenderingConte
|
||||||
// from our style struct. (Otherwise, we'll be using an irrelevant value in
|
// from our style struct. (Otherwise, we'll be using an irrelevant value in
|
||||||
// the aspect-ratio calculations below.)
|
// the aspect-ratio calculations below.)
|
||||||
if (isFlexItem) {
|
if (isFlexItem) {
|
||||||
|
uint32_t flexDirection =
|
||||||
|
GetParent()->StylePosition()->mFlexDirection;
|
||||||
isInlineFlexItem =
|
isInlineFlexItem =
|
||||||
nsFlexContainerFrame::IsItemInlineAxisMainAxis(this);
|
flexDirection == NS_STYLE_FLEX_DIRECTION_ROW ||
|
||||||
|
flexDirection == NS_STYLE_FLEX_DIRECTION_ROW_REVERSE;
|
||||||
|
|
||||||
// If FlexItemMainSizeOverride frame-property is set, then that means the
|
// If FlexItemMainSizeOverride frame-property is set, then that means the
|
||||||
// flex container is imposing a main-size on this flex item for it to use
|
// flex container is imposing a main-size on this flex item for it to use
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue