mirror of
https://github.com/servo/servo.git
synced 2025-08-03 04:30:10 +01:00
Fully support <input type=color>
(#36992)
This change adds a shadow-tree widget for `<input type=color>` elements. It also involves some changes to the way layout interacts with the DOM, because currently all `input` and `textarea` elements are rendered as plain text and their descendants are ignored. This obviously doesn't work for `<input type={color, date, range, etc}>`.  <details><summary>HTML used for the screenshot above</summary> ```html <input type=color> ``` </details> Testing: I doubt that this affects WPT tests, because the appearance and behaviour of the widget is almost entirely unspecified. --------- Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
This commit is contained in:
parent
f9382fcaa0
commit
b100a98e1d
14 changed files with 469 additions and 100 deletions
|
@ -364,16 +364,8 @@ pub enum EmbedderMsg {
|
|||
ShutdownComplete,
|
||||
/// Request to display a notification.
|
||||
ShowNotification(Option<WebViewId>, Notification),
|
||||
/// Indicates that the user has activated a `<select>` element.
|
||||
///
|
||||
/// The embedder should respond with the new state of the `<select>` element.
|
||||
ShowSelectElementMenu(
|
||||
WebViewId,
|
||||
Vec<SelectElementOptionOrOptgroup>,
|
||||
Option<usize>,
|
||||
DeviceIntRect,
|
||||
IpcSender<Option<usize>>,
|
||||
),
|
||||
/// Request to display a form control to the embedder.
|
||||
ShowFormControl(WebViewId, DeviceIntRect, FormControl),
|
||||
/// Inform the embedding layer that a JavaScript evaluation has
|
||||
/// finished with the given result.
|
||||
FinishJavaScriptEvaluation(
|
||||
|
@ -389,6 +381,18 @@ impl Debug for EmbedderMsg {
|
|||
}
|
||||
}
|
||||
|
||||
#[derive(Deserialize, Serialize)]
|
||||
pub enum FormControl {
|
||||
/// Indicates that the user has activated a `<select>` element.
|
||||
SelectElement(
|
||||
Vec<SelectElementOptionOrOptgroup>,
|
||||
Option<usize>,
|
||||
IpcSender<Option<usize>>,
|
||||
),
|
||||
/// Indicates that the user has activated a `<input type=color>` element.
|
||||
ColorPicker(RgbColor, IpcSender<Option<RgbColor>>),
|
||||
}
|
||||
|
||||
/// Filter for file selection;
|
||||
/// the `String` content is expected to be extension (e.g, "doc", without the prefixing ".")
|
||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||
|
@ -921,3 +925,10 @@ pub enum JavaScriptEvaluationError {
|
|||
/// value into a [`JSValue`].
|
||||
SerializationError,
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy, Debug, Deserialize, Serialize)]
|
||||
pub struct RgbColor {
|
||||
pub red: u8,
|
||||
pub green: u8,
|
||||
pub blue: u8,
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue