LibWeb: Do not handle mouse events on disabled checkboxes

This commit is contained in:
redoste 2020-09-12 14:01:21 +02:00 committed by Andreas Kling
parent 8d574c7363
commit ad031ec5d7
Notes: sideshowbarker 2024-07-19 02:43:38 +09:00

View File

@ -65,7 +65,7 @@ void LayoutCheckBox::paint(PaintContext& context, PaintPhase phase)
void LayoutCheckBox::handle_mousedown(Badge<EventHandler>, const Gfx::IntPoint&, unsigned button, unsigned)
{
if (button != GUI::MouseButton::Left)
if (button != GUI::MouseButton::Left || !node().enabled())
return;
m_being_pressed = true;
@ -77,7 +77,7 @@ void LayoutCheckBox::handle_mousedown(Badge<EventHandler>, const Gfx::IntPoint&,
void LayoutCheckBox::handle_mouseup(Badge<EventHandler>, const Gfx::IntPoint& position, unsigned button, unsigned)
{
if (!m_tracking_mouse || button != GUI::MouseButton::Left)
if (!m_tracking_mouse || button != GUI::MouseButton::Left || !node().enabled())
return;
// NOTE: Changing the checked state of the DOM node may run arbitrary JS, which could disappear this node.
@ -94,7 +94,7 @@ void LayoutCheckBox::handle_mouseup(Badge<EventHandler>, const Gfx::IntPoint& po
void LayoutCheckBox::handle_mousemove(Badge<EventHandler>, const Gfx::IntPoint& position, unsigned, unsigned)
{
if (!m_tracking_mouse)
if (!m_tracking_mouse || !node().enabled())
return;
bool is_inside = enclosing_int_rect(absolute_rect()).contains(position);