mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-08-08 17:19:13 +00:00
LibWeb: Expose HTMLElement's content editable state
This commit is contained in:
parent
c9a6bac57f
commit
6a85677f70
Notes:
github-actions[bot]
2024-12-02 23:20:55 +00:00
Author: https://github.com/gmta
Commit: 6a85677f70
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/2697
Reviewed-by: https://github.com/awesomekling
Reviewed-by: https://github.com/tcl3
3 changed files with 13 additions and 8 deletions
|
@ -137,7 +137,7 @@ bool Document::query_command_enabled(FlyString const& command)
|
||||||
// NOTE: Commands can define additional conditions for being enabled, and currently the only condition mentioned in
|
// NOTE: Commands can define additional conditions for being enabled, and currently the only condition mentioned in
|
||||||
// the spec is that certain commands must not be enabled if the editing host is in the plaintext-only state.
|
// the spec is that certain commands must not be enabled if the editing host is in the plaintext-only state.
|
||||||
if (is<HTML::HTMLElement>(start_node_editing_host.ptr())
|
if (is<HTML::HTMLElement>(start_node_editing_host.ptr())
|
||||||
&& static_cast<HTML::HTMLElement&>(*start_node_editing_host).content_editable() == "plaintext-only"sv
|
&& static_cast<HTML::HTMLElement&>(*start_node_editing_host).content_editable_state() == HTML::ContentEditableState::PlaintextOnly
|
||||||
&& command.is_one_of(
|
&& command.is_one_of(
|
||||||
Editing::CommandNames::backColor,
|
Editing::CommandNames::backColor,
|
||||||
Editing::CommandNames::bold,
|
Editing::CommandNames::bold,
|
||||||
|
|
|
@ -819,7 +819,9 @@ bool is_editing_host(GC::Ref<DOM::Node> node)
|
||||||
if (!is<HTML::HTMLElement>(*node))
|
if (!is<HTML::HTMLElement>(*node))
|
||||||
return false;
|
return false;
|
||||||
auto const& html_element = static_cast<HTML::HTMLElement&>(*node);
|
auto const& html_element = static_cast<HTML::HTMLElement&>(*node);
|
||||||
return html_element.content_editable().is_one_of("true"sv, "plaintext-only"sv) || node->document().design_mode_enabled_state();
|
return html_element.content_editable_state() == HTML::ContentEditableState::True
|
||||||
|
|| html_element.content_editable_state() == HTML::ContentEditableState::PlaintextOnly
|
||||||
|
|| node->document().design_mode_enabled_state();
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://w3c.github.io/editing/docs/execCommand/#element-with-inline-contents
|
// https://w3c.github.io/editing/docs/execCommand/#element-with-inline-contents
|
||||||
|
|
|
@ -20,6 +20,14 @@ namespace Web::HTML {
|
||||||
__ENUMERATE_HTML_ELEMENT_DIR_ATTRIBUTE(rtl) \
|
__ENUMERATE_HTML_ELEMENT_DIR_ATTRIBUTE(rtl) \
|
||||||
__ENUMERATE_HTML_ELEMENT_DIR_ATTRIBUTE(auto)
|
__ENUMERATE_HTML_ELEMENT_DIR_ATTRIBUTE(auto)
|
||||||
|
|
||||||
|
// https://html.spec.whatwg.org/#attr-contenteditable
|
||||||
|
enum class ContentEditableState {
|
||||||
|
True,
|
||||||
|
False,
|
||||||
|
PlaintextOnly,
|
||||||
|
Inherit,
|
||||||
|
};
|
||||||
|
|
||||||
class HTMLElement
|
class HTMLElement
|
||||||
: public DOM::Element
|
: public DOM::Element
|
||||||
, public HTML::GlobalEventHandlers
|
, public HTML::GlobalEventHandlers
|
||||||
|
@ -39,6 +47,7 @@ public:
|
||||||
virtual bool is_focusable() const override;
|
virtual bool is_focusable() const override;
|
||||||
bool is_content_editable() const;
|
bool is_content_editable() const;
|
||||||
StringView content_editable() const;
|
StringView content_editable() const;
|
||||||
|
ContentEditableState content_editable_state() const { return m_content_editable_state; }
|
||||||
WebIDL::ExceptionOr<void> set_content_editable(StringView);
|
WebIDL::ExceptionOr<void> set_content_editable(StringView);
|
||||||
|
|
||||||
String inner_text();
|
String inner_text();
|
||||||
|
@ -106,12 +115,6 @@ private:
|
||||||
GC::Ptr<ElementInternals> m_attached_internals;
|
GC::Ptr<ElementInternals> m_attached_internals;
|
||||||
|
|
||||||
// https://html.spec.whatwg.org/#attr-contenteditable
|
// https://html.spec.whatwg.org/#attr-contenteditable
|
||||||
enum class ContentEditableState {
|
|
||||||
True,
|
|
||||||
False,
|
|
||||||
PlaintextOnly,
|
|
||||||
Inherit,
|
|
||||||
};
|
|
||||||
ContentEditableState m_content_editable_state { ContentEditableState::Inherit };
|
ContentEditableState m_content_editable_state { ContentEditableState::Inherit };
|
||||||
|
|
||||||
// https://html.spec.whatwg.org/multipage/interaction.html#click-in-progress-flag
|
// https://html.spec.whatwg.org/multipage/interaction.html#click-in-progress-flag
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue