fix(indev): check for NULL last and hovered objects before sending event (#10165)

This commit is contained in:
André Costa
2026-05-22 08:26:58 +02:00
committed by GitHub
parent bcfced2fda
commit a09ab51292
+17 -10
View File
@@ -1456,15 +1456,20 @@ static void indev_proc_release(lv_indev_t * indev)
lv_obj_t ** last = &indev->pointer.last_hovered;
lv_obj_t * hovered = pointer_search_obj(lv_display_get_default(), &indev->pointer.act_point);
if(*last != hovered) {
lv_obj_send_event(hovered, LV_EVENT_HOVER_OVER, indev);
if(indev_reset_check(indev)) return;
lv_indev_send_event(indev, LV_EVENT_HOVER_OVER, hovered);
if(indev_reset_check(indev)) return;
lv_obj_send_event(*last, LV_EVENT_HOVER_LEAVE, indev);
if(indev_reset_check(indev)) return;
lv_indev_send_event(indev, LV_EVENT_HOVER_LEAVE, *last);
if(indev_reset_check(indev)) return;
if(hovered) {
lv_obj_send_event(hovered, LV_EVENT_HOVER_OVER, indev);
if(indev_reset_check(indev)) return;
lv_indev_send_event(indev, LV_EVENT_HOVER_OVER, hovered);
if(indev_reset_check(indev)) return;
}
if(*last) {
lv_obj_send_event(*last, LV_EVENT_HOVER_LEAVE, indev);
if(indev_reset_check(indev)) return;
lv_indev_send_event(indev, LV_EVENT_HOVER_LEAVE, *last);
if(indev_reset_check(indev)) return;
}
*last = hovered;
}
}
@@ -1728,8 +1733,10 @@ static void indev_click_focus(lv_indev_t * indev)
/*The object are not in group*/
else {
if(indev->pointer.last_pressed != indev_obj_act) {
lv_obj_send_event(indev->pointer.last_pressed, LV_EVENT_DEFOCUSED, indev_act);
if(indev_reset_check(indev)) return;
if(indev->pointer.last_pressed) {
lv_obj_send_event(indev->pointer.last_pressed, LV_EVENT_DEFOCUSED, indev_act);
if(indev_reset_check(indev)) return;
}
lv_obj_send_event(indev_obj_act, LV_EVENT_FOCUSED, indev_act);
if(indev_reset_check(indev)) return;