From 8743ea31498b8903dd7355a6be5c6fea4d22f438 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Wed, 10 Feb 2021 18:32:16 +0100 Subject: [PATCH] LibWeb: Relayout document on CharacterData data change This can definitely be optimized to avoid full relayouts in many situations, but for now let's just go for correctness. --- Userland/Libraries/LibWeb/DOM/CharacterData.cpp | 10 ++++++++++ Userland/Libraries/LibWeb/DOM/CharacterData.h | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/Userland/Libraries/LibWeb/DOM/CharacterData.cpp b/Userland/Libraries/LibWeb/DOM/CharacterData.cpp index 60fb60ef7fc..6a60493537d 100644 --- a/Userland/Libraries/LibWeb/DOM/CharacterData.cpp +++ b/Userland/Libraries/LibWeb/DOM/CharacterData.cpp @@ -25,6 +25,7 @@ */ #include +#include namespace Web::DOM { @@ -38,4 +39,13 @@ CharacterData::~CharacterData() { } +void CharacterData::set_data(String data) +{ + if (m_data == data) + return; + m_data = move(data); + // FIXME: This is definitely too aggressive. + document().schedule_forced_layout(); +} + } diff --git a/Userland/Libraries/LibWeb/DOM/CharacterData.h b/Userland/Libraries/LibWeb/DOM/CharacterData.h index de09340e413..a061d6705ae 100644 --- a/Userland/Libraries/LibWeb/DOM/CharacterData.h +++ b/Userland/Libraries/LibWeb/DOM/CharacterData.h @@ -41,7 +41,7 @@ public: virtual ~CharacterData() override; const String& data() const { return m_data; } - void set_data(const String& data) { m_data = data; } + void set_data(String); unsigned length() const { return m_data.length(); }