mirror of
https://github.com/servo/servo.git
synced 2025-08-03 12:40:06 +01:00
Accumulate and invert stacking context transform for hit tests.
This makes hit tests work on stacking contexts with transforms. Ref #6643.
This commit is contained in:
parent
e0bd80f807
commit
ddef25030b
4 changed files with 68 additions and 67 deletions
|
@ -544,8 +544,9 @@ impl StackingContext {
|
|||
point = point - self.bounds.origin;
|
||||
|
||||
debug_assert!(!topmost_only || result.is_empty());
|
||||
let frac_point = self.transform.transform_point(&Point2D::new(point.x.to_f32_px(),
|
||||
point.y.to_f32_px()));
|
||||
let inv_transform = self.transform.invert();
|
||||
let frac_point = inv_transform.transform_point(&Point2D::new(point.x.to_f32_px(),
|
||||
point.y.to_f32_px()));
|
||||
point = Point2D::new(Au::from_f32_px(frac_point.x), Au::from_f32_px(frac_point.y));
|
||||
|
||||
// Iterate through display items in reverse stacking order. Steps here refer to the
|
||||
|
|
44
components/servo/Cargo.lock
generated
44
components/servo/Cargo.lock
generated
|
@ -61,7 +61,7 @@ dependencies = [
|
|||
"core-graphics 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"core-text 0.1.0 (git+https://github.com/servo/core-text-rs)",
|
||||
"egl 0.1.0 (git+https://github.com/servo/rust-egl)",
|
||||
"euclid 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"euclid 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"freetype 0.1.0 (git+https://github.com/servo/rust-freetype)",
|
||||
"freetype-sys 2.4.11 (git+https://github.com/servo/libfreetype2)",
|
||||
"libc 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -93,7 +93,7 @@ dependencies = [
|
|||
"azure 0.1.0 (git+https://github.com/servo/rust-azure)",
|
||||
"canvas_traits 0.0.1",
|
||||
"cssparser 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"euclid 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"euclid 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"gfx_traits 0.0.1",
|
||||
"gleam 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"ipc-channel 0.1.0 (git+https://github.com/pcwalton/ipc-channel)",
|
||||
|
@ -110,7 +110,7 @@ version = "0.0.1"
|
|||
dependencies = [
|
||||
"azure 0.1.0 (git+https://github.com/servo/rust-azure)",
|
||||
"cssparser 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"euclid 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"euclid 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"gfx_traits 0.0.1",
|
||||
"ipc-channel 0.1.0 (git+https://github.com/pcwalton/ipc-channel)",
|
||||
"layers 0.1.0 (git+https://github.com/servo/rust-layers)",
|
||||
|
@ -166,7 +166,7 @@ dependencies = [
|
|||
"core-graphics 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"core-text 0.1.0 (git+https://github.com/servo/core-text-rs)",
|
||||
"devtools_traits 0.0.1",
|
||||
"euclid 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"euclid 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"gfx 0.0.1",
|
||||
"gfx_traits 0.0.1",
|
||||
"gleam 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -352,7 +352,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "euclid"
|
||||
version = "0.1.4"
|
||||
version = "0.1.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"log 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -444,7 +444,7 @@ dependencies = [
|
|||
"core-foundation 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"core-graphics 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"core-text 0.1.0 (git+https://github.com/servo/core-text-rs)",
|
||||
"euclid 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"euclid 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"fnv 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"fontconfig 0.1.0 (git+https://github.com/servo/rust-fontconfig)",
|
||||
"freetype 0.1.0 (git+https://github.com/servo/rust-freetype)",
|
||||
|
@ -546,7 +546,7 @@ dependencies = [
|
|||
"cgl 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"compositing 0.0.1",
|
||||
"egl 0.1.0 (git+https://github.com/servo/rust-egl)",
|
||||
"euclid 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"euclid 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"gleam 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"glutin 0.0.26 (git+https://github.com/servo/glutin?branch=servo)",
|
||||
"layers 0.1.0 (git+https://github.com/servo/rust-layers)",
|
||||
|
@ -646,7 +646,7 @@ source = "git+https://github.com/servo/io-surface-rs#f772aa79f487d1722ec6ad3d3c3
|
|||
dependencies = [
|
||||
"cgl 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"core-foundation 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"euclid 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"euclid 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"gleam 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libc 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
@ -703,7 +703,7 @@ dependencies = [
|
|||
"cgl 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"core-foundation 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"egl 0.1.0 (git+https://github.com/servo/rust-egl)",
|
||||
"euclid 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"euclid 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"gleam 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"glx 0.0.1 (git+https://github.com/servo/rust-glx)",
|
||||
"io-surface 0.1.0 (git+https://github.com/servo/io-surface-rs)",
|
||||
|
@ -725,7 +725,7 @@ dependencies = [
|
|||
"clock_ticks 0.0.6 (git+https://github.com/tomaka/clock_ticks)",
|
||||
"cssparser 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"encoding 0.2.32 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"euclid 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"euclid 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"fnv 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"gfx 0.0.1",
|
||||
"gfx_traits 0.0.1",
|
||||
|
@ -756,7 +756,7 @@ dependencies = [
|
|||
name = "layout_traits"
|
||||
version = "0.0.1"
|
||||
dependencies = [
|
||||
"euclid 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"euclid 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"gfx 0.0.1",
|
||||
"ipc-channel 0.1.0 (git+https://github.com/pcwalton/ipc-channel)",
|
||||
"msg 0.0.1",
|
||||
|
@ -851,7 +851,7 @@ dependencies = [
|
|||
"bitflags 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"canvas_traits 0.0.1",
|
||||
"core-foundation 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"euclid 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"euclid 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"hyper 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"io-surface 0.1.0 (git+https://github.com/servo/io-surface-rs)",
|
||||
"ipc-channel 0.1.0 (git+https://github.com/pcwalton/ipc-channel)",
|
||||
|
@ -872,7 +872,7 @@ version = "0.0.1"
|
|||
dependencies = [
|
||||
"cookie 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"devtools_traits 0.0.1",
|
||||
"euclid 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"euclid 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"flate2 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"hyper 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"ipc-channel 0.1.0 (git+https://github.com/pcwalton/ipc-channel)",
|
||||
|
@ -906,7 +906,7 @@ dependencies = [
|
|||
name = "net_traits"
|
||||
version = "0.0.1"
|
||||
dependencies = [
|
||||
"euclid 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"euclid 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"hyper 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"ipc-channel 0.1.0 (git+https://github.com/pcwalton/ipc-channel)",
|
||||
"log 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -952,7 +952,7 @@ source = "git+https://github.com/ecoal95/rust-offscreen-rendering-context#9efc32
|
|||
dependencies = [
|
||||
"cgl 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"core-foundation 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"euclid 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"euclid 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"gl_generator 0.0.26 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"gleam 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"khronos_api 0.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -1161,7 +1161,7 @@ dependencies = [
|
|||
"cssparser 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"devtools_traits 0.0.1",
|
||||
"encoding 0.2.32 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"euclid 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"euclid 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"fnv 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"html5ever 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"hyper 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -1207,7 +1207,7 @@ name = "script_traits"
|
|||
version = "0.0.1"
|
||||
dependencies = [
|
||||
"devtools_traits 0.0.1",
|
||||
"euclid 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"euclid 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"ipc-channel 0.1.0 (git+https://github.com/pcwalton/ipc-channel)",
|
||||
"libc 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"msg 0.0.1",
|
||||
|
@ -1276,7 +1276,7 @@ source = "git+https://github.com/servo/skia#4569e30e308f33f45ee773e73393d769feaf
|
|||
dependencies = [
|
||||
"cgl 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"egl 0.1.0 (git+https://github.com/servo/rust-egl)",
|
||||
"euclid 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"euclid 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"expat-sys 2.1.0 (git+https://github.com/servo/libexpat)",
|
||||
"freetype-sys 2.4.11 (git+https://github.com/servo/libfreetype2)",
|
||||
"gleam 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -1344,7 +1344,7 @@ dependencies = [
|
|||
"bitflags 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"cssparser 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"encoding 0.2.32 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"euclid 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"euclid 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"fnv 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"lazy_static 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"log 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -1367,7 +1367,7 @@ name = "style_tests"
|
|||
version = "0.0.1"
|
||||
dependencies = [
|
||||
"cssparser 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"euclid 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"euclid 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"selectors 0.1.0 (git+https://github.com/servo/rust-selectors)",
|
||||
"string_cache 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"string_cache_plugin 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -1465,7 +1465,7 @@ dependencies = [
|
|||
"azure 0.1.0 (git+https://github.com/servo/rust-azure)",
|
||||
"bitflags 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"cssparser 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"euclid 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"euclid 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"lazy_static 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libc 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"log 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -1484,7 +1484,7 @@ dependencies = [
|
|||
name = "util_tests"
|
||||
version = "0.0.1"
|
||||
dependencies = [
|
||||
"euclid 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"euclid 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libc 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"plugins 0.0.1",
|
||||
"util 0.0.1",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue