auto merge of #5428 : pcwalton/servo/squash-mouse-move, r=jdm

Otherwise they queue up if the event handler isn't 60FPS.

r? @jdm
This commit is contained in:
bors-servo 2015-03-30 13:40:04 -06:00
commit c1cc31b9d6

View file

@ -578,13 +578,15 @@ impl ScriptTask {
} }
}; };
// Squash any pending resize and reflow events in the queue. // Squash any pending resize, reflow, and mouse-move events in the queue.
let mut mouse_move_event_index = None;
loop { loop {
match event { match event {
// This has to be handled before the ResizeMsg below, // This has to be handled before the ResizeMsg below,
// otherwise the page may not have been added to the // otherwise the page may not have been added to the
// child list yet, causing the find() to fail. // child list yet, causing the find() to fail.
MixedMessage::FromConstellation(ConstellationControlMsg::AttachLayout(new_layout_info)) => { MixedMessage::FromConstellation(ConstellationControlMsg::AttachLayout(
new_layout_info)) => {
self.handle_new_layout(new_layout_info); self.handle_new_layout(new_layout_info);
} }
MixedMessage::FromConstellation(ConstellationControlMsg::Resize(id, size)) => { MixedMessage::FromConstellation(ConstellationControlMsg::Resize(id, size)) => {
@ -593,6 +595,19 @@ impl ScriptTask {
MixedMessage::FromConstellation(ConstellationControlMsg::Viewport(id, rect)) => { MixedMessage::FromConstellation(ConstellationControlMsg::Viewport(id, rect)) => {
self.handle_viewport(id, rect); self.handle_viewport(id, rect);
} }
MixedMessage::FromConstellation(ConstellationControlMsg::SendEvent(
_,
MouseMoveEvent(_))) => {
match mouse_move_event_index {
None => {
mouse_move_event_index = Some(sequential.len());
sequential.push(event);
}
Some(index) => {
sequential[index] = event
}
}
}
_ => { _ => {
sequential.push(event); sequential.push(event);
} }