mirror of
https://github.com/zed-industries/zed.git
synced 2024-10-06 10:57:40 +03:00
Allow Shift + Scroll to Horizontally Scroll in X11 and Wayland (#13676)
Release Notes: - Allows shift + scroll horizontal scrolling on X11 and Wayland. [Screencast from 2024-06-29 17-17-59.webm](https://github.com/zed-industries/zed/assets/14155062/2cac77b9-ecc8-4ddb-b08d-b5d964c8dc84)
This commit is contained in:
parent
d450a1d9e6
commit
b1f8fc88a1
@ -1508,6 +1508,11 @@ impl Dispatch<wl_pointer::WlPointer, ()> for WaylandClientStatePtr {
|
|||||||
if state.axis_source == AxisSource::Wheel {
|
if state.axis_source == AxisSource::Wheel {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
let axis = if state.modifiers.shift {
|
||||||
|
wl_pointer::Axis::HorizontalScroll
|
||||||
|
} else {
|
||||||
|
axis
|
||||||
|
};
|
||||||
let axis_modifier = match axis {
|
let axis_modifier = match axis {
|
||||||
wl_pointer::Axis::VerticalScroll => state.vertical_modifier,
|
wl_pointer::Axis::VerticalScroll => state.vertical_modifier,
|
||||||
wl_pointer::Axis::HorizontalScroll => state.horizontal_modifier,
|
wl_pointer::Axis::HorizontalScroll => state.horizontal_modifier,
|
||||||
@ -1533,6 +1538,11 @@ impl Dispatch<wl_pointer::WlPointer, ()> for WaylandClientStatePtr {
|
|||||||
discrete,
|
discrete,
|
||||||
} => {
|
} => {
|
||||||
state.scroll_event_received = true;
|
state.scroll_event_received = true;
|
||||||
|
let axis = if state.modifiers.shift {
|
||||||
|
wl_pointer::Axis::HorizontalScroll
|
||||||
|
} else {
|
||||||
|
axis
|
||||||
|
};
|
||||||
let axis_modifier = match axis {
|
let axis_modifier = match axis {
|
||||||
wl_pointer::Axis::VerticalScroll => state.vertical_modifier,
|
wl_pointer::Axis::VerticalScroll => state.vertical_modifier,
|
||||||
wl_pointer::Axis::HorizontalScroll => state.horizontal_modifier,
|
wl_pointer::Axis::HorizontalScroll => state.horizontal_modifier,
|
||||||
@ -1555,6 +1565,11 @@ impl Dispatch<wl_pointer::WlPointer, ()> for WaylandClientStatePtr {
|
|||||||
value120,
|
value120,
|
||||||
} => {
|
} => {
|
||||||
state.scroll_event_received = true;
|
state.scroll_event_received = true;
|
||||||
|
let axis = if state.modifiers.shift {
|
||||||
|
wl_pointer::Axis::HorizontalScroll
|
||||||
|
} else {
|
||||||
|
axis
|
||||||
|
};
|
||||||
let axis_modifier = match axis {
|
let axis_modifier = match axis {
|
||||||
wl_pointer::Axis::VerticalScroll => state.vertical_modifier,
|
wl_pointer::Axis::VerticalScroll => state.vertical_modifier,
|
||||||
wl_pointer::Axis::HorizontalScroll => state.horizontal_modifier,
|
wl_pointer::Axis::HorizontalScroll => state.horizontal_modifier,
|
||||||
|
@ -817,10 +817,15 @@ impl X11Client {
|
|||||||
|
|
||||||
if let Some(old_scroll) = old_scroll {
|
if let Some(old_scroll) = old_scroll {
|
||||||
let delta_scroll = old_scroll - new_scroll;
|
let delta_scroll = old_scroll - new_scroll;
|
||||||
|
let (x, y) = if !modifiers.shift {
|
||||||
|
(0.0, delta_scroll)
|
||||||
|
} else {
|
||||||
|
(delta_scroll, 0.0)
|
||||||
|
};
|
||||||
window.handle_input(PlatformInput::ScrollWheel(
|
window.handle_input(PlatformInput::ScrollWheel(
|
||||||
crate::ScrollWheelEvent {
|
crate::ScrollWheelEvent {
|
||||||
position,
|
position,
|
||||||
delta: ScrollDelta::Lines(Point::new(0.0, delta_scroll)),
|
delta: ScrollDelta::Lines(Point::new(x, y)),
|
||||||
modifiers,
|
modifiers,
|
||||||
touch_phase: TouchPhase::default(),
|
touch_phase: TouchPhase::default(),
|
||||||
},
|
},
|
||||||
|
Loading…
Reference in New Issue
Block a user