mirror of
https://github.com/servo/servo.git
synced 2025-08-07 14:35:33 +01:00
Fill extra layers in background style struct before handing off to Gecko
This commit is contained in:
parent
12f272587e
commit
a98c0fc037
3 changed files with 24 additions and 0 deletions
|
@ -1178,6 +1178,24 @@ fn static_assert() {
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn fill_arrays(&mut self) {
|
||||||
|
use gecko_bindings::bindings::Gecko_FillAllBackgroundLists;
|
||||||
|
use std::cmp;
|
||||||
|
let mut max_len = 1;
|
||||||
|
% for member in "mRepeat mClip mOrigin mAttachment mPositionX mPositionY mImage".split():
|
||||||
|
max_len = cmp::max(max_len, self.gecko.mImage.${member}Count);
|
||||||
|
% endfor
|
||||||
|
|
||||||
|
// XXXManishearth Gecko does an optimization here where it only
|
||||||
|
// fills things in if any of the properties have been set
|
||||||
|
|
||||||
|
unsafe {
|
||||||
|
// While we could do this manually, we'd need to also manually
|
||||||
|
// run all the copy constructors, so we just delegate to gecko
|
||||||
|
Gecko_FillAllBackgroundLists(&mut self.gecko.mImage, max_len);
|
||||||
|
}
|
||||||
|
}
|
||||||
</%self:impl_trait>
|
</%self:impl_trait>
|
||||||
|
|
||||||
<%self:impl_trait style_struct_name="List" skip_longhands="list-style-type" skip_additionals="*">
|
<%self:impl_trait style_struct_name="List" skip_longhands="list-style-type" skip_additionals="*">
|
||||||
|
|
|
@ -2034,6 +2034,10 @@ pub fn cascade(viewport_size: Size2D<Au>,
|
||||||
}
|
}
|
||||||
% endfor
|
% endfor
|
||||||
|
|
||||||
|
% if product == "gecko":
|
||||||
|
style.mutate_background().fill_arrays();
|
||||||
|
% endif
|
||||||
|
|
||||||
// The initial value of outline width may be changed at computed value time.
|
// The initial value of outline width may be changed at computed value time.
|
||||||
if style.get_outline().clone_outline_style().none_or_hidden() &&
|
if style.get_outline().clone_outline_style().none_or_hidden() &&
|
||||||
style.get_outline().outline_has_nonzero_width() {
|
style.get_outline().outline_has_nonzero_width() {
|
||||||
|
|
|
@ -333,6 +333,8 @@ extern "C" {
|
||||||
pub fn Gecko_DestroyClipPath(clip: *mut StyleClipPath);
|
pub fn Gecko_DestroyClipPath(clip: *mut StyleClipPath);
|
||||||
pub fn Gecko_NewBasicShape(type_: StyleBasicShapeType)
|
pub fn Gecko_NewBasicShape(type_: StyleBasicShapeType)
|
||||||
-> *mut StyleBasicShape;
|
-> *mut StyleBasicShape;
|
||||||
|
pub fn Gecko_FillAllBackgroundLists(layers: *mut nsStyleImageLayers,
|
||||||
|
maxLen: u32);
|
||||||
pub fn Gecko_AddRefCalcArbitraryThread(aPtr: *mut Calc);
|
pub fn Gecko_AddRefCalcArbitraryThread(aPtr: *mut Calc);
|
||||||
pub fn Gecko_ReleaseCalcArbitraryThread(aPtr: *mut Calc);
|
pub fn Gecko_ReleaseCalcArbitraryThread(aPtr: *mut Calc);
|
||||||
pub fn Gecko_Construct_nsStyleFont(ptr: *mut nsStyleFont);
|
pub fn Gecko_Construct_nsStyleFont(ptr: *mut nsStyleFont);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue