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;