Explorar el Código

LibWeb: Allow HTMLElement with contenteditable=true to be focusable

Aliaksandr Kalenik hace 1 año
padre
commit
05d5e11966

+ 1 - 0
Tests/LibWeb/Text/expected/focus-contenteditable.txt

@@ -0,0 +1 @@
+  contenteditable is focused

+ 18 - 0
Tests/LibWeb/Text/input/focus-contenteditable.html

@@ -0,0 +1,18 @@
+<script src="include.js"></script>
+<style>
+    #editable {
+        border: 1px solid black;
+        width: 100px;
+        height: 100px;
+    }
+</style>
+<div id="editable" contenteditable="true"></div>
+<script>
+    asyncTest((done) => {
+        document.getElementById("editable").addEventListener("focus", () => {
+            println("contenteditable is focused");
+            done();
+        });
+        internals.click(50, 50);
+    });
+</script>

+ 5 - 0
Userland/Libraries/LibWeb/HTML/HTMLElement.cpp

@@ -93,6 +93,11 @@ bool HTMLElement::is_editable() const
     }
 }
 
+bool HTMLElement::is_focusable() const
+{
+    return m_content_editable_state == ContentEditableState::True;
+}
+
 StringView HTMLElement::content_editable() const
 {
     switch (m_content_editable_state) {

+ 1 - 0
Userland/Libraries/LibWeb/HTML/HTMLElement.h

@@ -34,6 +34,7 @@ public:
     void set_dir(String const&);
 
     virtual bool is_editable() const final;
+    virtual bool is_focusable() const override;
     StringView content_editable() const;
     WebIDL::ExceptionOr<void> set_content_editable(StringView);