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 {
|
impl std::ops::Mul<Transformation> for Cursor {
|
||||||
type Output = Self;
|
type Output = Self;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -748,28 +748,21 @@ where
|
||||||
Event::Mouse(mouse::Event::WheelScrolled { .. })
|
Event::Mouse(mouse::Event::WheelScrolled { .. })
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
let translation =
|
||||||
|
state.translation(self.direction, bounds, content_bounds);
|
||||||
|
|
||||||
let cursor = match cursor_over_scrollable {
|
let cursor = match cursor_over_scrollable {
|
||||||
Some(cursor_position)
|
Some(cursor_position)
|
||||||
if !(mouse_over_x_scrollbar
|
if !(mouse_over_x_scrollbar
|
||||||
|| mouse_over_y_scrollbar) =>
|
|| mouse_over_y_scrollbar) =>
|
||||||
{
|
{
|
||||||
mouse::Cursor::Available(
|
mouse::Cursor::Available(cursor_position + translation)
|
||||||
cursor_position
|
|
||||||
+ state.translation(
|
|
||||||
self.direction,
|
|
||||||
bounds,
|
|
||||||
content_bounds,
|
|
||||||
),
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
_ => cursor.levitate(),
|
_ => cursor.levitate() + translation,
|
||||||
};
|
};
|
||||||
|
|
||||||
let had_input_method = shell.input_method().is_enabled();
|
let had_input_method = shell.input_method().is_enabled();
|
||||||
|
|
||||||
let translation =
|
|
||||||
state.translation(self.direction, bounds, content_bounds);
|
|
||||||
|
|
||||||
self.content.as_widget_mut().update(
|
self.content.as_widget_mut().update(
|
||||||
&mut tree.children[0],
|
&mut tree.children[0],
|
||||||
event,
|
event,
|
||||||
|
|
@ -1191,7 +1184,7 @@ where
|
||||||
{
|
{
|
||||||
mouse::Cursor::Available(cursor_position + translation)
|
mouse::Cursor::Available(cursor_position + translation)
|
||||||
}
|
}
|
||||||
_ => cursor.levitate(),
|
_ => cursor.levitate() + translation,
|
||||||
};
|
};
|
||||||
|
|
||||||
self.content.as_widget().mouse_interaction(
|
self.content.as_widget().mouse_interaction(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue