Skip to content

Commit 981175b

Browse files
committed
Don't output duplicate properties when incompatible with targets
1 parent 808ce79 commit 981175b

File tree

4 files changed

+43
-43
lines changed

4 files changed

+43
-43
lines changed

src/properties/background.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -815,7 +815,7 @@ impl<'i> PropertyHandler<'i> for BackgroundHandler<'i> {
815815
context: &mut PropertyHandlerContext<'i, '_>,
816816
) -> bool {
817817
macro_rules! background_image {
818-
($val: ident) => {
818+
($val: expr) => {
819819
flush!(images, $val);
820820

821821
// Store prefixed properties. Clear if we hit an unprefixed property and we have
@@ -831,7 +831,7 @@ impl<'i> PropertyHandler<'i> for BackgroundHandler<'i> {
831831

832832
macro_rules! flush {
833833
($key: ident, $val: expr) => {{
834-
if self.$key.is_some() && matches!(context.targets.browsers, Some(targets) if !$val.is_compatible(targets)) {
834+
if self.$key.is_some() && self.$key.as_ref().unwrap() != $val && matches!(context.targets.browsers, Some(targets) if !$val.is_compatible(targets)) {
835835
self.flush(dest, context);
836836
}
837837
}};
@@ -873,9 +873,9 @@ impl<'i> PropertyHandler<'i> for BackgroundHandler<'i> {
873873
}
874874
Property::Background(val) => {
875875
let images: SmallVec<[Image; 1]> = val.iter().map(|b| b.image.clone()).collect();
876-
background_image!(images);
876+
background_image!(&images);
877877
let color = val.last().unwrap().color.clone();
878-
flush!(color, color);
878+
flush!(color, &color);
879879
let clips = val.iter().map(|b| b.clip.clone()).collect();
880880
let mut clips_vp = VendorPrefix::None;
881881
if let Some((cur_clips, cur_clips_vp)) = &mut self.clips {

src/properties/border.rs

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -613,7 +613,7 @@ impl<'i> PropertyHandler<'i> for BorderHandler<'i> {
613613
self.flush(dest, context);
614614
}
615615

616-
if self.$key.$prop.is_some() && matches!(context.targets.browsers, Some(targets) if !$val.is_compatible(targets)) {
616+
if self.$key.$prop.is_some() && self.$key.$prop.as_ref().unwrap() != $val && matches!(context.targets.browsers, Some(targets) if !$val.is_compatible(targets)) {
617617
self.flush(dest, context);
618618
}
619619
}};
@@ -647,14 +647,14 @@ impl<'i> PropertyHandler<'i> for BorderHandler<'i> {
647647
BorderBlockStartColor(val) => property!(border_block_start, color, val, Logical),
648648
BorderBlockEndColor(val) => property!(border_block_end, color, val, Logical),
649649
BorderBlockColor(val) => {
650-
property!(border_block_start, color, val.start, Logical);
651-
property!(border_block_end, color, val.end, Logical);
650+
property!(border_block_start, color, &val.start, Logical);
651+
property!(border_block_end, color, &val.end, Logical);
652652
}
653653
BorderInlineStartColor(val) => property!(border_inline_start, color, val, Logical),
654654
BorderInlineEndColor(val) => property!(border_inline_end, color, val, Logical),
655655
BorderInlineColor(val) => {
656-
property!(border_inline_start, color, val.start, Logical);
657-
property!(border_inline_end, color, val.end, Logical);
656+
property!(border_inline_start, color, &val.start, Logical);
657+
property!(border_inline_end, color, &val.end, Logical);
658658
}
659659
BorderTopWidth(val) => property!(border_top, width, val, Physical),
660660
BorderBottomWidth(val) => property!(border_bottom, width, val, Physical),
@@ -663,14 +663,14 @@ impl<'i> PropertyHandler<'i> for BorderHandler<'i> {
663663
BorderBlockStartWidth(val) => property!(border_block_start, width, val, Logical),
664664
BorderBlockEndWidth(val) => property!(border_block_end, width, val, Logical),
665665
BorderBlockWidth(val) => {
666-
property!(border_block_start, width, val.start, Logical);
667-
property!(border_block_end, width, val.end, Logical);
666+
property!(border_block_start, width, &val.start, Logical);
667+
property!(border_block_end, width, &val.end, Logical);
668668
}
669669
BorderInlineStartWidth(val) => property!(border_inline_start, width, val, Logical),
670670
BorderInlineEndWidth(val) => property!(border_inline_end, width, val, Logical),
671671
BorderInlineWidth(val) => {
672-
property!(border_inline_start, width, val.start, Logical);
673-
property!(border_inline_end, width, val.end, Logical);
672+
property!(border_inline_start, width, &val.start, Logical);
673+
property!(border_inline_end, width, &val.end, Logical);
674674
}
675675
BorderTopStyle(val) => property!(border_top, style, val, Physical),
676676
BorderBottomStyle(val) => property!(border_bottom, style, val, Physical),
@@ -679,14 +679,14 @@ impl<'i> PropertyHandler<'i> for BorderHandler<'i> {
679679
BorderBlockStartStyle(val) => property!(border_block_start, style, val, Logical),
680680
BorderBlockEndStyle(val) => property!(border_block_end, style, val, Logical),
681681
BorderBlockStyle(val) => {
682-
property!(border_block_start, style, val.start, Logical);
683-
property!(border_block_end, style, val.end, Logical);
682+
property!(border_block_start, style, &val.start, Logical);
683+
property!(border_block_end, style, &val.end, Logical);
684684
}
685685
BorderInlineStartStyle(val) => property!(border_inline_start, style, val, Logical),
686686
BorderInlineEndStyle(val) => property!(border_inline_end, style, val, Logical),
687687
BorderInlineStyle(val) => {
688-
property!(border_inline_start, style, val.start, Logical);
689-
property!(border_inline_end, style, val.end, Logical);
688+
property!(border_inline_start, style, &val.start, Logical);
689+
property!(border_inline_end, style, &val.end, Logical);
690690
}
691691
BorderTop(val) => set_border!(border_top, val, Physical),
692692
BorderBottom(val) => set_border!(border_bottom, val, Physical),
@@ -705,32 +705,32 @@ impl<'i> PropertyHandler<'i> for BorderHandler<'i> {
705705
set_border!(border_inline_end, val, Logical);
706706
}
707707
BorderWidth(val) => {
708-
property!(border_top, width, val.top, Physical);
709-
property!(border_right, width, val.right, Physical);
710-
property!(border_bottom, width, val.bottom, Physical);
711-
property!(border_left, width, val.left, Physical);
708+
property!(border_top, width, &val.top, Physical);
709+
property!(border_right, width, &val.right, Physical);
710+
property!(border_bottom, width, &val.bottom, Physical);
711+
property!(border_left, width, &val.left, Physical);
712712
self.border_block_start.width = None;
713713
self.border_block_end.width = None;
714714
self.border_inline_start.width = None;
715715
self.border_inline_end.width = None;
716716
self.has_any = true;
717717
}
718718
BorderStyle(val) => {
719-
property!(border_top, style, val.top, Physical);
720-
property!(border_right, style, val.right, Physical);
721-
property!(border_bottom, style, val.bottom, Physical);
722-
property!(border_left, style, val.left, Physical);
719+
property!(border_top, style, &val.top, Physical);
720+
property!(border_right, style, &val.right, Physical);
721+
property!(border_bottom, style, &val.bottom, Physical);
722+
property!(border_left, style, &val.left, Physical);
723723
self.border_block_start.style = None;
724724
self.border_block_end.style = None;
725725
self.border_inline_start.style = None;
726726
self.border_inline_end.style = None;
727727
self.has_any = true;
728728
}
729729
BorderColor(val) => {
730-
property!(border_top, color, val.top, Physical);
731-
property!(border_right, color, val.right, Physical);
732-
property!(border_bottom, color, val.bottom, Physical);
733-
property!(border_left, color, val.left, Physical);
730+
property!(border_top, color, &val.top, Physical);
731+
property!(border_right, color, &val.right, Physical);
732+
property!(border_bottom, color, &val.bottom, Physical);
733+
property!(border_left, color, &val.left, Physical);
734734
self.border_block_start.color = None;
735735
self.border_block_end.color = None;
736736
self.border_inline_start.color = None;

src/properties/border_image.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -446,7 +446,7 @@ impl<'i> PropertyHandler<'i> for BorderImageHandler<'i> {
446446

447447
macro_rules! flush {
448448
($name: ident, $val: expr) => {{
449-
if self.$name.is_some() && matches!(context.targets.browsers, Some(targets) if !$val.is_compatible(targets)) {
449+
if self.$name.is_some() && self.$name.as_ref().unwrap() != $val && matches!(context.targets.browsers, Some(targets) if !$val.is_compatible(targets)) {
450450
self.flush(dest, context);
451451
}
452452
}};
@@ -459,11 +459,11 @@ impl<'i> PropertyHandler<'i> for BorderImageHandler<'i> {
459459
BorderImageOutset(val) => property!(outset, val),
460460
BorderImageRepeat(val) => property!(repeat, val),
461461
BorderImage(val, vp) => {
462-
flush!(source, val.source);
463-
flush!(slice, val.slice);
464-
flush!(width, val.width);
465-
flush!(outset, val.outset);
466-
flush!(repeat, val.repeat);
462+
flush!(source, &val.source);
463+
flush!(slice, &val.slice);
464+
flush!(width, &val.width);
465+
flush!(outset, &val.outset);
466+
flush!(repeat, &val.repeat);
467467
self.source = Some(val.source.clone());
468468
self.slice = Some(val.slice.clone());
469469
self.width = Some(val.width.clone());

src/properties/font.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -948,7 +948,7 @@ impl<'i> PropertyHandler<'i> for FontHandler<'i> {
948948

949949
macro_rules! flush {
950950
($prop: ident, $val: expr) => {{
951-
if self.$prop.is_some() && matches!(context.targets.browsers, Some(targets) if !$val.is_compatible(targets)) {
951+
if self.$prop.is_some() && self.$prop.as_ref().unwrap() != $val && matches!(context.targets.browsers, Some(targets) if !$val.is_compatible(targets)) {
952952
self.flush(dest, context);
953953
}
954954
}};
@@ -971,13 +971,13 @@ impl<'i> PropertyHandler<'i> for FontHandler<'i> {
971971
FontVariantCaps(val) => property!(variant_caps, val),
972972
LineHeight(val) => property!(line_height, val),
973973
Font(val) => {
974-
flush!(family, val.family);
975-
flush!(size, val.size);
976-
flush!(style, val.style);
977-
flush!(weight, val.weight);
978-
flush!(stretch, val.stretch);
979-
flush!(line_height, val.line_height);
980-
flush!(variant_caps, val.variant_caps);
974+
flush!(family, &val.family);
975+
flush!(size, &val.size);
976+
flush!(style, &val.style);
977+
flush!(weight, &val.weight);
978+
flush!(stretch, &val.stretch);
979+
flush!(line_height, &val.line_height);
980+
flush!(variant_caps, &val.variant_caps);
981981
self.family = Some(val.family.clone());
982982
self.size = Some(val.size.clone());
983983
self.style = Some(val.style.clone());

0 commit comments

Comments
 (0)