浏览代码

LibWeb: Do not handle mouse events on disabled checkboxes

redoste 4 年之前
父节点
当前提交
ad031ec5d7
共有 1 个文件被更改,包括 3 次插入3 次删除
  1. 3 3
      Libraries/LibWeb/Layout/LayoutCheckBox.cpp

+ 3 - 3
Libraries/LibWeb/Layout/LayoutCheckBox.cpp

@@ -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);