зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1805097 - [refactor] Migrate NS_STYLE_MASONRY_* defines r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D164422
This commit is contained in:
Родитель
265b52fb1f
Коммит
8b3a740547
|
@ -8026,7 +8026,8 @@ nscoord nsGridContainerFrame::MasonryLayout(GridReflowInput& aState,
|
|||
}
|
||||
}
|
||||
const auto masonryAutoFlow = aState.mGridStyle->mMasonryAutoFlow;
|
||||
bool definiteFirst = masonryAutoFlow & NS_STYLE_MASONRY_ORDER_DEFINITE_FIRST;
|
||||
const bool definiteFirst =
|
||||
masonryAutoFlow.order == StyleMasonryItemOrder::DefiniteFirst;
|
||||
if (masonryAxis == eLogicalAxisBlock) {
|
||||
std::stable_sort(sortedItems.begin(), sortedItems.end(),
|
||||
definiteFirst ? GridItemInfo::RowMasonryDefiniteFirst
|
||||
|
@ -8077,7 +8078,7 @@ nscoord nsGridContainerFrame::MasonryLayout(GridReflowInput& aState,
|
|||
uint32_t cursor = 0;
|
||||
const auto containerToMasonryBoxOffset =
|
||||
fragStartPos - aContentArea.Start(masonryAxis, wm);
|
||||
const bool isPack = masonryAutoFlow & NS_STYLE_MASONRY_PLACEMENT_PACK;
|
||||
const bool isPack = masonryAutoFlow.placement == StyleMasonryPlacement::Pack;
|
||||
bool didAlignStartAlignedFirstItems = false;
|
||||
|
||||
// Return true if any of the lastItems in aRange are baseline-aligned in
|
||||
|
|
|
@ -522,6 +522,9 @@ cbindgen-types = [
|
|||
{ gecko = "StyleWillChange", servo = "crate::values::specified::box_::WillChange" },
|
||||
{ gecko = "StyleColorScheme", servo = "crate::values::specified::color::ColorScheme" },
|
||||
{ gecko = "StyleTextDecorationLine", servo = "crate::values::computed::TextDecorationLine" },
|
||||
{ gecko = "StyleMasonryAutoFlow", servo = "crate::values::specified::MasonryAutoFlow" },
|
||||
{ gecko = "StyleMasonryPlacement", servo = "crate::values::specified::MasonryPlacement" },
|
||||
{ gecko = "StyleMasonryItemOrder", servo = "crate::values::specified::MasonryItemOrder" },
|
||||
{ gecko = "StyleTextTransform", servo = "crate::values::computed::TextTransform" },
|
||||
{ gecko = "StyleTextUnderlinePosition", servo = "crate::values::computed::TextUnderlinePosition" },
|
||||
{ gecko = "StyleOwned", servo = "crate::gecko_bindings::sugar::ownership::Owned" },
|
||||
|
|
|
@ -345,11 +345,6 @@ enum class StyleFlexWrap : uint8_t {
|
|||
// (rather than an internal numerical representation of some keyword).
|
||||
#define NS_STYLE_ORDER_INITIAL 0
|
||||
|
||||
#define NS_STYLE_MASONRY_PLACEMENT_PACK (1 << 0)
|
||||
#define NS_STYLE_MASONRY_ORDER_DEFINITE_FIRST (1 << 1)
|
||||
#define NS_STYLE_MASONRY_AUTO_FLOW_INITIAL_VALUE \
|
||||
(NS_STYLE_MASONRY_PLACEMENT_PACK | NS_STYLE_MASONRY_ORDER_DEFINITE_FIRST)
|
||||
|
||||
// 'subgrid' keyword in grid-template-{columns,rows}
|
||||
#define NS_STYLE_GRID_TEMPLATE_SUBGRID 0
|
||||
|
||||
|
|
|
@ -1080,7 +1080,8 @@ nsStylePosition::nsStylePosition(const Document& aDocument)
|
|||
mFlexBasis(StyleFlexBasis::Size(StyleSize::Auto())),
|
||||
mAspectRatio(StyleAspectRatio::Auto()),
|
||||
mGridAutoFlow(StyleGridAutoFlow::ROW),
|
||||
mMasonryAutoFlow(NS_STYLE_MASONRY_AUTO_FLOW_INITIAL_VALUE),
|
||||
mMasonryAutoFlow(
|
||||
{StyleMasonryPlacement::Pack, StyleMasonryItemOrder::DefiniteFirst}),
|
||||
mAlignContent({StyleAlignFlags::NORMAL}),
|
||||
mAlignItems({StyleAlignFlags::NORMAL}),
|
||||
mAlignSelf({StyleAlignFlags::AUTO}),
|
||||
|
|
|
@ -833,7 +833,7 @@ struct MOZ_NEEDS_MEMMOVABLE_MEMBERS nsStylePosition {
|
|||
StyleImplicitGridTracks mGridAutoRows;
|
||||
mozilla::StyleAspectRatio mAspectRatio;
|
||||
mozilla::StyleGridAutoFlow mGridAutoFlow;
|
||||
uint8_t mMasonryAutoFlow; // NS_STYLE_MASONRY_*
|
||||
mozilla::StyleMasonryAutoFlow mMasonryAutoFlow;
|
||||
|
||||
mozilla::StyleAlignContent mAlignContent;
|
||||
mozilla::StyleAlignItems mAlignItems;
|
||||
|
|
|
@ -76,8 +76,9 @@ pub use self::page::{PageName, PageSize, PageSizeOrientation, PaperSize};
|
|||
pub use self::percentage::{NonNegativePercentage, Percentage};
|
||||
pub use self::position::AspectRatio;
|
||||
pub use self::position::{
|
||||
GridAutoFlow, GridTemplateAreas, MasonryAutoFlow, Position, PositionOrAuto,
|
||||
GridAutoFlow, GridTemplateAreas, Position, PositionOrAuto,
|
||||
};
|
||||
pub use self::position::{MasonryAutoFlow, MasonryPlacement, MasonryItemOrder};
|
||||
pub use self::position::{PositionComponent, ZIndex};
|
||||
pub use self::ratio::Ratio;
|
||||
pub use self::rect::NonNegativeLengthOrNumberRect;
|
||||
|
|
|
@ -391,6 +391,7 @@ bitflags! {
|
|||
}
|
||||
}
|
||||
|
||||
#[repr(u8)]
|
||||
#[derive(
|
||||
Clone,
|
||||
Copy,
|
||||
|
@ -412,6 +413,7 @@ pub enum MasonryPlacement {
|
|||
Next,
|
||||
}
|
||||
|
||||
#[repr(u8)]
|
||||
#[derive(
|
||||
Clone,
|
||||
Copy,
|
||||
|
@ -446,6 +448,7 @@ pub enum MasonryItemOrder {
|
|||
ToResolvedValue,
|
||||
ToShmem,
|
||||
)]
|
||||
#[repr(C)]
|
||||
/// Controls how the Masonry layout algorithm works
|
||||
/// specifying exactly how auto-placed items get flowed in the masonry axis.
|
||||
pub struct MasonryAutoFlow {
|
||||
|
@ -525,37 +528,6 @@ impl Parse for MasonryAutoFlow {
|
|||
}
|
||||
}
|
||||
|
||||
#[cfg(feature = "gecko")]
|
||||
impl From<u8> for MasonryAutoFlow {
|
||||
fn from(bits: u8) -> MasonryAutoFlow {
|
||||
use crate::gecko_bindings::structs;
|
||||
let mut value = MasonryAutoFlow::initial();
|
||||
if bits & structs::NS_STYLE_MASONRY_PLACEMENT_PACK as u8 == 0 {
|
||||
value.placement = MasonryPlacement::Next;
|
||||
}
|
||||
if bits & structs::NS_STYLE_MASONRY_ORDER_DEFINITE_FIRST as u8 == 0 {
|
||||
value.order = MasonryItemOrder::Ordered;
|
||||
}
|
||||
value
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(feature = "gecko")]
|
||||
impl From<MasonryAutoFlow> for u8 {
|
||||
fn from(v: MasonryAutoFlow) -> u8 {
|
||||
use crate::gecko_bindings::structs;
|
||||
|
||||
let mut result: u8 = 0;
|
||||
if v.placement == MasonryPlacement::Pack {
|
||||
result |= structs::NS_STYLE_MASONRY_PLACEMENT_PACK as u8;
|
||||
}
|
||||
if v.order == MasonryItemOrder::DefiniteFirst {
|
||||
result |= structs::NS_STYLE_MASONRY_ORDER_DEFINITE_FIRST as u8;
|
||||
}
|
||||
result
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: Can be derived with some care.
|
||||
impl Parse for GridAutoFlow {
|
||||
/// [ row | column ] || dense
|
||||
|
|
|
@ -163,6 +163,9 @@ include = [
|
|||
"TouchAction",
|
||||
"WillChange",
|
||||
"TextDecorationLine",
|
||||
"MasonryAutoFlow",
|
||||
"MasonryPlacement",
|
||||
"MasonryItemOrder",
|
||||
"TextUnderlinePosition",
|
||||
"TextTransform",
|
||||
"TextJustify",
|
||||
|
|
Загрузка…
Ссылка в новой задаче