diff --git a/webrender/src/scroll_tree.rs b/webrender/src/scroll_tree.rs index 909febaa9f..792f6fb1f2 100644 --- a/webrender/src/scroll_tree.rs +++ b/webrender/src/scroll_tree.rs @@ -190,11 +190,20 @@ impl ScrollTree { phase, self.find_scrolling_layer_at_point(&cursor), self.current_scroll_layer_id) { - (ScrollEventPhase::Start, scroll_layer_id, _) => { - self.current_scroll_layer_id = Some(scroll_layer_id); + (ScrollEventPhase::Start, scroll_layer_at_point_id, _) => { + self.current_scroll_layer_id = Some(scroll_layer_at_point_id); + scroll_layer_at_point_id + }, + (_, scroll_layer_at_point_id, Some(cached_scroll_layer_id)) => { + let scroll_layer_id = match self.layers.get(&cached_scroll_layer_id) { + Some(_) => cached_scroll_layer_id, + None => { + self.current_scroll_layer_id = Some(scroll_layer_at_point_id); + scroll_layer_at_point_id + }, + }; scroll_layer_id }, - (_, _, Some(scroll_layer_id)) => scroll_layer_id, (_, _, None) => return false, };