Skip to content

Commit

Permalink
style: Add a temporary workaround for geckolib animations.
Browse files Browse the repository at this point in the history
With needs_borrow we will be able to remove this, though we'll have to implement
clone_ and borrow_ methods for a bunch of properties.
  • Loading branch information
emilio committed Jul 1, 2016
1 parent 2faaf95 commit bc4e670
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 0 deletions.
5 changes: 5 additions & 0 deletions components/style/animation.rs
Expand Up @@ -422,6 +422,11 @@ pub fn maybe_start_animations<Impl: SelectorImplExt>(context: &SharedStyleContex
{
let mut had_animations = false;

// FIXME(emilio): Implement animations for geckolib.
if !new_style.is_servo() {
return false;
}

let box_style = new_style.as_servo().get_box();
for (i, name) in box_style.animation_name.0.iter().enumerate() {
debug!("maybe_start_animations: name={}", name);
Expand Down
5 changes: 5 additions & 0 deletions components/style/properties/properties.mako.rs
Expand Up @@ -1259,6 +1259,7 @@ pub trait ComputedValues : Debug + Clone + Send + Sync + 'static {
// yet - panics for non-Servo implementations.
//
// Used only for animations. Don't use it in other places.
fn is_servo(&self) -> bool;
fn as_servo<'a>(&'a self) -> &'a ServoComputedValues;
fn as_servo_mut<'a>(&'a mut self) -> &'a mut ServoComputedValues;

Expand Down Expand Up @@ -1310,7 +1311,11 @@ impl ComputedValues for ServoComputedValues {
type Concrete${style_struct.trait_name} = style_structs::${style_struct.servo_struct_name};
% endfor

#[inline]
fn is_servo(&self) -> bool { true }
#[inline]
fn as_servo<'a>(&'a self) -> &'a ServoComputedValues { self }
#[inline]
fn as_servo_mut<'a>(&'a mut self) -> &'a mut ServoComputedValues { self }

fn new(custom_properties: Option<Arc<::custom_properties::ComputedValuesMap>>,
Expand Down
1 change: 1 addition & 0 deletions ports/geckolib/properties.mako.rs
Expand Up @@ -74,6 +74,7 @@ impl ComputedValues for GeckoComputedValues {
% endfor

// These will go away, and we will never implement them.
fn is_servo(&self) -> bool { false }
fn as_servo<'a>(&'a self) -> &'a ServoComputedValues { unimplemented!() }
fn as_servo_mut<'a>(&'a mut self) -> &'a mut ServoComputedValues { unimplemented!() }

Expand Down

0 comments on commit bc4e670

Please sign in to comment.