Skip to content

Commit f27f917

Browse files
committed
Merge pull request #107955 from lodetrick/mouse-signals
Fix `mouse_entered` and `mouse_exited` Signals being emitted too early
2 parents 5365372 + c03a7b7 commit f27f917

File tree

2 files changed

+4
-8
lines changed

2 files changed

+4
-8
lines changed

scene/gui/control.cpp

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3901,14 +3901,6 @@ void Control::_notification(int p_notification) {
39013901
RenderingServer::get_singleton()->canvas_item_set_clip(get_canvas_item(), data.clip_contents);
39023902
} break;
39033903

3904-
case NOTIFICATION_MOUSE_ENTER: {
3905-
emit_signal(SceneStringName(mouse_entered));
3906-
} break;
3907-
3908-
case NOTIFICATION_MOUSE_EXIT: {
3909-
emit_signal(SceneStringName(mouse_exited));
3910-
} break;
3911-
39123904
case NOTIFICATION_FOCUS_ENTER: {
39133905
emit_signal(SceneStringName(focus_entered));
39143906
queue_redraw();

scene/main/viewport.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2617,6 +2617,7 @@ void Viewport::_gui_update_mouse_over() {
26172617
// Send Mouse Exit notifications.
26182618
for (int exit_control_index : needs_exit) {
26192619
gui.mouse_over_hierarchy[exit_control_index]->notification(Control::NOTIFICATION_MOUSE_EXIT);
2620+
gui.mouse_over_hierarchy[exit_control_index]->emit_signal(SceneStringName(mouse_exited));
26202621
}
26212622

26222623
// Update the mouse over hierarchy.
@@ -2628,6 +2629,7 @@ void Viewport::_gui_update_mouse_over() {
26282629
// Send Mouse Enter notifications.
26292630
for (int i = needs_enter.size() - 1; i >= 0; i--) {
26302631
needs_enter[i]->notification(Control::NOTIFICATION_MOUSE_ENTER);
2632+
needs_enter[i]->emit_signal(SceneStringName(mouse_entered));
26312633
}
26322634

26332635
gui.sending_mouse_enter_exit_notifications = false;
@@ -3299,6 +3301,7 @@ void Viewport::_update_mouse_over(Vector2 p_pos) {
32993301
for (int i = over_ancestors.size() - 1; i >= 0; i--) {
33003302
gui.mouse_over_hierarchy.push_back(over_ancestors[i]);
33013303
over_ancestors[i]->notification(Control::NOTIFICATION_MOUSE_ENTER);
3304+
over_ancestors[i]->emit_signal(SceneStringName(mouse_entered));
33023305
}
33033306

33043307
// Send Mouse Enter Self notification.
@@ -3390,6 +3393,7 @@ void Viewport::_drop_mouse_over(Control *p_until_control) {
33903393
for (int i = gui.mouse_over_hierarchy.size() - 1; i >= notification_until; i--) {
33913394
if (gui.mouse_over_hierarchy[i]->is_inside_tree()) {
33923395
gui.mouse_over_hierarchy[i]->notification(Control::NOTIFICATION_MOUSE_EXIT);
3396+
gui.mouse_over_hierarchy[i]->emit_signal(SceneStringName(mouse_exited));
33933397
}
33943398
}
33953399
gui.mouse_over_hierarchy.resize(notification_until);

0 commit comments

Comments
 (0)