Closed Bug 1209710 Opened 9 years ago Closed 4 years ago

[css-grid] Try to simplify Align/JustifySelf by adding a couple of new writing-mode convenience methods

Categories

(Core :: Layout, defect)

defect
Not set
minor

Tracking

()

RESOLVED FIXED
84 Branch
Tracking Status
firefox44 --- wontfix
firefox84 --- fixed

People

(Reporter: MatsPalmgren_bugz, Assigned: TYLin)

References

Details

Attachments

(1 file)

dholbert notes in bug 1151213 comment #10:
> ...
> Ideally, this whole block of code (up to the marginStart/marginEnd decls)
> could be condensed to:
> 
>   LogicalSide startSide = MakeLogicalSide(aAxis, eLogicalEdgeStart);
>   LogicalSide endSide = MakeLogicalSide(aAxis, eLogicalEdgeEnd);
>   if (MOZ_UNLIKELY(!aSameSide)) {
>     Swap(startSide, endSide);
>   }
>   nscoord marginStart = margin.GetSizeOnSide(wm, startSide);
>   nscoord marginEnd = margin.GetSizeOnSide(wm, endSide);
> 
> ...but unfortunately, the "LogicalMargin::GetSizeOnSide" method used in my
> sample-code here doesn't exist.  It probably should, though. (It should take
> a "LogicalSide" enum.)
> 
> > +                styleMargin.GetBStartUnit(wm) != eStyleUnit_Auto &&
> > +                styleMargin.GetBEndUnit(wm) != eStyleUnit_Auto)
> > +             : (aRS.mStylePosition->ISize(wm).GetUnit() == eStyleUnit_Auto &&
> > +                styleMargin.GetIStartUnit(wm) != eStyleUnit_Auto &&
> > +                styleMargin.GetIEndUnit(wm) != eStyleUnit_Auto)) {
> 
> As above, there's a lot of duplicated logic here to handle the different
> permutations of writing-modes possibilities, which makes this "if" check a
> bit unwieldy & harder to read/maintain.
> 
> I think this can all be abstracted to remove the duplication like so
> (untested):
> 
>   nsStyleCoord styleSize = aAxis == eLogicalAxisBlock ?
>     aRS.mStylePosition->BSize(wm) : aRS.mStylePosition->ISize(wm);
>   if (styleSize.GetUnit() == eStyleUnit_Auto &&
>       styleMargin.GetUnit(startSide) != eStyleUnitAuto &&
>       styleMargin.GetUnit(endSide) != eStyleUnitAuto) {
> 
> (startSide and endSide are as defined in other sample code above.)
Depends on: 1151213

We already have convenience methods added over the years :)

Assignee: nobody → aethanyc
Status: NEW → ASSIGNED
Pushed by aethanyc@gmail.com:
https://hg.mozilla.org/integration/autoland/rev/0b0850b7413a
Use convenience methods to simplify CSSAlignUtils::AlignJustifySelf(). r=layout-reviewers,jfkthame
Status: ASSIGNED → RESOLVED
Closed: 4 years ago
Resolution: --- → FIXED
Target Milestone: --- → 84 Branch
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: