diff --git a/src/input/mod.rs b/src/input/mod.rs index 2a62947c..69aaccce 100644 --- a/src/input/mod.rs +++ b/src/input/mod.rs @@ -37,11 +37,12 @@ use cosmic_settings_config::shortcuts; use cosmic_settings_config::shortcuts::action::{Direction, ResizeDirection}; use smithay::{ backend::input::{ - AbsolutePositionEvent, Axis, AxisSource, Device, DeviceCapability, GestureBeginEvent, - GestureEndEvent, GesturePinchUpdateEvent as _, GestureSwipeUpdateEvent as _, InputBackend, - InputEvent, KeyState, KeyboardKeyEvent, PointerAxisEvent, ProximityState, Switch, - SwitchState, SwitchToggleEvent, TabletToolButtonEvent, TabletToolEvent, - TabletToolProximityEvent, TabletToolTipEvent, TabletToolTipState, TouchEvent, + AbsolutePositionEvent, Axis, AxisRelativeDirection, AxisSource, Device, DeviceCapability, + GestureBeginEvent, GestureEndEvent, GesturePinchUpdateEvent as _, + GestureSwipeUpdateEvent as _, InputBackend, InputEvent, KeyState, KeyboardKeyEvent, + PointerAxisEvent, ProximityState, Switch, SwitchState, SwitchToggleEvent, + TabletToolButtonEvent, TabletToolEvent, TabletToolProximityEvent, TabletToolTipEvent, + TabletToolTipState, TouchEvent, }, desktop::{PopupKeyboardGrab, WindowSurfaceType, utils::under_from_surface_tree}, input::{ @@ -914,6 +915,12 @@ impl State { .or_else(|| event.amount(Axis::Vertical)) .map(|val| val * scroll_factor) { + if event.relative_direction(Axis::Vertical) + == AxisRelativeDirection::Inverted + { + percentage *= -1.; + } + if event.source() == AxisSource::Wheel { percentage *= 5.; } diff --git a/src/shell/zoom.rs b/src/shell/zoom.rs index bb681563..b4ba339f 100644 --- a/src/shell/zoom.rs +++ b/src/shell/zoom.rs @@ -9,7 +9,7 @@ use cosmic::{ }; use cosmic_comp_config::ZoomMovement; use cosmic_config::ConfigSet; -use keyframe::{ease, functions::EaseInOutCubic}; +use keyframe::{ease, functions::Linear}; use smithay::{ backend::renderer::{ImportMem, Renderer, element::AsRenderElements}, desktop::space::SpaceElement, @@ -135,7 +135,7 @@ impl OutputZoomState { let percentage = duration_since.as_millis() as f32 / ANIMATION_DURATION.as_millis() as f32; ease( - EaseInOutCubic, + Linear, EasePoint(*old_point), EasePoint(self.focal_point), percentage, @@ -159,7 +159,7 @@ impl OutputZoomState { let percentage = Instant::now().duration_since(*start).as_millis() as f32 / ANIMATION_DURATION.as_millis() as f32; - ease(EaseInOutCubic, *old_level, self.level, percentage) + ease(Linear, *old_level, self.level, percentage) } else { self.level }