mirror of
https://github.com/servo/servo.git
synced 2025-08-06 22:15:33 +01:00
script: Pass more information to the MouseEvent
constructor (#37672)
- Instead of eagerly computing `pageX` and `pageY`, collect the offset from the content's initial containing block in the compositor and pass that information through to `MouseEvent`. This prevents a layout flush that was happening when eagerly trying to fetch `Document` scroll offsets. - Pass keyboard modifiers properly to `MouseEvent`. - Now all this information is stored and passed as `Point2D` (typed) and `Modifiers` which greatly reduces the amount of arguments that need to be passed around. Testing: It is difficult to test input events as they require WebDriver which isn't completely working yet. I have manually run Speedometer 2.1 and I have verified that this fixes the regression from #37601. Fixes: #37601. Signed-off-by: Martin Robinson <mrobinson@igalia.com>
This commit is contained in:
parent
50cf01cf3d
commit
0346a62214
11 changed files with 374 additions and 369 deletions
|
@ -2853,8 +2853,11 @@ impl VirtualMethods for HTMLInputElement {
|
|||
// now.
|
||||
if let Some(point_in_target) = mouse_event.point_in_target() {
|
||||
let window = self.owner_window();
|
||||
let index =
|
||||
window.text_index_query(self.upcast::<Node>(), point_in_target, can_gc);
|
||||
let index = window.text_index_query(
|
||||
self.upcast::<Node>(),
|
||||
point_in_target.to_untyped(),
|
||||
can_gc,
|
||||
);
|
||||
// Position the caret at the click position or at the end of the current
|
||||
// value.
|
||||
let edit_point_index = match index {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue