mirror of
https://github.com/zed-industries/zed.git
synced 2025-02-06 02:37:21 +00:00
Don't dispatch events down the tree if they were handled by mouse region
This commit is contained in:
parent
1d7fc12229
commit
7c7917494c
1 changed files with 9 additions and 1 deletions
|
@ -320,8 +320,10 @@ impl Presenter {
|
|||
}
|
||||
|
||||
let mut event_cx = self.build_event_context(cx);
|
||||
let mut handled = false;
|
||||
for unhovered_region in unhovered_regions {
|
||||
if let Some(hover_callback) = unhovered_region.hover {
|
||||
handled = true;
|
||||
event_cx.with_current_view(unhovered_region.view_id, |event_cx| {
|
||||
hover_callback(false, event_cx);
|
||||
})
|
||||
|
@ -330,6 +332,7 @@ impl Presenter {
|
|||
|
||||
for hovered_region in hovered_regions {
|
||||
if let Some(hover_callback) = hovered_region.hover {
|
||||
handled = true;
|
||||
event_cx.with_current_view(hovered_region.view_id, |event_cx| {
|
||||
hover_callback(true, event_cx);
|
||||
})
|
||||
|
@ -338,6 +341,7 @@ impl Presenter {
|
|||
|
||||
if let Some((clicked_region, position, click_count)) = clicked_region {
|
||||
if let Some(click_callback) = clicked_region.click {
|
||||
handled = true;
|
||||
event_cx.with_current_view(clicked_region.view_id, |event_cx| {
|
||||
click_callback(position, click_count, event_cx);
|
||||
})
|
||||
|
@ -346,6 +350,7 @@ impl Presenter {
|
|||
|
||||
if let Some((right_clicked_region, position, click_count)) = right_clicked_region {
|
||||
if let Some(right_click_callback) = right_clicked_region.right_click {
|
||||
handled = true;
|
||||
event_cx.with_current_view(right_clicked_region.view_id, |event_cx| {
|
||||
right_click_callback(position, click_count, event_cx);
|
||||
})
|
||||
|
@ -354,13 +359,16 @@ impl Presenter {
|
|||
|
||||
if let Some((dragged_region, delta)) = dragged_region {
|
||||
if let Some(drag_callback) = dragged_region.drag {
|
||||
handled = true;
|
||||
event_cx.with_current_view(dragged_region.view_id, |event_cx| {
|
||||
drag_callback(delta, event_cx);
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
event_cx.dispatch_event(root_view_id, &event);
|
||||
if !handled {
|
||||
event_cx.dispatch_event(root_view_id, &event);
|
||||
}
|
||||
|
||||
invalidated_views.extend(event_cx.invalidated_views);
|
||||
let dispatch_directives = event_cx.dispatched_actions;
|
||||
|
|
Loading…
Reference in a new issue