--- a/servo/components/style/properties/gecko.mako.rs
+++ b/servo/components/style/properties/gecko.mako.rs
@@ -542,16 +542,17 @@ def set_gecko_property(ffi_name, expr):
}
</%def>
<%def name="impl_rotate(ident, gecko_ffi_name)">
#[allow(non_snake_case)]
pub fn set_${ident}(&mut self, other: values::computed::Rotate) {
use values::generics::transform::Rotate;
use values::generics::transform::TransformOperation;
+ use gecko_bindings::bindings::Gecko_UpdateTransform;
unsafe { self.gecko.${gecko_ffi_name}.clear() };
match other {
Rotate::None => (),
Rotate::Specified(Some(rx), Some(ry), Some(rz), angle) => {
let operation = vec![TransformOperation::Rotate3D(rx, ry, rz, angle)];
convert_transform(&operation, &mut self.gecko.${gecko_ffi_name});
@@ -559,16 +560,19 @@ def set_gecko_property(ffi_name, expr):
Rotate::Specified(None, _, _, angle) => {
let operation = vec![TransformOperation::Rotate(angle)];
convert_transform(&operation, &mut self.gecko.${gecko_ffi_name});
},
x => {
panic!("Found unexpected value in style struct for rotate property: {:?}", x)
}
}
+ unsafe {
+ Gecko_UpdateTransform(&mut self.gecko);
+ }
}
#[allow(non_snake_case)]
pub fn copy_${ident}_from(&mut self, other: &Self) {
unsafe { self.gecko.${gecko_ffi_name}.set(&other.gecko.${gecko_ffi_name}); }
}
#[allow(non_snake_case)]
@@ -603,16 +607,17 @@ def set_gecko_property(ffi_name, expr):
}
</%def>
<%def name="impl_translate(ident, gecko_ffi_name)">
#[allow(non_snake_case)]
pub fn set_${ident}(&mut self, other: values::computed::Translate) {
use values::generics::transform::Translate;
use values::generics::transform::TransformOperation;
+ use gecko_bindings::bindings::Gecko_UpdateTransform;
unsafe { self.gecko.${gecko_ffi_name}.clear() };
match other {
Translate::None => (),
Translate::Specified(tx, None, None) => {
let operation = vec![TransformOperation::TranslateX(tx)];
convert_transform(&operation, &mut self.gecko.${gecko_ffi_name});
@@ -624,16 +629,19 @@ def set_gecko_property(ffi_name, expr):
Translate::Specified(sx, Some(sy), Some(sz)) => {
let operation = vec![TransformOperation::Translate3D(sx, sy, sz)];
convert_transform(&operation, &mut self.gecko.${gecko_ffi_name});
},
x => {
panic!("Found unexpected value in style struct for scale property: {:?}", x)
}
}
+ unsafe {
+ Gecko_UpdateTransform(&mut self.gecko);
+ }
}
#[allow(non_snake_case)]
pub fn copy_${ident}_from(&mut self, other: &Self) {
unsafe { self.gecko.${gecko_ffi_name}.set(&other.gecko.${gecko_ffi_name}); }
}
#[allow(non_snake_case)]
@@ -671,16 +679,17 @@ def set_gecko_property(ffi_name, expr):
}
</%def>
<%def name="impl_scale(ident, gecko_ffi_name)">
#[allow(non_snake_case)]
pub fn set_${ident}(&mut self, other: values::computed::Scale) {
use values::generics::transform::Scale;
use values::generics::transform::TransformOperation;
+ use gecko_bindings::bindings::Gecko_UpdateTransform;
unsafe { self.gecko.${gecko_ffi_name}.clear() };
match other {
Scale::None => (),
Scale::Specified(sx, None, None) => {
let operation = vec![TransformOperation::ScaleX(sx)];
convert_transform(&operation, &mut self.gecko.${gecko_ffi_name});
@@ -692,16 +701,19 @@ def set_gecko_property(ffi_name, expr):
Scale::Specified(sx, Some(sy), Some(sz)) => {
let operation = vec![TransformOperation::Scale3D(sx, sy, sz)];
convert_transform(&operation, &mut self.gecko.${gecko_ffi_name});
},
x => {
panic!("Found unexpected value in style struct for scale property: {:?}", x)
}
}
+ unsafe {
+ Gecko_UpdateTransform(&mut self.gecko);
+ }
}
#[allow(non_snake_case)]
pub fn copy_${ident}_from(&mut self, other: &Self) {
unsafe { self.gecko.${gecko_ffi_name}.set(&other.gecko.${gecko_ffi_name}); }
}
#[allow(non_snake_case)]
@@ -1484,23 +1496,32 @@ pub fn clone_transform_from_list(
};
Transform(result)
}
<%def name="impl_transform(ident, gecko_ffi_name)">
#[allow(non_snake_case)]
pub fn set_${ident}(&mut self, other: values::computed::Transform) {
use gecko_properties::convert_transform;
+ % if gecko_ffi_name is "mSpecifiedTransform":
+ use gecko_bindings::bindings::Gecko_UpdateTransform;
+ %endif
if other.0.is_empty() {
unsafe {
self.gecko.${gecko_ffi_name}.clear();
}
return;
};
convert_transform(&other.0, &mut self.gecko.${gecko_ffi_name});
+
+ % if gecko_ffi_name is "mSpecifiedTransform":
+ unsafe {
+ Gecko_UpdateTransform(&mut self.gecko);
+ }
+ %endif
}
#[allow(non_snake_case)]
pub fn copy_${ident}_from(&mut self, other: &Self) {
unsafe { self.gecko.${gecko_ffi_name}.set(&other.gecko.${gecko_ffi_name}); }
}
#[allow(non_snake_case)]