diff --git a/crates/egui/src/containers/scroll_area.rs b/crates/egui/src/containers/scroll_area.rs index c57696c7203c..610b52fdad1c 100644 --- a/crates/egui/src/containers/scroll_area.rs +++ b/crates/egui/src/containers/scroll_area.rs @@ -793,10 +793,6 @@ impl Prepared { let content_size = content_ui.min_size(); - let scroll_delta_1 = content_ui - .ctx() - .frame_state_mut(|state| std::mem::take(&mut state.scroll_delta.1)); - for d in 0..2 { // We always take both scroll targets regardless of which scroll axes are enabled. This // is to avoid them leaking to other scroll areas. @@ -805,9 +801,12 @@ impl Prepared { .frame_state_mut(|state| state.scroll_target[d].take()); if scroll_enabled[d] { - let scroll_delta_0 = content_ui - .ctx() - .frame_state_mut(|state| std::mem::take(&mut state.scroll_delta.0[d])); + let (scroll_delta_0, scroll_delta_1) = content_ui.ctx().frame_state_mut(|state| { + ( + std::mem::take(&mut state.scroll_delta.0[d]), + std::mem::take(&mut state.scroll_delta.1), + ) + }); // FrameState::scroll_delta is inverted from the way we apply the delta, so we need to negate it. let mut delta = -scroll_delta_0;