use au in HoistedSharedFragment (#32288)

This commit is contained in:
atbrakhi 2024-05-16 20:21:29 +02:00 committed by GitHub
parent c89fb1f381
commit 903c516fb5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 11 additions and 11 deletions

View file

@ -1762,9 +1762,8 @@ impl PlacementState {
},
Fragment::AbsoluteOrFixedPositioned(fragment) => {
let offset = LogicalVec2 {
block: (self.current_margin.solve() + self.current_block_direction_position)
.into(),
inline: Length::new(0.),
block: (self.current_margin.solve() + self.current_block_direction_position),
inline: Au::zero(),
};
fragment.borrow_mut().adjust_offsets(offset);
},

View file

@ -2,8 +2,9 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
use app_units::Au;
use serde::Serialize;
use style::values::computed::{Length, LengthPercentage};
use style::values::computed::LengthPercentage;
use super::Fragment;
use crate::cell::ArcRefCell;
@ -31,7 +32,7 @@ impl HoistedSharedFragment {
/// In some cases `inset: auto`-positioned elements do not know their precise
/// position until after they're hoisted. This lets us adjust auto values
/// after the fact.
pub(crate) fn adjust_offsets(&mut self, offsets: LogicalVec2<Length>) {
pub(crate) fn adjust_offsets(&mut self, offsets: LogicalVec2<Au>) {
self.box_offsets.inline.adjust_offset(offsets.inline);
self.box_offsets.block.adjust_offset(offsets.block);
}
@ -40,7 +41,7 @@ impl HoistedSharedFragment {
#[derive(Clone, Debug, Serialize)]
pub(crate) enum AbsoluteBoxOffsets {
StaticStart {
start: Length,
start: Au,
},
Start {
start: LengthPercentage,
@ -59,7 +60,7 @@ impl AbsoluteBoxOffsets {
matches!(self, AbsoluteBoxOffsets::Both { .. })
}
pub(crate) fn adjust_offset(&mut self, new_offset: Length) {
pub(crate) fn adjust_offset(&mut self, new_offset: Au) {
if let AbsoluteBoxOffsets::StaticStart { ref mut start } = *self {
*start = new_offset
}

View file

@ -81,7 +81,7 @@ impl AbsolutelyPositionedBox {
) -> AbsoluteBoxOffsets {
match (start.non_auto(), end.non_auto()) {
(None, None) => AbsoluteBoxOffsets::StaticStart {
start: initial_static_start,
start: initial_static_start.into(),
},
(Some(start), Some(end)) => AbsoluteBoxOffsets::Both {
start: start.clone(),
@ -196,10 +196,10 @@ impl PositioningContext {
let update_fragment_if_needed = |hoisted_fragment: &mut HoistedAbsolutelyPositionedBox| {
let mut fragment = hoisted_fragment.fragment.borrow_mut();
if let AbsoluteBoxOffsets::StaticStart { start } = &mut fragment.box_offsets.inline {
*start += start_offset.inline;
*start += start_offset.inline.into();
}
if let AbsoluteBoxOffsets::StaticStart { start } = &mut fragment.box_offsets.block {
*start += start_offset.block;
*start += start_offset.block.into();
}
};
@ -773,7 +773,7 @@ impl<'a> AbsoluteAxisSolver<'a> {
fn solve_for_size(&self, computed_size: AuOrAuto) -> AxisResult {
match self.box_offsets {
AbsoluteBoxOffsets::StaticStart { start } => AxisResult {
anchor: Anchor::Start((*start).into()),
anchor: Anchor::Start(*start),
size: computed_size,
margin_start: self.computed_margin_start.auto_is(Au::zero),
margin_end: self.computed_margin_end.auto_is(Au::zero),