Apply translation to levitated Cursor in scrollable
This commit is contained in:
parent
869891bbf0
commit
a0cfd52d1b
2 changed files with 20 additions and 13 deletions
|
|
@ -75,6 +75,20 @@ impl Cursor {
|
|||
}
|
||||
}
|
||||
|
||||
impl std::ops::Add<Vector> for Cursor {
|
||||
type Output = Self;
|
||||
|
||||
fn add(self, translation: Vector) -> Self::Output {
|
||||
match self {
|
||||
Cursor::Available(point) => Cursor::Available(point + translation),
|
||||
Cursor::Levitating(point) => {
|
||||
Cursor::Levitating(point + translation)
|
||||
}
|
||||
Cursor::Unavailable => Cursor::Unavailable,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl std::ops::Mul<Transformation> for Cursor {
|
||||
type Output = Self;
|
||||
|
||||
|
|
|
|||
|
|
@ -748,28 +748,21 @@ where
|
|||
Event::Mouse(mouse::Event::WheelScrolled { .. })
|
||||
)
|
||||
{
|
||||
let translation =
|
||||
state.translation(self.direction, bounds, content_bounds);
|
||||
|
||||
let cursor = match cursor_over_scrollable {
|
||||
Some(cursor_position)
|
||||
if !(mouse_over_x_scrollbar
|
||||
|| mouse_over_y_scrollbar) =>
|
||||
{
|
||||
mouse::Cursor::Available(
|
||||
cursor_position
|
||||
+ state.translation(
|
||||
self.direction,
|
||||
bounds,
|
||||
content_bounds,
|
||||
),
|
||||
)
|
||||
mouse::Cursor::Available(cursor_position + translation)
|
||||
}
|
||||
_ => cursor.levitate(),
|
||||
_ => cursor.levitate() + translation,
|
||||
};
|
||||
|
||||
let had_input_method = shell.input_method().is_enabled();
|
||||
|
||||
let translation =
|
||||
state.translation(self.direction, bounds, content_bounds);
|
||||
|
||||
self.content.as_widget_mut().update(
|
||||
&mut tree.children[0],
|
||||
event,
|
||||
|
|
@ -1191,7 +1184,7 @@ where
|
|||
{
|
||||
mouse::Cursor::Available(cursor_position + translation)
|
||||
}
|
||||
_ => cursor.levitate(),
|
||||
_ => cursor.levitate() + translation,
|
||||
};
|
||||
|
||||
self.content.as_widget().mouse_interaction(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue