diff options
author | Martin Robinson <mrobinson@igalia.com> | 2024-12-13 14:25:47 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-12-13 13:25:47 +0000 |
commit | 471d3572b77be4df31ce5d6a20d522eb9ffdbe7f (patch) | |
tree | 4bffa0479bbf86a153d57ff0d921bcd78d8efdae /components/script/dom/activation.rs | |
parent | 682eba9f7425fb4478207372f5f9e550b467bf7b (diff) | |
download | servo-471d3572b77be4df31ce5d6a20d522eb9ffdbe7f.tar.gz servo-471d3572b77be4df31ce5d6a20d522eb9ffdbe7f.zip |
script: No longer do explicit reflows for display (#34599)
These all happen now in *update the rendering*, typically after the
message that triggered this code is processed, though in two cases
reflow needs to be triggered explicitly. This makes `ReflowReason`
redundant though perhaps `ReflowCondition` can be expanded later to give
more insight into why the page is dirty.
- Handling of the "reflow timer" concept has been explained a bit more via
data structures and rustdoc comments.
- Theme changes are cleaned up a little to simplify what happens during
reflow and to avoid unecessary reflows when the theme doesn't change.
Notably, layout queries and scrolling still trigger normal reflows and
don't update the rendering. This needs more investigation as it's
unclear to me currently whether or not they should update the rendering
and simply delay event dispatch or only reflow.
In general, this is a simplfication of the code.
Fixes #31871.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Diffstat (limited to 'components/script/dom/activation.rs')
-rw-r--r-- | components/script/dom/activation.rs | 18 |
1 files changed, 0 insertions, 18 deletions
diff --git a/components/script/dom/activation.rs b/components/script/dom/activation.rs index 8f325fb4e89..2d78f505214 100644 --- a/components/script/dom/activation.rs +++ b/components/script/dom/activation.rs @@ -2,14 +2,10 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -use script_layout_interface::ReflowGoal; - use crate::dom::element::Element; use crate::dom::event::Event; use crate::dom::eventtarget::EventTarget; use crate::dom::htmlinputelement::InputActivationState; -use crate::dom::node::window_from_node; -use crate::dom::window::ReflowReason; use crate::script_runtime::CanGc; /// Trait for elements with defined activation behavior @@ -35,23 +31,9 @@ pub trait Activatable { // https://html.spec.whatwg.org/multipage/#concept-selector-active fn enter_formal_activation_state(&self) { self.as_element().set_active_state(true); - - let win = window_from_node(self.as_element()); - win.reflow( - ReflowGoal::Full, - ReflowReason::ElementStateChanged, - CanGc::note(), - ); } fn exit_formal_activation_state(&self) { self.as_element().set_active_state(false); - - let win = window_from_node(self.as_element()); - win.reflow( - ReflowGoal::Full, - ReflowReason::ElementStateChanged, - CanGc::note(), - ); } } |