wip new mouse region events
This commit is contained in:
parent
4b945f5694
commit
53add253b6
2 changed files with 30 additions and 0 deletions
|
@ -273,10 +273,12 @@ impl HandlerSet {
|
||||||
pub enum MouseRegionEvent {
|
pub enum MouseRegionEvent {
|
||||||
Move(MouseMovedEvent),
|
Move(MouseMovedEvent),
|
||||||
Drag(Vector2F, MouseMovedEvent),
|
Drag(Vector2F, MouseMovedEvent),
|
||||||
|
DragOver(Vector2F, MouseMovedEvent),
|
||||||
Hover(bool, MouseMovedEvent),
|
Hover(bool, MouseMovedEvent),
|
||||||
Down(MouseButtonEvent),
|
Down(MouseButtonEvent),
|
||||||
Up(MouseButtonEvent),
|
Up(MouseButtonEvent),
|
||||||
Click(MouseButtonEvent),
|
Click(MouseButtonEvent),
|
||||||
|
UpOut(MouseButtonEvent),
|
||||||
DownOut(MouseButtonEvent),
|
DownOut(MouseButtonEvent),
|
||||||
ScrollWheel(ScrollWheelEvent),
|
ScrollWheel(ScrollWheelEvent),
|
||||||
}
|
}
|
||||||
|
@ -291,6 +293,12 @@ impl MouseRegionEvent {
|
||||||
Default::default(),
|
Default::default(),
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
pub fn drag_over_disc() -> Discriminant<MouseRegionEvent> {
|
||||||
|
std::mem::discriminant(&MouseRegionEvent::DragOver(
|
||||||
|
Default::default(),
|
||||||
|
Default::default(),
|
||||||
|
))
|
||||||
|
}
|
||||||
pub fn hover_disc() -> Discriminant<MouseRegionEvent> {
|
pub fn hover_disc() -> Discriminant<MouseRegionEvent> {
|
||||||
std::mem::discriminant(&MouseRegionEvent::Hover(
|
std::mem::discriminant(&MouseRegionEvent::Hover(
|
||||||
Default::default(),
|
Default::default(),
|
||||||
|
@ -303,6 +311,9 @@ impl MouseRegionEvent {
|
||||||
pub fn up_disc() -> Discriminant<MouseRegionEvent> {
|
pub fn up_disc() -> Discriminant<MouseRegionEvent> {
|
||||||
std::mem::discriminant(&MouseRegionEvent::Up(Default::default()))
|
std::mem::discriminant(&MouseRegionEvent::Up(Default::default()))
|
||||||
}
|
}
|
||||||
|
pub fn up_out_disc() -> Discriminant<MouseRegionEvent> {
|
||||||
|
std::mem::discriminant(&MouseRegionEvent::UpOut(Default::default()))
|
||||||
|
}
|
||||||
pub fn click_disc() -> Discriminant<MouseRegionEvent> {
|
pub fn click_disc() -> Discriminant<MouseRegionEvent> {
|
||||||
std::mem::discriminant(&MouseRegionEvent::Click(Default::default()))
|
std::mem::discriminant(&MouseRegionEvent::Click(Default::default()))
|
||||||
}
|
}
|
||||||
|
@ -319,6 +330,9 @@ impl MouseRegionEvent {
|
||||||
MouseRegionEvent::Drag(_, MouseMovedEvent { pressed_button, .. }) => {
|
MouseRegionEvent::Drag(_, MouseMovedEvent { pressed_button, .. }) => {
|
||||||
(Self::drag_disc(), *pressed_button)
|
(Self::drag_disc(), *pressed_button)
|
||||||
}
|
}
|
||||||
|
MouseRegionEvent::DragOver(_, MouseMovedEvent { pressed_button, .. }) => {
|
||||||
|
(Self::drag_over_disc(), *pressed_button)
|
||||||
|
}
|
||||||
MouseRegionEvent::Hover(_, _) => (Self::hover_disc(), None),
|
MouseRegionEvent::Hover(_, _) => (Self::hover_disc(), None),
|
||||||
MouseRegionEvent::Down(MouseButtonEvent { button, .. }) => {
|
MouseRegionEvent::Down(MouseButtonEvent { button, .. }) => {
|
||||||
(Self::down_disc(), Some(*button))
|
(Self::down_disc(), Some(*button))
|
||||||
|
@ -329,6 +343,9 @@ impl MouseRegionEvent {
|
||||||
MouseRegionEvent::Click(MouseButtonEvent { button, .. }) => {
|
MouseRegionEvent::Click(MouseButtonEvent { button, .. }) => {
|
||||||
(Self::click_disc(), Some(*button))
|
(Self::click_disc(), Some(*button))
|
||||||
}
|
}
|
||||||
|
MouseRegionEvent::UpOut(MouseButtonEvent { button, .. }) => {
|
||||||
|
(Self::up_out_disc(), Some(*button))
|
||||||
|
}
|
||||||
MouseRegionEvent::DownOut(MouseButtonEvent { button, .. }) => {
|
MouseRegionEvent::DownOut(MouseButtonEvent { button, .. }) => {
|
||||||
(Self::down_out_disc(), Some(*button))
|
(Self::down_out_disc(), Some(*button))
|
||||||
}
|
}
|
||||||
|
|
|
@ -1022,6 +1022,19 @@ impl Pane {
|
||||||
cx.dispatch_action(ActivateItem(ix));
|
cx.dispatch_action(ActivateItem(ix));
|
||||||
})
|
})
|
||||||
.on_click(MouseButton::Middle, close_tab_callback)
|
.on_click(MouseButton::Middle, close_tab_callback)
|
||||||
|
.on_drag(MouseButton::Left, |_, cx| {
|
||||||
|
cx.global::<DragAndDrop>().dragging(some view handle)
|
||||||
|
})
|
||||||
|
.on_mouse_up_out(MouseButton::Left, |_, cx| {
|
||||||
|
cx.global::<DragAndDrop>().stopped_dragging(some view handle)
|
||||||
|
})
|
||||||
|
.on_drag_over(MouseButton::Left, |started, _, cx| {
|
||||||
|
if started {
|
||||||
|
if let Some(tab) = cx.global::<DragAndDrop>().current_dragged::<Tab>() {
|
||||||
|
cx.dispatch_action(ReceivingTab)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
.boxed()
|
.boxed()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue