Browse Source

LibWeb: Don't create HTMLInputElement's UA shadow tree for buttons

We don't need an internal editable text node inside buttons. :^)
Andreas Kling 3 năm trước cách đây
mục cha
commit
06ccc45157
1 tập tin đã thay đổi với 13 bổ sung1 xóa
  1. 13 1
      Userland/Libraries/LibWeb/HTML/HTMLInputElement.cpp

+ 13 - 1
Userland/Libraries/LibWeb/HTML/HTMLInputElement.cpp

@@ -159,7 +159,19 @@ void HTMLInputElement::create_shadow_tree_if_needed()
     if (shadow_root())
         return;
 
-    // FIXME: This assumes that we want a text box. Is that always true?
+    // FIXME: This could be better factored. Everything except the below types becomes a text input.
+    switch (type_state()) {
+    case TypeAttributeState::RadioButton:
+    case TypeAttributeState::Checkbox:
+    case TypeAttributeState::Button:
+    case TypeAttributeState::SubmitButton:
+    case TypeAttributeState::ResetButton:
+    case TypeAttributeState::ImageButton:
+        return;
+    default:
+        break;
+    }
+
     auto shadow_root = adopt_ref(*new DOM::ShadowRoot(document(), *this));
     auto initial_value = attribute(HTML::AttributeNames::value);
     if (initial_value.is_null())