From c8262ba99fba60c61e15fa7a5a1e3872f228d0f4 Mon Sep 17 00:00:00 2001 From: Matt Brubeck Date: Tue, 16 May 2017 12:28:15 -0700 Subject: [PATCH] Bug 1365100 - stylo: Fix inheritance of multiple background images. --- components/style/properties/gecko.mako.rs | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/components/style/properties/gecko.mako.rs b/components/style/properties/gecko.mako.rs index 146c8827b9d..a9f08d76070 100644 --- a/components/style/properties/gecko.mako.rs +++ b/components/style/properties/gecko.mako.rs @@ -2850,9 +2850,21 @@ fn static_assert() { pub fn copy_${shorthand}_image_from(&mut self, other: &Self) { + use gecko_bindings::structs::nsStyleImageLayers_LayerType as LayerType; unsafe { - Gecko_CopyImageValueFrom(&mut self.gecko.${image_layers_field}.mLayers.mFirstElement.mImage, - &other.gecko.${image_layers_field}.mLayers.mFirstElement.mImage); + let count = other.gecko.${image_layers_field}.mImageCount; + unsafe { + Gecko_EnsureImageLayersLength(&mut self.gecko.${image_layers_field}, + count as usize, + LayerType::${shorthand.capitalize()}); + } + + for (layer, other) in self.gecko.${image_layers_field}.mLayers.iter_mut() + .zip(other.gecko.${image_layers_field}.mLayers.iter()) + .take(count as usize) { + Gecko_CopyImageValueFrom(&mut layer.mImage, &other.mImage); + } + self.gecko.${image_layers_field}.mImageCount = count; } }