game: redraw HTML widget when mouse action needs it

This commit is contained in:
Crypto City 2023-05-03 07:49:40 +00:00
parent 494d339105
commit 6612aa6079

View File

@ -584,24 +584,30 @@ PreferredSize UITBHTMLView::OnCalculatePreferredContentSize(const SizeConstraint
bool UITBHTMLView::OnEvent(const TBWidgetEvent &ev)
{
bool invalidate = false;
litehtml::position::vector redraw_boxes;
switch (ev.type)
{
case EVENT_TYPE_POINTER_DOWN:
if (document)
document->on_lbutton_down(ev.target_x, ev.target_y, ev.target_x, ev.target_y, redraw_boxes);
invalidate = document->on_lbutton_down(ev.target_x, ev.target_y, ev.target_x, ev.target_y, redraw_boxes);
break;
case EVENT_TYPE_POINTER_UP:
if (document)
document->on_lbutton_up(ev.target_x, ev.target_y, ev.target_x, ev.target_y, redraw_boxes);
invalidate = document->on_lbutton_up(ev.target_x, ev.target_y, ev.target_x, ev.target_y, redraw_boxes);
break;
case EVENT_TYPE_POINTER_MOVE:
if (document)
document->on_mouse_over(ev.target_x, ev.target_y, ev.target_x, ev.target_y, redraw_boxes);
invalidate = document->on_mouse_over(ev.target_x, ev.target_y, ev.target_x, ev.target_y, redraw_boxes);
break;
default:
break;
}
if (invalidate)
{
render_width = -1;
InvalidateLayout(TBWidget::INVALIDATE_LAYOUT_RECURSIVE);
}
return TBWidget::OnEvent(ev);
}