diff --git a/Userland/Libraries/LibWeb/HTML/HTMLInputElement.cpp b/Userland/Libraries/LibWeb/HTML/HTMLInputElement.cpp
index 5b6d26ef79e..38a5c614eba 100644
--- a/Userland/Libraries/LibWeb/HTML/HTMLInputElement.cpp
+++ b/Userland/Libraries/LibWeb/HTML/HTMLInputElement.cpp
@@ -80,8 +80,9 @@ void HTMLInputElement::visit_edges(Cell::Visitor& visitor)
visitor.visit(m_file_label);
visitor.visit(m_legacy_pre_activation_behavior_checked_element_in_group);
visitor.visit(m_selected_files);
- visitor.visit(m_slider_thumb);
+ visitor.visit(m_slider_runnable_track);
visitor.visit(m_slider_progress_element);
+ visitor.visit(m_slider_thumb);
visitor.visit(m_resource_request);
}
@@ -995,9 +996,9 @@ void HTMLInputElement::create_range_input_shadow_tree()
auto shadow_root = heap().allocate(realm(), document(), *this, Bindings::ShadowRootMode::Closed);
set_shadow_root(shadow_root);
- auto slider_runnable_track = MUST(DOM::create_element(document(), HTML::TagNames::div, Namespace::HTML));
- slider_runnable_track->set_use_pseudo_element(CSS::Selector::PseudoElement::Type::SliderRunnableTrack);
- MUST(shadow_root->append_child(slider_runnable_track));
+ m_slider_runnable_track = MUST(DOM::create_element(document(), HTML::TagNames::div, Namespace::HTML));
+ m_slider_runnable_track->set_use_pseudo_element(CSS::Selector::PseudoElement::Type::SliderRunnableTrack);
+ MUST(shadow_root->append_child(*m_slider_runnable_track));
m_slider_progress_element = MUST(DOM::create_element(document(), HTML::TagNames::div, Namespace::HTML));
MUST(m_slider_progress_element->set_attribute(HTML::AttributeNames::style, R"~~~(
@@ -1005,11 +1006,12 @@ void HTMLInputElement::create_range_input_shadow_tree()
position: absolute;
height: 100%;
)~~~"_string));
- MUST(slider_runnable_track->append_child(*m_slider_progress_element));
+ MUST(m_slider_runnable_track->append_child(*m_slider_progress_element));
m_slider_thumb = MUST(DOM::create_element(document(), HTML::TagNames::div, Namespace::HTML));
m_slider_thumb->set_use_pseudo_element(CSS::Selector::PseudoElement::Type::SliderThumb);
- MUST(slider_runnable_track->append_child(*m_slider_thumb));
+ MUST(m_slider_runnable_track->append_child(*m_slider_thumb));
+
update_slider_shadow_tree_elements();
auto keydown_callback_function = JS::NativeFunction::create(
@@ -1035,8 +1037,8 @@ void HTMLInputElement::create_range_input_shadow_tree()
auto wheel_callback_function = JS::NativeFunction::create(
realm(), [this](JS::VM& vm) {
- auto deltaY = MUST(vm.argument(0).get(vm, "deltaY")).as_i32();
- if (deltaY > 0) {
+ auto delta_y = MUST(vm.argument(0).get(vm, "deltaY")).as_i32();
+ if (delta_y > 0) {
MUST(step_down());
} else {
MUST(step_up());
@@ -1094,6 +1096,10 @@ void HTMLInputElement::create_range_input_shadow_tree()
void HTMLInputElement::computed_css_values_changed()
{
+ auto appearance = computed_css_values()->appearance();
+ if (!appearance.has_value() || *appearance == CSS::Appearance::None)
+ return;
+
auto palette = document().page().palette();
auto accent_color = palette.color(ColorRole::Accent).to_string();
@@ -1131,11 +1137,11 @@ void HTMLInputElement::update_slider_shadow_tree_elements()
double maximum = *max();
double position = (value - minimum) / (maximum - minimum) * 100;
- if (m_slider_thumb)
- MUST(m_slider_thumb->style_for_bindings()->set_property(CSS::PropertyID::MarginLeft, MUST(String::formatted("{}%", position))));
-
if (m_slider_progress_element)
MUST(m_slider_progress_element->style_for_bindings()->set_property(CSS::PropertyID::Width, MUST(String::formatted("{}%", position))));
+
+ if (m_slider_thumb)
+ MUST(m_slider_thumb->style_for_bindings()->set_property(CSS::PropertyID::MarginLeft, MUST(String::formatted("{}%", position))));
}
void HTMLInputElement::did_receive_focus()
diff --git a/Userland/Libraries/LibWeb/HTML/HTMLInputElement.h b/Userland/Libraries/LibWeb/HTML/HTMLInputElement.h
index f028a5610a8..bc2ea4d7ad8 100644
--- a/Userland/Libraries/LibWeb/HTML/HTMLInputElement.h
+++ b/Userland/Libraries/LibWeb/HTML/HTMLInputElement.h
@@ -305,8 +305,9 @@ private:
JS::GCPtr m_file_label;
void update_slider_shadow_tree_elements();
- JS::GCPtr m_slider_thumb;
+ JS::GCPtr m_slider_runnable_track;
JS::GCPtr m_slider_progress_element;
+ JS::GCPtr m_slider_thumb;
JS::GCPtr image_data() const;
JS::GCPtr m_resource_request;