mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 18:28:12 +00:00
LibWeb: Do not issue change
event for every update of color input
Per spec, the change event shall only be issued once the change is finally committed by the user, IE by closing the color picker window.
This commit is contained in:
parent
bad7f0091f
commit
3e3a200eee
3 changed files with 14 additions and 11 deletions
|
@ -348,7 +348,7 @@ void HTMLInputElement::did_edit_text_node(Badge<BrowsingContext>)
|
|||
});
|
||||
}
|
||||
|
||||
void HTMLInputElement::did_pick_color(Optional<Color> picked_color)
|
||||
void HTMLInputElement::did_pick_color(Optional<Color> picked_color, ColorPickerUpdateState state)
|
||||
{
|
||||
// https://html.spec.whatwg.org/multipage/input.html#common-input-element-events
|
||||
// For input elements without a defined input activation behavior, but to which these events apply
|
||||
|
@ -371,6 +371,7 @@ void HTMLInputElement::did_pick_color(Optional<Color> picked_color)
|
|||
});
|
||||
|
||||
// and any time the user commits the change, the user agent must queue an element task on the user interaction task source
|
||||
if (state == ColorPickerUpdateState::Closed) {
|
||||
queue_an_element_task(HTML::Task::Source::UserInteraction, [this] {
|
||||
// given the input element
|
||||
// FIXME: to set its user interacted to true
|
||||
|
@ -381,6 +382,7 @@ void HTMLInputElement::did_pick_color(Optional<Color> picked_color)
|
|||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void HTMLInputElement::did_select_files(Span<SelectedFile> selected_files)
|
||||
{
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
#include <LibWeb/DOM/DocumentLoadEventDelayer.h>
|
||||
#include <LibWeb/DOM/Text.h>
|
||||
#include <LibWeb/FileAPI/FileList.h>
|
||||
#include <LibWeb/HTML/ColorPickerUpdateState.h>
|
||||
#include <LibWeb/HTML/FormAssociatedElement.h>
|
||||
#include <LibWeb/HTML/HTMLElement.h>
|
||||
#include <LibWeb/Layout/ImageProvider.h>
|
||||
|
@ -92,7 +93,7 @@ public:
|
|||
|
||||
bool is_mutable() const { return m_is_mutable; }
|
||||
|
||||
void did_pick_color(Optional<Color> picked_color);
|
||||
void did_pick_color(Optional<Color> picked_color, ColorPickerUpdateState state);
|
||||
|
||||
void did_select_files(Span<SelectedFile> selected_files);
|
||||
|
||||
|
|
|
@ -337,7 +337,7 @@ void Page::color_picker_update(Optional<Color> picked_color, HTML::ColorPickerUp
|
|||
|
||||
if (m_pending_non_blocking_dialog_target) {
|
||||
auto& input_element = verify_cast<HTML::HTMLInputElement>(*m_pending_non_blocking_dialog_target);
|
||||
input_element.did_pick_color(move(picked_color));
|
||||
input_element.did_pick_color(move(picked_color), state);
|
||||
if (state == HTML::ColorPickerUpdateState::Closed)
|
||||
m_pending_non_blocking_dialog_target.clear();
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue