LibWeb: Follow paint order for async wheel hit testing
Async wheel routing used scroll node scrollports as the hit-test surface. That works while the scrollable content is the topmost content under the pointer, but it ignores the rest of the painted scene. A sibling with a higher z-index can visually cover a nested scroller without being part of that scroller's subtree. In that case the compositor could still pick the covered scroller from its scrollport rect and consume the wheel event, even though normal hit testing would target the covering element and let the page or an ancestor handle the scroll. Record wheel hit-test targets as display-list metadata in paint order and resolve each target to the scroll frame that should receive wheel deltas. The compositor can then walk those targets from front to back, preserve non-passive wheel regions as main-thread barriers, and only scroll the node associated with the topmost hit-testable box.
This commit is contained in:
parent
765df1130e
commit
21245e7adb
66 changed files with 593 additions and 39 deletions
|
|
@ -15,8 +15,9 @@ void AsyncScrollTree::set_state(AsyncScrollingState&& state)
|
|||
{
|
||||
m_scroll_nodes = move(state.scroll_nodes);
|
||||
m_sticky_areas = move(state.sticky_areas);
|
||||
m_wheel_hit_test_regions = move(state.wheel_hit_test_targets);
|
||||
m_main_thread_wheel_event_regions = move(state.main_thread_wheel_event_regions);
|
||||
m_wheel_scroll_targets.clear();
|
||||
m_wheel_hit_test_targets.clear();
|
||||
m_main_thread_wheel_event_targets.clear();
|
||||
m_visual_context_tree = nullptr;
|
||||
}
|
||||
|
|
@ -30,6 +31,18 @@ AsyncScrollNode const* AsyncScrollTree::scroll_node_for_id(AsyncScrollNodeID nod
|
|||
return nullptr;
|
||||
}
|
||||
|
||||
WheelHitTestResult AsyncScrollTree::hit_test_result_for_scroll_node(AsyncScrollNodeID node_id, Gfx::FloatPoint delta) const
|
||||
{
|
||||
auto const* node = scroll_node_for_id(node_id);
|
||||
if (!node)
|
||||
return {};
|
||||
if (can_scroll_node_by_delta(*node, m_scroll_state_snapshot, delta))
|
||||
return { node_id, false };
|
||||
if (auto ancestor = scrollable_ancestor_for_node(node_id, m_scroll_state_snapshot, delta); ancestor.has_value())
|
||||
return { ancestor, false };
|
||||
return {};
|
||||
}
|
||||
|
||||
AsyncStickyArea const* AsyncScrollTree::sticky_area_for_scroll_frame_index(Painting::ScrollFrameIndex scroll_frame_index) const
|
||||
{
|
||||
for (auto const& sticky_area : m_sticky_areas) {
|
||||
|
|
@ -229,9 +242,9 @@ bool AsyncScrollTree::apply_scroll_delta(AsyncScrollNodeID node_id, Gfx::FloatPo
|
|||
return scrolled;
|
||||
}
|
||||
|
||||
void AsyncScrollTree::rebuild_wheel_scroll_targets(RefPtr<Painting::DisplayList> const& display_list, Painting::ScrollStateSnapshot const& scroll_state_snapshot)
|
||||
void AsyncScrollTree::rebuild_wheel_hit_test_targets(RefPtr<Painting::DisplayList> const& display_list, Painting::ScrollStateSnapshot const& scroll_state_snapshot)
|
||||
{
|
||||
m_wheel_scroll_targets.clear();
|
||||
m_wheel_hit_test_targets.clear();
|
||||
m_main_thread_wheel_event_targets.clear();
|
||||
m_visual_context_tree = nullptr;
|
||||
m_scroll_state_snapshot = scroll_state_snapshot;
|
||||
|
|
@ -241,19 +254,18 @@ void AsyncScrollTree::rebuild_wheel_scroll_targets(RefPtr<Painting::DisplayList>
|
|||
auto const& visual_context_tree = display_list->visual_context_tree();
|
||||
m_visual_context_tree = &visual_context_tree;
|
||||
|
||||
for (auto const& node : m_scroll_nodes) {
|
||||
auto rect = node.scrollport_rect.to_type<float>();
|
||||
auto viewport_rect = node.is_viewport
|
||||
? Gfx::FloatRect { {}, rect.size() }
|
||||
: visual_context_tree.transform_rect_to_viewport(node.hit_test_visual_context_index, rect, scroll_state_snapshot);
|
||||
m_wheel_scroll_targets.append({
|
||||
.node_id = node.node_id,
|
||||
.visual_context_index = node.hit_test_visual_context_index,
|
||||
.rect = rect,
|
||||
.viewport_rect = viewport_rect,
|
||||
m_wheel_hit_test_targets.ensure_capacity(m_wheel_hit_test_regions.size());
|
||||
for (auto const& target : m_wheel_hit_test_regions) {
|
||||
m_wheel_hit_test_targets.append({
|
||||
.target_node_id = target.target_node_id,
|
||||
.visual_context_index = target.visual_context_index,
|
||||
.rect = target.rect,
|
||||
.corner_radii = target.corner_radii,
|
||||
.viewport_rect = visual_context_tree.transform_rect_to_viewport(target.visual_context_index, target.rect, scroll_state_snapshot),
|
||||
});
|
||||
}
|
||||
|
||||
m_main_thread_wheel_event_targets.ensure_capacity(m_main_thread_wheel_event_regions.size());
|
||||
for (auto const& region : m_main_thread_wheel_event_regions) {
|
||||
m_main_thread_wheel_event_targets.append({
|
||||
.visual_context_index = region.visual_context_index,
|
||||
|
|
@ -263,13 +275,22 @@ void AsyncScrollTree::rebuild_wheel_scroll_targets(RefPtr<Painting::DisplayList>
|
|||
}
|
||||
}
|
||||
|
||||
void AsyncScrollTree::clear_wheel_scroll_targets()
|
||||
void AsyncScrollTree::clear_wheel_hit_test_targets()
|
||||
{
|
||||
m_wheel_scroll_targets.clear();
|
||||
m_wheel_hit_test_targets.clear();
|
||||
m_main_thread_wheel_event_targets.clear();
|
||||
m_visual_context_tree = nullptr;
|
||||
}
|
||||
|
||||
static bool wheel_hit_test_target_contains_point(CachedWheelHitTestTarget const& target, Gfx::FloatPoint position_in_context)
|
||||
{
|
||||
if (!target.rect.contains(position_in_context))
|
||||
return false;
|
||||
if (!target.corner_radii.has_any_radius())
|
||||
return true;
|
||||
return target.corner_radii.contains(position_in_context.to_type<int>(), target.rect.to_type<int>());
|
||||
}
|
||||
|
||||
Optional<Gfx::FloatPoint> AsyncScrollTree::scroll_offset_for_node(AsyncScrollNodeID node_id, Painting::ScrollStateSnapshot const& scroll_state_snapshot) const
|
||||
{
|
||||
if (auto const* node = scroll_node_for_id(node_id))
|
||||
|
|
@ -300,24 +321,25 @@ WheelHitTestResult AsyncScrollTree::hit_test_scroll_node_for_wheel(Gfx::FloatPoi
|
|||
return { {}, true };
|
||||
}
|
||||
|
||||
for (auto const& target : m_wheel_scroll_targets.in_reverse()) {
|
||||
for (auto const& target : m_wheel_hit_test_targets.in_reverse()) {
|
||||
if (!target.viewport_rect.contains(position))
|
||||
continue;
|
||||
|
||||
auto position_in_context = m_visual_context_tree->transform_point_for_hit_test(target.visual_context_index, position, m_scroll_state_snapshot);
|
||||
if (!position_in_context.has_value() || !target.rect.contains(*position_in_context))
|
||||
if (!position_in_context.has_value() || !wheel_hit_test_target_contains_point(target, *position_in_context))
|
||||
continue;
|
||||
|
||||
auto const* node = scroll_node_for_id(target.node_id);
|
||||
if (!node)
|
||||
if (!target.target_node_id.has_value())
|
||||
return {};
|
||||
if (can_scroll_node_by_delta(*node, m_scroll_state_snapshot, delta))
|
||||
return { target.node_id, false };
|
||||
if (auto ancestor = scrollable_ancestor_for_node(target.node_id, m_scroll_state_snapshot, delta); ancestor.has_value())
|
||||
return { ancestor, false };
|
||||
return {};
|
||||
return hit_test_result_for_scroll_node(*target.target_node_id, delta);
|
||||
}
|
||||
return {};
|
||||
|
||||
auto viewport_node_id = viewport_scroll_node_id();
|
||||
if (!viewport_node_id.has_value())
|
||||
return {};
|
||||
auto const* viewport_node = scroll_node_for_id(*viewport_node_id);
|
||||
if (!viewport_node || !viewport_node->scrollport_rect.to_type<float>().contains(position))
|
||||
return {};
|
||||
return hit_test_result_for_scroll_node(*viewport_node_id, delta);
|
||||
}
|
||||
|
||||
bool AsyncScrollTree::scroll_node_is_viewport(AsyncScrollNodeID node_id) const
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@
|
|||
#include <AK/Optional.h>
|
||||
#include <AK/RefPtr.h>
|
||||
#include <AK/Vector.h>
|
||||
#include <LibGfx/CornerRadii.h>
|
||||
#include <LibGfx/Point.h>
|
||||
#include <LibGfx/Rect.h>
|
||||
#include <LibWeb/Compositor/AsyncScrollingState.h>
|
||||
|
|
@ -22,15 +23,14 @@ struct WheelHitTestResult {
|
|||
bool blocked_by_main_thread_region { false };
|
||||
};
|
||||
|
||||
// Viewport-space cache used for wheel hit-testing, rebuilt whenever scroll offsets change.
|
||||
struct WheelScrollTarget {
|
||||
AsyncScrollNodeID node_id;
|
||||
struct CachedWheelHitTestTarget {
|
||||
Optional<AsyncScrollNodeID> target_node_id;
|
||||
Painting::VisualContextIndex visual_context_index;
|
||||
Gfx::FloatRect rect;
|
||||
Gfx::CornerRadii corner_radii;
|
||||
Gfx::FloatRect viewport_rect;
|
||||
};
|
||||
|
||||
// Viewport-space cache of regions that force main-thread wheel routing.
|
||||
struct MainThreadWheelEventTarget {
|
||||
Painting::VisualContextIndex visual_context_index;
|
||||
Gfx::FloatRect rect;
|
||||
|
|
@ -43,8 +43,8 @@ class AsyncScrollTree {
|
|||
public:
|
||||
void set_state(AsyncScrollingState&&);
|
||||
|
||||
void rebuild_wheel_scroll_targets(RefPtr<Painting::DisplayList> const&, Painting::ScrollStateSnapshot const&);
|
||||
void clear_wheel_scroll_targets();
|
||||
void rebuild_wheel_hit_test_targets(RefPtr<Painting::DisplayList> const&, Painting::ScrollStateSnapshot const&);
|
||||
void clear_wheel_hit_test_targets();
|
||||
|
||||
Optional<Gfx::FloatPoint> scroll_offset_for_node(AsyncScrollNodeID, Painting::ScrollStateSnapshot const&) const;
|
||||
Optional<AsyncScrollNodeID> viewport_scroll_node_id() const;
|
||||
|
|
@ -60,6 +60,7 @@ private:
|
|||
static bool has_non_zero_scroll_delta(Gfx::FloatPoint);
|
||||
|
||||
AsyncScrollNode const* scroll_node_for_id(AsyncScrollNodeID) const;
|
||||
WheelHitTestResult hit_test_result_for_scroll_node(AsyncScrollNodeID, Gfx::FloatPoint delta) const;
|
||||
AsyncStickyArea const* sticky_area_for_scroll_frame_index(Painting::ScrollFrameIndex) const;
|
||||
Optional<AsyncScrollNodeID> scrollable_ancestor_for_node(AsyncScrollNodeID, Painting::ScrollStateSnapshot const&, Gfx::FloatPoint delta) const;
|
||||
Optional<Painting::ScrollFrameIndex> parent_scroll_frame_index(Painting::ScrollFrameIndex) const;
|
||||
|
|
@ -69,9 +70,10 @@ private:
|
|||
|
||||
Vector<AsyncScrollNode> m_scroll_nodes;
|
||||
Vector<AsyncStickyArea> m_sticky_areas;
|
||||
Vector<WheelHitTestTarget> m_wheel_hit_test_regions;
|
||||
Vector<MainThreadWheelEventRegion> m_main_thread_wheel_event_regions;
|
||||
Vector<CachedWheelHitTestTarget> m_wheel_hit_test_targets;
|
||||
Vector<MainThreadWheelEventTarget> m_main_thread_wheel_event_targets;
|
||||
Vector<WheelScrollTarget> m_wheel_scroll_targets;
|
||||
RefPtr<Painting::AccumulatedVisualContextTree const> m_visual_context_tree;
|
||||
Painting::ScrollStateSnapshot m_scroll_state_snapshot;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -104,6 +104,34 @@ static void record_main_thread_wheel_event_region(Painting::PaintableBox const&
|
|||
});
|
||||
}
|
||||
|
||||
static Optional<Painting::ScrollFrameIndex> wheel_hit_test_target_scroll_frame_index_for(Painting::PaintableBox const& paintable_box)
|
||||
{
|
||||
if (paintable_box.own_scroll_frame_index().value() && paintable_box.could_be_scrolled_by_wheel_event())
|
||||
return paintable_box.own_scroll_frame_index();
|
||||
if (auto scrollable_ancestor = paintable_box.nearest_scrollable_ancestor())
|
||||
return scrollable_ancestor->own_scroll_frame_index();
|
||||
if (auto viewport_paintable = paintable_box.document().paintable(); viewport_paintable && viewport_paintable->could_be_scrolled_by_wheel_event())
|
||||
return viewport_paintable->own_scroll_frame_index();
|
||||
return {};
|
||||
}
|
||||
|
||||
static void record_wheel_hit_test_target(Painting::PaintableBox const& paintable_box, DisplayListRecordingContext& context)
|
||||
{
|
||||
if (!paintable_box.is_visible() || !paintable_box.visible_for_hit_testing())
|
||||
return;
|
||||
|
||||
auto rect = css_rect_to_device_rect(paintable_box.absolute_border_box_rect(), context.device_pixels_per_css_pixel());
|
||||
if (rect.is_empty())
|
||||
return;
|
||||
|
||||
context.display_list_recorder().compositor_wheel_hit_test_target({
|
||||
.document_id = paintable_box.document().unique_id(),
|
||||
.target_scroll_frame_index = wheel_hit_test_target_scroll_frame_index_for(paintable_box).value_or({}),
|
||||
.rect = rect,
|
||||
.corner_radii = paintable_box.border_radii_data().as_corners(context.device_pixel_converter()),
|
||||
});
|
||||
}
|
||||
|
||||
static void record_viewport_scrollbar_state(Painting::PaintableBox const& paintable_box, DisplayListRecordingContext& context)
|
||||
{
|
||||
if (!paintable_box.is_viewport_paintable())
|
||||
|
|
@ -200,6 +228,8 @@ void record_async_scrolling_metadata_for_paintable(Painting::PaintableBox const&
|
|||
auto device_pixels_per_css_pixel = context.device_pixels_per_css_pixel();
|
||||
auto& recorder = context.display_list_recorder();
|
||||
|
||||
record_wheel_hit_test_target(paintable_box, context);
|
||||
|
||||
if (!context.has_blocking_wheel_event_region_covering_viewport()) {
|
||||
if (auto node = paintable_box.dom_node(); node && !is_root_wheel_event_target(*node) && has_blocking_wheel_event_listener(*node)) {
|
||||
context.set_has_blocking_wheel_event_listeners(true);
|
||||
|
|
@ -259,6 +289,8 @@ AsyncScrollingState async_scrolling_state_from_display_list(Painting::DisplayLis
|
|||
{
|
||||
AsyncScrollingState async_scrolling_state;
|
||||
Vector<Painting::ScrollFrameIndex> parent_scroll_frame_indices;
|
||||
Vector<Painting::ScrollFrameIndex> wheel_hit_test_target_scroll_frame_indices;
|
||||
Vector<UniqueNodeID> wheel_hit_test_target_document_ids;
|
||||
|
||||
if (auto const& metadata = display_list.async_scrolling_metadata(); metadata.has_value()) {
|
||||
async_scrolling_state.viewport_rect = metadata->viewport_rect;
|
||||
|
|
@ -310,6 +342,18 @@ AsyncScrollingState async_scrolling_state_from_display_list(Painting::DisplayLis
|
|||
parent_scroll_frame_indices.append(command.parent_scroll_frame_index);
|
||||
break;
|
||||
}
|
||||
case Painting::DisplayListCommandType::CompositorWheelHitTestTarget: {
|
||||
auto command = Painting::read_display_list_command_payload<Painting::CompositorWheelHitTestTarget>(payload);
|
||||
async_scrolling_state.wheel_hit_test_targets.append({
|
||||
.visual_context_index = header.context_index,
|
||||
.rect = command.rect,
|
||||
.corner_radii = command.corner_radii,
|
||||
.target_node_id = {},
|
||||
});
|
||||
wheel_hit_test_target_scroll_frame_indices.append(command.target_scroll_frame_index);
|
||||
wheel_hit_test_target_document_ids.append(command.document_id);
|
||||
break;
|
||||
}
|
||||
case Painting::DisplayListCommandType::CompositorMainThreadWheelEventRegion: {
|
||||
auto command = Painting::read_display_list_command_payload<Painting::CompositorMainThreadWheelEventRegion>(payload);
|
||||
async_scrolling_state.main_thread_wheel_event_regions.append({
|
||||
|
|
@ -347,6 +391,14 @@ AsyncScrollingState async_scrolling_state_from_display_list(Painting::DisplayLis
|
|||
if (parent_scroll_frame_index.value())
|
||||
async_scrolling_state.scroll_nodes[i].parent_node_id = scroll_node_id_for(async_scrolling_state.scroll_nodes[i].node_id.document_id, parent_scroll_frame_index);
|
||||
}
|
||||
|
||||
VERIFY(wheel_hit_test_target_scroll_frame_indices.size() == async_scrolling_state.wheel_hit_test_targets.size());
|
||||
VERIFY(wheel_hit_test_target_document_ids.size() == async_scrolling_state.wheel_hit_test_targets.size());
|
||||
for (size_t i = 0; i < async_scrolling_state.wheel_hit_test_targets.size(); ++i) {
|
||||
auto target_scroll_frame_index = wheel_hit_test_target_scroll_frame_indices[i];
|
||||
if (target_scroll_frame_index.value())
|
||||
async_scrolling_state.wheel_hit_test_targets[i].target_node_id = scroll_node_id_for(wheel_hit_test_target_document_ids[i], target_scroll_frame_index);
|
||||
}
|
||||
return async_scrolling_state;
|
||||
}
|
||||
|
||||
|
|
@ -412,7 +464,7 @@ static WheelHitTestResult hit_test_scroll_node_at_position(AsyncScrollingState c
|
|||
AsyncScrollTree scroll_tree;
|
||||
auto async_scrolling_state_copy = async_scrolling_state;
|
||||
scroll_tree.set_state(move(async_scrolling_state_copy));
|
||||
scroll_tree.rebuild_wheel_scroll_targets(display_list, scroll_state_snapshot);
|
||||
scroll_tree.rebuild_wheel_hit_test_targets(display_list, scroll_state_snapshot);
|
||||
return scroll_tree.hit_test_scroll_node_for_wheel(position, delta);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@
|
|||
#include <AK/StringView.h>
|
||||
#include <AK/Vector.h>
|
||||
#include <LibGfx/Color.h>
|
||||
#include <LibGfx/CornerRadii.h>
|
||||
#include <LibGfx/Point.h>
|
||||
#include <LibGfx/Rect.h>
|
||||
#include <LibWeb/Forward.h>
|
||||
|
|
@ -61,6 +62,13 @@ struct BlockingWheelEventRegion {
|
|||
Gfx::FloatRect rect;
|
||||
};
|
||||
|
||||
struct WheelHitTestTarget {
|
||||
Painting::VisualContextIndex visual_context_index;
|
||||
Gfx::FloatRect rect;
|
||||
Gfx::CornerRadii corner_radii;
|
||||
Optional<AsyncScrollNodeID> target_node_id;
|
||||
};
|
||||
|
||||
// A region that must always use main-thread wheel routing even without a blocking listener, such as a nested navigable.
|
||||
struct MainThreadWheelEventRegion {
|
||||
Painting::VisualContextIndex visual_context_index;
|
||||
|
|
@ -85,6 +93,7 @@ struct ViewportScrollbar {
|
|||
struct AsyncScrollingState {
|
||||
Vector<AsyncScrollNode> scroll_nodes;
|
||||
Vector<AsyncStickyArea> sticky_areas;
|
||||
Vector<WheelHitTestTarget> wheel_hit_test_targets;
|
||||
Vector<MainThreadWheelEventRegion> main_thread_wheel_event_regions;
|
||||
Vector<ViewportScrollbar> viewport_scrollbars;
|
||||
|
||||
|
|
|
|||
|
|
@ -678,7 +678,7 @@ public:
|
|||
if (auto reconciled_scroll_offset = m_async_scroll_tree.set_scroll_offset(viewport_node->node_id, *pending_async_viewport_scroll_offset, m_cached_scroll_state_snapshot); reconciled_scroll_offset.has_value())
|
||||
async_scrolling_viewport_rect.set_location(reconciled_scroll_offset->to_type<int>());
|
||||
}
|
||||
m_async_scroll_tree.rebuild_wheel_scroll_targets(m_cached_display_list, m_cached_scroll_state_snapshot);
|
||||
m_async_scroll_tree.rebuild_wheel_hit_test_targets(m_cached_display_list, m_cached_scroll_state_snapshot);
|
||||
}
|
||||
{
|
||||
Sync::MutexLocker const locker { m_mutex };
|
||||
|
|
@ -698,7 +698,7 @@ public:
|
|||
return;
|
||||
}
|
||||
scroll_offset = m_async_scroll_tree.scroll_offset_for_node(cmd.scroll_target, m_cached_scroll_state_snapshot);
|
||||
m_async_scroll_tree.rebuild_wheel_scroll_targets(m_cached_display_list, m_cached_scroll_state_snapshot);
|
||||
m_async_scroll_tree.rebuild_wheel_hit_test_targets(m_cached_display_list, m_cached_scroll_state_snapshot);
|
||||
}
|
||||
if (scroll_offset.has_value()) {
|
||||
async_scroll_viewport_rect.set_location(scroll_offset->to_type<int>());
|
||||
|
|
@ -747,7 +747,7 @@ public:
|
|||
reconciled_viewport_scroll_offset = m_async_scroll_tree.set_scroll_offset(*viewport_node_id, *pending_async_viewport_scroll_offset, m_cached_scroll_state_snapshot);
|
||||
}
|
||||
}
|
||||
m_async_scroll_tree.rebuild_wheel_scroll_targets(m_cached_display_list, m_cached_scroll_state_snapshot);
|
||||
m_async_scroll_tree.rebuild_wheel_hit_test_targets(m_cached_display_list, m_cached_scroll_state_snapshot);
|
||||
}
|
||||
if (reconciled_viewport_scroll_offset.has_value()) {
|
||||
Sync::MutexLocker const mutex_locker { m_mutex };
|
||||
|
|
@ -900,7 +900,7 @@ private:
|
|||
if (!m_async_scroll_tree.apply_scroll_delta(scrollbar.scroll_node_id, delta, m_cached_scroll_state_snapshot))
|
||||
return false;
|
||||
scroll_offset = m_async_scroll_tree.scroll_offset_for_node(scrollbar.scroll_node_id, m_cached_scroll_state_snapshot);
|
||||
m_async_scroll_tree.rebuild_wheel_scroll_targets(m_cached_display_list, m_cached_scroll_state_snapshot);
|
||||
m_async_scroll_tree.rebuild_wheel_hit_test_targets(m_cached_display_list, m_cached_scroll_state_snapshot);
|
||||
}
|
||||
|
||||
if (!scroll_offset.has_value())
|
||||
|
|
|
|||
|
|
@ -754,7 +754,7 @@ String Internals::async_scrolling_state_wheel_target_at(double x, double y, doub
|
|||
|
||||
Compositor::AsyncScrollTree scroll_tree;
|
||||
scroll_tree.set_state(move(snapshot->state));
|
||||
scroll_tree.rebuild_wheel_scroll_targets(snapshot->display_list, snapshot->document_paintable->scroll_state_snapshot());
|
||||
scroll_tree.rebuild_wheel_hit_test_targets(snapshot->display_list, snapshot->document_paintable->scroll_state_snapshot());
|
||||
|
||||
auto target = scroll_tree.hit_test_scroll_node_for_wheel(
|
||||
{ static_cast<float>(x), static_cast<float>(y) },
|
||||
|
|
|
|||
|
|
@ -121,6 +121,7 @@ private:
|
|||
virtual void paint_nested_display_list(PaintNestedDisplayList const&) = 0;
|
||||
virtual void compositor_scroll_node(CompositorScrollNode const&) = 0;
|
||||
virtual void compositor_sticky_area(CompositorStickyArea const&) = 0;
|
||||
virtual void compositor_wheel_hit_test_target(CompositorWheelHitTestTarget const&) = 0;
|
||||
virtual void compositor_main_thread_wheel_event_region(CompositorMainThreadWheelEventRegion const&) = 0;
|
||||
virtual void compositor_viewport_scrollbar(CompositorViewportScrollbar const&) = 0;
|
||||
virtual void compositor_blocking_wheel_event_region(CompositorBlockingWheelEventRegion const&) = 0;
|
||||
|
|
|
|||
|
|
@ -183,6 +183,18 @@ void CompositorBlockingWheelEventRegion::dump(StringBuilder& builder) const
|
|||
builder.appendff(" rect={}", rect);
|
||||
}
|
||||
|
||||
void CompositorWheelHitTestTarget::dump(StringBuilder& builder) const
|
||||
{
|
||||
builder.appendff(" target_scroll_frame_index={} rect={}", target_scroll_frame_index, rect);
|
||||
if (corner_radii.has_any_radius()) {
|
||||
builder.appendff(" corner_radii=[{}x{},{}x{},{}x{},{}x{}]",
|
||||
corner_radii.top_left.horizontal_radius, corner_radii.top_left.vertical_radius,
|
||||
corner_radii.top_right.horizontal_radius, corner_radii.top_right.vertical_radius,
|
||||
corner_radii.bottom_right.horizontal_radius, corner_radii.bottom_right.vertical_radius,
|
||||
corner_radii.bottom_left.horizontal_radius, corner_radii.bottom_left.vertical_radius);
|
||||
}
|
||||
}
|
||||
|
||||
void CompositorMainThreadWheelEventRegion::dump(StringBuilder& builder) const
|
||||
{
|
||||
builder.appendff(" rect={}", rect);
|
||||
|
|
|
|||
|
|
@ -63,6 +63,7 @@ class DisplayList;
|
|||
V(PaintNestedDisplayList, paint_nested_display_list) \
|
||||
V(CompositorScrollNode, compositor_scroll_node) \
|
||||
V(CompositorStickyArea, compositor_sticky_area) \
|
||||
V(CompositorWheelHitTestTarget, compositor_wheel_hit_test_target) \
|
||||
V(CompositorMainThreadWheelEventRegion, compositor_main_thread_wheel_event_region) \
|
||||
V(CompositorViewportScrollbar, compositor_viewport_scrollbar) \
|
||||
V(CompositorBlockingWheelEventRegion, compositor_blocking_wheel_event_region) \
|
||||
|
|
@ -550,6 +551,18 @@ struct CompositorBlockingWheelEventRegion {
|
|||
void dump(StringBuilder&) const;
|
||||
};
|
||||
|
||||
struct CompositorWheelHitTestTarget {
|
||||
static constexpr StringView command_name = "CompositorWheelHitTestTarget"sv;
|
||||
static constexpr DisplayListCommandType command_type = DisplayListCommandType::CompositorWheelHitTestTarget;
|
||||
|
||||
UniqueNodeID document_id;
|
||||
ScrollFrameIndex target_scroll_frame_index;
|
||||
Gfx::FloatRect rect;
|
||||
Gfx::CornerRadii corner_radii;
|
||||
|
||||
void dump(StringBuilder&) const;
|
||||
};
|
||||
|
||||
struct CompositorMainThreadWheelEventRegion {
|
||||
static constexpr StringView command_name = "CompositorMainThreadWheelEventRegion"sv;
|
||||
static constexpr DisplayListCommandType command_type = DisplayListCommandType::CompositorMainThreadWheelEventRegion;
|
||||
|
|
|
|||
|
|
@ -829,6 +829,10 @@ void DisplayListPlayerSkia::compositor_sticky_area(CompositorStickyArea const&)
|
|||
{
|
||||
}
|
||||
|
||||
void DisplayListPlayerSkia::compositor_wheel_hit_test_target(CompositorWheelHitTestTarget const&)
|
||||
{
|
||||
}
|
||||
|
||||
void DisplayListPlayerSkia::compositor_main_thread_wheel_event_region(CompositorMainThreadWheelEventRegion const&)
|
||||
{
|
||||
}
|
||||
|
|
|
|||
|
|
@ -52,6 +52,7 @@ private:
|
|||
void add_rounded_rect_clip(AddRoundedRectClip const&) override;
|
||||
void compositor_scroll_node(CompositorScrollNode const&) override;
|
||||
void compositor_sticky_area(CompositorStickyArea const&) override;
|
||||
void compositor_wheel_hit_test_target(CompositorWheelHitTestTarget const&) override;
|
||||
void compositor_main_thread_wheel_event_region(CompositorMainThreadWheelEventRegion const&) override;
|
||||
void compositor_viewport_scrollbar(CompositorViewportScrollbar const&) override;
|
||||
void compositor_blocking_wheel_event_region(CompositorBlockingWheelEventRegion const&) override;
|
||||
|
|
|
|||
|
|
@ -722,6 +722,11 @@ void DisplayListRecorder::compositor_sticky_area(CompositorStickyArea const& sti
|
|||
append_command(sticky_area);
|
||||
}
|
||||
|
||||
void DisplayListRecorder::compositor_wheel_hit_test_target(CompositorWheelHitTestTarget const& target)
|
||||
{
|
||||
append_command(target);
|
||||
}
|
||||
|
||||
void DisplayListRecorder::set_async_scrolling_metadata(DisplayList::AsyncScrollingMetadata metadata)
|
||||
{
|
||||
m_display_list.set_async_scrolling_metadata(metadata);
|
||||
|
|
|
|||
|
|
@ -142,6 +142,7 @@ public:
|
|||
|
||||
void compositor_scroll_node(CompositorScrollNode const&);
|
||||
void compositor_sticky_area(CompositorStickyArea const&);
|
||||
void compositor_wheel_hit_test_target(CompositorWheelHitTestTarget const&);
|
||||
void set_async_scrolling_metadata(DisplayList::AsyncScrollingMetadata);
|
||||
void compositor_main_thread_wheel_event_region(CompositorMainThreadWheelEventRegion const&);
|
||||
void compositor_viewport_scrollbar(CompositorViewportScrollbar const&);
|
||||
|
|
|
|||
|
|
@ -12,6 +12,11 @@ AccumulatedVisualContext Tree:
|
|||
|
||||
DisplayList:
|
||||
SaveLayer@0
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=0 rect=[0,0 800x600]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[0,0 800x13]
|
||||
CompositorWheelHitTestTarget@2 target_scroll_frame_index=0 rect=[20,20 100x100]
|
||||
CompositorBlockingWheelEventRegion@2 rect=[20,20 100x100]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[20,160 100x100]
|
||||
CompositorWheelHitTestTarget@4 target_scroll_frame_index=0 rect=[20,160 200x100]
|
||||
CompositorBlockingWheelEventRegion@4 rect=[20,160 200x100]
|
||||
Restore@0
|
||||
|
|
|
|||
|
|
@ -30,8 +30,14 @@ AccumulatedVisualContext Tree:
|
|||
|
||||
DisplayList:
|
||||
SaveLayer@0
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=0 rect=[0,0 800x600]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[0,0 800x213]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[0,0 800x200]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=2 rect=[0,0 200x200]
|
||||
CompositorScrollNode@1 scroll_frame_index=2 parent_scroll_frame_index=0 scrollport_rect=[0,0 200x200] max_scroll_offset=[800,900] is_viewport=false
|
||||
CompositorWheelHitTestTarget@3 target_scroll_frame_index=2 rect=[0,0 100x100]
|
||||
CompositorBlockingWheelEventRegion@3 rect=[0,0 100x100]
|
||||
CompositorWheelHitTestTarget@3 target_scroll_frame_index=2 rect=[0,100 1000x1000]
|
||||
PaintScrollBar@1
|
||||
PaintScrollBar@1
|
||||
Restore@0
|
||||
|
|
|
|||
|
|
@ -3,8 +3,13 @@ listener generation increased: true
|
|||
after routing admission: blocking wheel event listeners
|
||||
display list:
|
||||
AccumulatedVisualContext Tree:
|
||||
[1] scroll_frame_id=1 (PaintableWithLines(BlockContainer<PRE>#out))
|
||||
|
||||
DisplayList:
|
||||
SaveLayer@0
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=1 rect=[0,0 800x600]
|
||||
CompositorScrollNode@0 scroll_frame_index=1 parent_scroll_frame_index=0 scrollport_rect=[0,0 800x600] max_scroll_offset=[0,1413] is_viewport=true
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=1 rect=[0,0 800x2013]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=1 rect=[0,0 800x2000]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=1 rect=[0,0 800x2000]
|
||||
Restore@0
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
uncovered scroller wheel target: non-viewport
|
||||
covered scroller wheel target: viewport
|
||||
covered scroller with pointer-events none wheel target: non-viewport
|
||||
scroller scrollTop after covered wheel: 0
|
||||
window scrollY after covered wheel: 100
|
||||
|
|
@ -7,7 +7,12 @@ AccumulatedVisualContext Tree:
|
|||
|
||||
DisplayList:
|
||||
SaveLayer@0
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=1 rect=[0,0 800x600]
|
||||
CompositorScrollNode@0 scroll_frame_index=1 parent_scroll_frame_index=0 scrollport_rect=[0,0 800x600] max_scroll_offset=[0,1413] is_viewport=true
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=1 rect=[0,0 800x2013]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=1 rect=[0,0 800x2000]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=1 rect=[0,0 800x2000]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=1 rect=[40,40 160x120]
|
||||
CompositorMainThreadWheelEventRegion@1 rect=[40,40 160x120]
|
||||
Save@1
|
||||
AddClipRect@1 rect=[40,40 160x120]
|
||||
|
|
|
|||
|
|
@ -3,10 +3,18 @@ window scrollY: 0
|
|||
display list:
|
||||
AccumulatedVisualContext Tree:
|
||||
[1] scroll_frame_id=1 (PaintableWithLines(BlockContainer<PRE>#out))
|
||||
[2] clip=[0,0 100x100]
|
||||
[3] scroll_frame_id=2 (PaintableWithLines(BlockContainer<DIV>#spacer))
|
||||
|
||||
DisplayList:
|
||||
SaveLayer@0
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=1 rect=[0,0 800x600]
|
||||
CompositorScrollNode@0 scroll_frame_index=1 parent_scroll_frame_index=0 scrollport_rect=[0,0 800x600] max_scroll_offset=[0,1513] is_viewport=true
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=1 rect=[0,0 800x2113]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=1 rect=[0,0 800x2100]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=2 rect=[0,0 100x100]
|
||||
CompositorScrollNode@1 scroll_frame_index=2 parent_scroll_frame_index=1 scrollport_rect=[0,0 100x100] max_scroll_offset=[0,400] is_viewport=false
|
||||
CompositorWheelHitTestTarget@3 target_scroll_frame_index=2 rect=[0,0 100x500]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=1 rect=[0,100 800x2000]
|
||||
PaintScrollBar@1
|
||||
Restore@0
|
||||
|
|
|
|||
|
|
@ -0,0 +1,2 @@
|
|||
rounded corner wheel target: non-viewport
|
||||
rounded center wheel target: viewport
|
||||
|
|
@ -6,12 +6,21 @@ display list:
|
|||
AccumulatedVisualContext Tree:
|
||||
[1] scroll_frame_id=1 (PaintableWithLines(BlockContainer<PRE>#out))
|
||||
[2] scroll_frame_id=2 (sticky) (PaintableWithLines(BlockContainer(anonymous)))
|
||||
[3] clip=[0,0 100x100]
|
||||
[4] scroll_frame_id=3 (PaintableWithLines(BlockContainer<DIV>#spacer))
|
||||
|
||||
DisplayList:
|
||||
SaveLayer@0
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=1 rect=[0,0 800x600]
|
||||
CompositorScrollNode@0 scroll_frame_index=1 parent_scroll_frame_index=0 scrollport_rect=[0,0 800x600] max_scroll_offset=[0,1513] is_viewport=true
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=1 rect=[0,0 800x2113]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=1 rect=[0,0 800x2100]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=1 rect=[0,100 800x2000]
|
||||
CompositorWheelHitTestTarget@2 target_scroll_frame_index=1 rect=[0,0 800x100]
|
||||
CompositorStickyArea@2 scroll_frame_index=2 parent_scroll_frame_index=1 nearest_scrolling_ancestor_index=1 position_relative_to_scroll_ancestor=[0,0] border_box_size=[800x100] scrollport_size=[800x600] containing_block_region=[0,0 800x2100] needs_parent_offset_adjustment=true inset_top=0 inset_right=none inset_bottom=none inset_left=none
|
||||
CompositorWheelHitTestTarget@2 target_scroll_frame_index=3 rect=[0,0 100x100]
|
||||
CompositorScrollNode@2 scroll_frame_index=3 parent_scroll_frame_index=1 scrollport_rect=[0,0 100x100] max_scroll_offset=[400,400] is_viewport=false
|
||||
CompositorWheelHitTestTarget@4 target_scroll_frame_index=3 rect=[0,0 500x500]
|
||||
PaintScrollBar@2
|
||||
PaintScrollBar@2
|
||||
Restore@0
|
||||
|
|
|
|||
|
|
@ -8,11 +8,19 @@ child parent is viewport: true
|
|||
display list:
|
||||
AccumulatedVisualContext Tree:
|
||||
[1] scroll_frame_id=1 (PaintableWithLines(BlockContainer<PRE>#out))
|
||||
[2] clip=[0,0 100x100]
|
||||
[3] scroll_frame_id=2 (PaintableWithLines(BlockContainer<DIV>#spacer))
|
||||
|
||||
DisplayList:
|
||||
SaveLayer@0
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=1 rect=[0,0 800x600]
|
||||
CompositorScrollNode@0 scroll_frame_index=1 parent_scroll_frame_index=0 scrollport_rect=[0,0 800x600] max_scroll_offset=[0,1513] is_viewport=true
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=1 rect=[0,0 800x2113]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=1 rect=[0,0 800x2100]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=2 rect=[0,0 100x100]
|
||||
CompositorScrollNode@1 scroll_frame_index=2 parent_scroll_frame_index=1 scrollport_rect=[0,0 100x100] max_scroll_offset=[400,400] is_viewport=false
|
||||
CompositorWheelHitTestTarget@3 target_scroll_frame_index=2 rect=[0,0 500x500]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=1 rect=[0,100 800x2000]
|
||||
PaintScrollBar@1
|
||||
PaintScrollBar@1
|
||||
Restore@0
|
||||
|
|
|
|||
|
|
@ -14,8 +14,14 @@ AccumulatedVisualContext Tree:
|
|||
|
||||
DisplayList:
|
||||
SaveLayer@0
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=1 rect=[0,0 800x600]
|
||||
CompositorScrollNode@0 scroll_frame_index=1 parent_scroll_frame_index=0 scrollport_rect=[0,0 800x600] max_scroll_offset=[0,1431] is_viewport=true
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=1 rect=[0,0 800x2031]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=1 rect=[0,0 800x2018]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=1 rect=[0,18 800x2000]
|
||||
CompositorWheelHitTestTarget@2 target_scroll_frame_index=1 rect=[0,0 800x18]
|
||||
CompositorStickyArea@2 scroll_frame_index=2 parent_scroll_frame_index=1 nearest_scrolling_ancestor_index=1 position_relative_to_scroll_ancestor=[0,0] border_box_size=[800x18] scrollport_size=[800x600] containing_block_region=[0,0 800x2018] needs_parent_offset_adjustment=true inset_top=0 inset_right=none inset_bottom=none inset_left=none
|
||||
CompositorWheelHitTestTarget@3 target_scroll_frame_index=1 rect=[0,0 800x18]
|
||||
CompositorStickyArea@3 scroll_frame_index=3 parent_scroll_frame_index=2 nearest_scrolling_ancestor_index=1 position_relative_to_scroll_ancestor=[0,0] border_box_size=[800x18] scrollport_size=[800x600] containing_block_region=[0,0 800x18] needs_parent_offset_adjustment=true inset_top=20 inset_right=none inset_bottom=none inset_left=none
|
||||
DrawGlyphRun@3 rect=[0,0 45x18] translation=[0,13.796875] color=rgb(0, 0, 0)
|
||||
Restore@0
|
||||
|
|
|
|||
|
|
@ -5,10 +5,18 @@ scroller wheel target: non-viewport
|
|||
display list:
|
||||
AccumulatedVisualContext Tree:
|
||||
[1] scroll_frame_id=1 (PaintableWithLines(BlockContainer<PRE>#out))
|
||||
[2] clip=[0,0 100x100]
|
||||
[3] scroll_frame_id=2 (PaintableWithLines(BlockContainer<DIV>#scroller-spacer))
|
||||
|
||||
DisplayList:
|
||||
SaveLayer@0
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=1 rect=[0,0 800x600]
|
||||
CompositorScrollNode@0 scroll_frame_index=1 parent_scroll_frame_index=0 scrollport_rect=[0,0 800x600] max_scroll_offset=[0,1513] is_viewport=true
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=1 rect=[0,0 800x2113]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=1 rect=[0,0 800x2100]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=2 rect=[0,0 100x100]
|
||||
CompositorScrollNode@1 scroll_frame_index=2 parent_scroll_frame_index=1 scrollport_rect=[0,0 100x100] max_scroll_offset=[0,400] is_viewport=false
|
||||
CompositorWheelHitTestTarget@3 target_scroll_frame_index=2 rect=[0,0 100x500]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=1 rect=[0,100 800x2000]
|
||||
PaintScrollBar@1
|
||||
Restore@0
|
||||
|
|
|
|||
|
|
@ -14,8 +14,15 @@ AccumulatedVisualContext Tree:
|
|||
|
||||
DisplayList:
|
||||
SaveLayer@0
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=0 rect=[0,0 800x600]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[0,0 800x213]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[0,0 800x200]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=2 rect=[0,0 200x200]
|
||||
CompositorScrollNode@1 scroll_frame_index=2 parent_scroll_frame_index=0 scrollport_rect=[0,0 200x200] max_scroll_offset=[800,900] is_viewport=false
|
||||
CompositorWheelHitTestTarget@3 target_scroll_frame_index=2 rect=[0,0 100x100]
|
||||
CompositorBlockingWheelEventRegion@3 rect=[0,0 100x100]
|
||||
CompositorWheelHitTestTarget@3 target_scroll_frame_index=2 rect=[0,100 1000x1000]
|
||||
PaintScrollBar@1
|
||||
PaintScrollBar@1
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[250,0 100x100]
|
||||
Restore@0
|
||||
|
|
|
|||
|
|
@ -3,6 +3,12 @@ AccumulatedVisualContext Tree:
|
|||
|
||||
DisplayList:
|
||||
SaveLayer@0
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=0 rect=[0,0 800x600]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[0,0 800x39]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 784x18]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 784x18]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 27.15625x18]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[43.15625,8 27.640625x18]
|
||||
DrawGlyphRun@1 rect=[35,8 8x18] translation=[35.15625,21.796875] color=rgb(0, 0, 0)
|
||||
DrawGlyphRun@1 rect=[8,8 28x18] translation=[8,21.796875] color=rgb(0, 0, 0)
|
||||
DrawLine@1 from=[8,25] to=[35,25] color=rgb(0, 0, 0) thickness=2
|
||||
|
|
|
|||
|
|
@ -6,6 +6,11 @@ AccumulatedVisualContext Tree:
|
|||
|
||||
DisplayList:
|
||||
SaveLayer@0
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=0 rect=[0,0 800x600]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[0,0 800x221]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 784x200]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 200x200]
|
||||
CompositorWheelHitTestTarget@6 target_scroll_frame_index=0 rect=[8,8 100x100]
|
||||
FillRect@6 rect=[8,8 100x100] color=rgb(0, 0, 0)
|
||||
Restore@0
|
||||
|
||||
|
|
|
|||
|
|
@ -5,6 +5,11 @@ AccumulatedVisualContext Tree:
|
|||
|
||||
DisplayList:
|
||||
SaveLayer@0
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=0 rect=[0,0 800x600]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[0,0 800x221]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 784x200]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 200x200]
|
||||
CompositorWheelHitTestTarget@4 target_scroll_frame_index=0 rect=[8,8 100x100]
|
||||
FillRect@4 rect=[8,8 100x100] color=rgb(0, 0, 0)
|
||||
Restore@0
|
||||
|
||||
|
|
|
|||
|
|
@ -4,9 +4,12 @@ AccumulatedVisualContext Tree:
|
|||
|
||||
DisplayList:
|
||||
SaveLayer@0
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=1 rect=[0,0 800x600]
|
||||
CompositorScrollNode@0 scroll_frame_index=1 parent_scroll_frame_index=0 scrollport_rect=[0,0 800x600] max_scroll_offset=[0,613] is_viewport=true
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=1 rect=[0,0 800x1213]
|
||||
Save@1
|
||||
PaintLinearGradient@2 rect=[0,0 800x600]
|
||||
Restore@1
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=1 rect=[0,13 800x1200]
|
||||
Restore@0
|
||||
|
||||
|
|
|
|||
|
|
@ -3,8 +3,15 @@ AccumulatedVisualContext Tree:
|
|||
|
||||
DisplayList:
|
||||
SaveLayer@0
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=0 rect=[0,0 800x600]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[0,0 800x43]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 784x22]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 784x22]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 105.671875x22]
|
||||
FillRect@1 rect=[8,8 106x22] color=rgb(212, 208, 200)
|
||||
FillPath@1 path_bounding_rect=[8,8 106x22]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[13,10 95.671875x18]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[13,10 95.671875x18]
|
||||
DrawGlyphRun@1 rect=[13,10 96x18] translation=[13,23.796875] color=rgb(0, 0, 0)
|
||||
DrawLine@1 from=[13,27] to=[109,27] color=rgb(0, 0, 0) thickness=2
|
||||
Restore@0
|
||||
|
|
|
|||
|
|
@ -5,6 +5,9 @@ AccumulatedVisualContext Tree:
|
|||
|
||||
DisplayList:
|
||||
SaveLayer@0
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=0 rect=[0,0 800x600]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[0,0 800x21]
|
||||
CompositorWheelHitTestTarget@2 target_scroll_frame_index=0 rect=[8,13 100x100]
|
||||
FillRect@2 rect=[8,13 100x100] color=rgb(173, 216, 230)
|
||||
DrawGlyphRun@2 rect=[8,13 30x18] translation=[8,26.796875] color=rgb(0, 0, 0)
|
||||
Restore@0
|
||||
|
|
@ -16,6 +19,9 @@ AccumulatedVisualContext Tree:
|
|||
|
||||
DisplayList:
|
||||
SaveLayer@0
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=0 rect=[0,0 800x600]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[0,0 800x21]
|
||||
CompositorWheelHitTestTarget@2 target_scroll_frame_index=0 rect=[8,13 100x100]
|
||||
FillRect@2 rect=[8,13 100x100] color=rgb(173, 216, 230)
|
||||
DrawGlyphRun@2 rect=[8,13 30x18] translation=[8,26.796875] color=rgb(0, 0, 0)
|
||||
Restore@0
|
||||
|
|
|
|||
|
|
@ -5,6 +5,10 @@ AccumulatedVisualContext Tree:
|
|||
|
||||
DisplayList:
|
||||
SaveLayer@0
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=0 rect=[0,0 800x600]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[0,0 800x121]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 784x100]
|
||||
CompositorWheelHitTestTarget@2 target_scroll_frame_index=0 rect=[8,8 100x100]
|
||||
FillRect@2 rect=[8,8 100x100] color=rgb(173, 216, 230)
|
||||
DrawGlyphRun@2 rect=[8,8 30x18] translation=[8,21.796875] color=rgb(0, 0, 0)
|
||||
Restore@0
|
||||
|
|
@ -16,6 +20,10 @@ AccumulatedVisualContext Tree:
|
|||
|
||||
DisplayList:
|
||||
SaveLayer@0
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=0 rect=[0,0 800x600]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[0,0 800x121]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 784x100]
|
||||
CompositorWheelHitTestTarget@2 target_scroll_frame_index=0 rect=[8,8 100x100]
|
||||
FillRect@2 rect=[8,8 100x100] color=rgb(173, 216, 230)
|
||||
DrawGlyphRun@2 rect=[8,8 30x18] translation=[8,21.796875] color=rgb(0, 0, 0)
|
||||
Restore@0
|
||||
|
|
|
|||
|
|
@ -3,6 +3,10 @@ AccumulatedVisualContext Tree:
|
|||
|
||||
DisplayList:
|
||||
SaveLayer@0
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=0 rect=[0,0 800x600]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[0,0 800x41]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 784x20]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 100x20]
|
||||
FillRect@1 rect=[8,8 1x18] color=rgb(0, 0, 0)
|
||||
FillPath@1 path_bounding_rect=[6,6 104x24]
|
||||
Restore@0
|
||||
|
|
|
|||
|
|
@ -4,6 +4,9 @@ AccumulatedVisualContext Tree:
|
|||
|
||||
DisplayList:
|
||||
SaveLayer@0
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=0 rect=[0,0 800x600]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[0,0 800x21]
|
||||
CompositorWheelHitTestTarget@2 target_scroll_frame_index=0 rect=[8,13 150x150]
|
||||
FillRect@2 rect=[8,13 150x150] color=rgb(128, 0, 128)
|
||||
DrawGlyphRun@2 rect=[8,13 71x18] translation=[8,26.796875] color=rgb(0, 0, 0)
|
||||
DrawGlyphRun@2 rect=[8,31 72x18] translation=[8,44.796875] color=rgb(0, 0, 0)
|
||||
|
|
|
|||
|
|
@ -10,15 +10,25 @@ AccumulatedVisualContext Tree:
|
|||
|
||||
DisplayList:
|
||||
SaveLayer@0
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=0 rect=[0,0 800x600]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[0,0 800x225]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 784x204]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 404x204]
|
||||
FillPath@1 path_bounding_rect=[8,8 404x204]
|
||||
CompositorWheelHitTestTarget@2 target_scroll_frame_index=0 rect=[10,10 195x200]
|
||||
FillPath@2 path_bounding_rect=[10,10 195x200]
|
||||
CompositorWheelHitTestTarget@2 target_scroll_frame_index=0 rect=[215,10 195x200]
|
||||
FillPath@2 path_bounding_rect=[215,10 195x200]
|
||||
CompositorWheelHitTestTarget@4 target_scroll_frame_index=0 rect=[16,16 150x80]
|
||||
FillRect@4 rect=[16,16 150x80] color=rgb(255, 0, 0)
|
||||
DrawGlyphRun@4 rect=[16,16 15x18] translation=[16,29.796875] color=rgb(0, 0, 0)
|
||||
CompositorWheelHitTestTarget@5 target_scroll_frame_index=0 rect=[16,101 150x80]
|
||||
FillRect@5 rect=[16,101 150x80] color=rgb(0, 128, 0)
|
||||
DrawGlyphRun@5 rect=[16,101 10x18] translation=[16,114.796875] color=rgb(0, 0, 0)
|
||||
CompositorWheelHitTestTarget@7 target_scroll_frame_index=0 rect=[221,16 150x80]
|
||||
FillRect@7 rect=[221,16 150x80] color=rgb(0, 0, 255)
|
||||
DrawGlyphRun@7 rect=[221,16 11x18] translation=[221,29.796875] color=rgb(0, 0, 0)
|
||||
CompositorWheelHitTestTarget@8 target_scroll_frame_index=0 rect=[221,101 150x80]
|
||||
FillRect@8 rect=[221,101 150x80] color=rgb(255, 165, 0)
|
||||
DrawGlyphRun@8 rect=[221,101 12x18] translation=[221,114.796875] color=rgb(0, 0, 0)
|
||||
Restore@0
|
||||
|
|
|
|||
|
|
@ -3,6 +3,10 @@ AccumulatedVisualContext Tree:
|
|||
|
||||
DisplayList:
|
||||
SaveLayer@0
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=0 rect=[0,0 800x600]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[0,0 800x74.59375]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 784x53.59375]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[10,8 780x53.59375]
|
||||
Save@1
|
||||
AddClipRect@1 rect=[10,16 780x46]
|
||||
FillRect@1 rect=[10,8 780x54] color=rgb(0, 0, 255)
|
||||
|
|
@ -23,6 +27,9 @@ SaveLayer@0
|
|||
FillPath@1 path_bounding_rect=[10,16 780x1]
|
||||
FillPath@1 path_bounding_rect=[9,17 782x1]
|
||||
Restore@1
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[24,8 57.328125x18]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[24,31.59375 752x18]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[24,31.59375 752x18]
|
||||
DrawGlyphRun@1 rect=[26,8 54x18] translation=[26,21.796875] color=rgb(0, 0, 0)
|
||||
DrawGlyphRun@1 rect=[24,31 63x18] translation=[24,45.390625] color=rgb(0, 0, 0)
|
||||
Restore@0
|
||||
|
|
|
|||
|
|
@ -4,8 +4,14 @@ AccumulatedVisualContext Tree:
|
|||
|
||||
DisplayList:
|
||||
SaveLayer@0
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=0 rect=[0,0 800x600]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[0,0 800x121]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 784x100]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 200x100]
|
||||
CompositorWheelHitTestTarget@2 target_scroll_frame_index=0 rect=[8,8 150x50]
|
||||
FillRect@2 rect=[8,8 150x50] color=rgb(0, 128, 0)
|
||||
DrawGlyphRun@2 rect=[8,8 56x18] translation=[8,21.796875] color=rgb(0, 0, 0)
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=0 rect=[10,10 80x40]
|
||||
FillRect@0 rect=[10,10 80x40] color=rgb(255, 0, 0)
|
||||
DrawGlyphRun@0 rect=[10,10 44x18] translation=[10,23.796875] color=rgb(0, 0, 0)
|
||||
Restore@0
|
||||
|
|
|
|||
|
|
@ -3,10 +3,19 @@ AccumulatedVisualContext Tree:
|
|||
|
||||
DisplayList:
|
||||
SaveLayer@0
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=0 rect=[0,0 800x600]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[0,0 800x51]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 784x30]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 147x30]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 28.59375x30]
|
||||
FillRect@1 rect=[8,8 29x30] color=rgb(0, 0, 0)
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[37.59375,8 28.59375x30]
|
||||
FillRect@1 rect=[38,8 28x30] color=rgb(0, 0, 0)
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[67.1875,8 28.59375x30]
|
||||
FillRect@1 rect=[67,8 29x30] color=rgb(0, 0, 0)
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[96.78125,8 28.59375x30]
|
||||
FillRect@1 rect=[97,8 28x30] color=rgb(0, 0, 0)
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[126.375,8 28.59375x30]
|
||||
FillRect@1 rect=[126,8 29x30] color=rgb(0, 0, 0)
|
||||
Restore@0
|
||||
|
||||
|
|
|
|||
|
|
@ -5,8 +5,15 @@ AccumulatedVisualContext Tree:
|
|||
|
||||
DisplayList:
|
||||
SaveLayer@0
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=0 rect=[0,0 800x600]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[0,0 800x43]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 784x22]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 784x22]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 102x22]
|
||||
FillRect@1 rect=[8,8 102x22] color=rgb(255, 255, 255)
|
||||
FillPath@1 path_bounding_rect=[8,8 102x22]
|
||||
CompositorWheelHitTestTarget@2 target_scroll_frame_index=0 rect=[9,9 100x20]
|
||||
CompositorWheelHitTestTarget@2 target_scroll_frame_index=0 rect=[11,10 96x18]
|
||||
DrawGlyphRun@3 rect=[11,10 37x18] translation=[11,23.796875] color=rgb(0, 0, 0)
|
||||
FillRect@3 rect=[11,10 1x18] color=rgb(0, 0, 0)
|
||||
FillPath@1 path_bounding_rect=[6,6 106x26]
|
||||
|
|
|
|||
|
|
@ -7,10 +7,20 @@ AccumulatedVisualContext Tree:
|
|||
|
||||
DisplayList:
|
||||
SaveLayer@0
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=0 rect=[0,0 800x600]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[0,0 800x45]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 784x24]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 784x24]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 202x22]
|
||||
FillRect@1 rect=[8,8 202x22] color=rgb(255, 255, 255)
|
||||
FillPath@1 path_bounding_rect=[8,8 202x22]
|
||||
CompositorWheelHitTestTarget@2 target_scroll_frame_index=0 rect=[9,9 200x20]
|
||||
CompositorWheelHitTestTarget@2 target_scroll_frame_index=0 rect=[11,10 196x18]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[218,8 202x22]
|
||||
FillRect@1 rect=[218,8 202x22] color=rgb(255, 255, 255)
|
||||
FillPath@1 path_bounding_rect=[218,8 202x22]
|
||||
CompositorWheelHitTestTarget@4 target_scroll_frame_index=0 rect=[219,9 200x20]
|
||||
CompositorWheelHitTestTarget@4 target_scroll_frame_index=0 rect=[221,10 196x18]
|
||||
DrawGlyphRun@1 rect=[210,14 8x18] translation=[210,27.796875] color=rgb(0, 0, 0)
|
||||
DrawGlyphRun@3 rect=[11,10 28x18] translation=[11,23.796875] color=rgb(0, 0, 0)
|
||||
DrawGlyphRun@5 rect=[221,10 28x18] translation=[221,23.796875] color=rgb(0, 0, 0)
|
||||
|
|
|
|||
|
|
@ -6,9 +6,16 @@ AccumulatedVisualContext Tree:
|
|||
|
||||
DisplayList:
|
||||
SaveLayer@0
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=0 rect=[0,0 800x600]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[0,0 800x123]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 784x102]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 784x102]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[118,8 102x102]
|
||||
FillPath@1 path_bounding_rect=[118,8 102x102]
|
||||
CompositorWheelHitTestTarget@4 target_scroll_frame_index=0 rect=[119,9 150x150]
|
||||
FillRect@4 rect=[119,9 150x150] color=rgb(173, 216, 230)
|
||||
DrawGlyphRun@4 rect=[119,9 55x18] translation=[119,22.796875] color=rgb(0, 0, 0)
|
||||
CompositorWheelHitTestTarget@2 target_scroll_frame_index=0 rect=[8,8 100x100]
|
||||
FillRect@2 rect=[8,8 100x100] color=rgb(255, 127, 80)
|
||||
DrawGlyphRun@2 rect=[8,8 88x18] translation=[8,21.796875] color=rgb(0, 0, 0)
|
||||
Restore@0
|
||||
|
|
|
|||
|
|
@ -4,6 +4,14 @@ AccumulatedVisualContext Tree:
|
|||
|
||||
DisplayList:
|
||||
SaveLayer@0
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=0 rect=[0,0 800x600]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[0,0 800x93]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 784x72]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 100x72]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 69.625x18]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,26 47.0625x18]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,44 60x18]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,62 36.46875x18]
|
||||
DrawGlyphRun@1 rect=[8,8 70x18] translation=[8,21.796875] color=rgb(0, 0, 255)
|
||||
DrawLine@1 from=[8,25] to=[78,25] color=rgb(0, 0, 255) thickness=2
|
||||
DrawGlyphRun@1 rect=[8,26 48x18] translation=[8,39.796875] color=rgb(0, 0, 255)
|
||||
|
|
@ -20,6 +28,14 @@ AccumulatedVisualContext Tree:
|
|||
|
||||
DisplayList:
|
||||
SaveLayer@0
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=0 rect=[0,0 800x600]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[0,0 800x93]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 784x72]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 100x72]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 69.625x18]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,26 47.0625x18]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,44 60x18]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,62 36.46875x18]
|
||||
DrawGlyphRun@1 rect=[8,8 70x18] translation=[8,21.796875] color=rgb(255, 0, 0)
|
||||
DrawLine@1 from=[8,25] to=[78,25] color=rgb(255, 0, 0) thickness=2
|
||||
DrawGlyphRun@1 rect=[8,26 48x18] translation=[8,39.796875] color=rgb(255, 0, 0)
|
||||
|
|
|
|||
|
|
@ -10,15 +10,25 @@ AccumulatedVisualContext Tree:
|
|||
|
||||
DisplayList:
|
||||
SaveLayer@0
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=0 rect=[0,0 800x600]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[0,0 800x295]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 784x274]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 324x274]
|
||||
FillPath@1 path_bounding_rect=[8,8 324x274]
|
||||
CompositorWheelHitTestTarget@2 target_scroll_frame_index=0 rect=[20,20 145x250]
|
||||
FillPath@2 path_bounding_rect=[20,20 145x250]
|
||||
CompositorWheelHitTestTarget@2 target_scroll_frame_index=0 rect=[175,20 145x250]
|
||||
FillPath@2 path_bounding_rect=[175,20 145x250]
|
||||
CompositorWheelHitTestTarget@4 target_scroll_frame_index=0 rect=[26,26 133x40]
|
||||
FillRect@4 rect=[26,26 133x40] color=rgb(255, 136, 136)
|
||||
DrawGlyphRun@4 rect=[26,26 20x18] translation=[26,39.796875] color=rgb(0, 0, 0)
|
||||
CompositorWheelHitTestTarget@5 target_scroll_frame_index=0 rect=[26,71 133x40]
|
||||
FillRect@5 rect=[26,71 133x40] color=rgb(136, 255, 136)
|
||||
DrawGlyphRun@5 rect=[26,71 22x18] translation=[26,84.796875] color=rgb(0, 0, 0)
|
||||
CompositorWheelHitTestTarget@7 target_scroll_frame_index=0 rect=[181,26 133x40]
|
||||
FillRect@7 rect=[181,26 133x40] color=rgb(136, 136, 255)
|
||||
DrawGlyphRun@7 rect=[181,26 22x18] translation=[181,39.796875] color=rgb(0, 0, 0)
|
||||
CompositorWheelHitTestTarget@8 target_scroll_frame_index=0 rect=[181,71 133x40]
|
||||
FillRect@8 rect=[181,71 133x40] color=rgb(255, 255, 136)
|
||||
DrawGlyphRun@8 rect=[181,71 25x18] translation=[181,84.796875] color=rgb(0, 0, 0)
|
||||
Restore@0
|
||||
|
|
|
|||
|
|
@ -7,11 +7,17 @@ AccumulatedVisualContext Tree:
|
|||
|
||||
DisplayList:
|
||||
SaveLayer@0
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=0 rect=[0,0 800x600]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[0,0 800x175]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 784x154]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=2 rect=[8,8 204x154]
|
||||
CompositorScrollNode@1 scroll_frame_index=2 parent_scroll_frame_index=0 scrollport_rect=[10,10 200x150] max_scroll_offset=[102,0] is_viewport=false
|
||||
FillPath@1 path_bounding_rect=[8,8 204x154]
|
||||
CompositorWheelHitTestTarget@3 target_scroll_frame_index=3 rect=[10,10 302x102]
|
||||
CompositorScrollNode@3 scroll_frame_index=3 parent_scroll_frame_index=2 scrollport_rect=[11,11 300x100] max_scroll_offset=[100,0] is_viewport=false
|
||||
FillRect@3 rect=[10,10 302x102] color=rgb(255, 255, 224)
|
||||
FillPath@3 path_bounding_rect=[10,10 302x102]
|
||||
CompositorWheelHitTestTarget@5 target_scroll_frame_index=3 rect=[11,11 400x80]
|
||||
FillRect@5 rect=[11,11 400x80] color=rgb(240, 128, 128)
|
||||
DrawGlyphRun@5 rect=[11,11 178x18] translation=[11,24.796875] color=rgb(0, 0, 0)
|
||||
PaintScrollBar@3
|
||||
|
|
|
|||
|
|
@ -5,6 +5,11 @@ AccumulatedVisualContext Tree:
|
|||
|
||||
DisplayList:
|
||||
SaveLayer@0
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=0 rect=[0,0 800x600]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[0,0 800x221]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 784x200]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 200x200]
|
||||
CompositorWheelHitTestTarget@3 target_scroll_frame_index=0 rect=[8,8 100x100]
|
||||
FillRect@3 rect=[8,8 100x100] color=rgb(0, 0, 255)
|
||||
DrawGlyphRun@3 rect=[8,8 21x18] translation=[8,21.796875] color=rgb(0, 0, 0)
|
||||
Restore@0
|
||||
|
|
|
|||
|
|
@ -4,8 +4,14 @@ AccumulatedVisualContext Tree:
|
|||
|
||||
DisplayList:
|
||||
SaveLayer@0
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=0 rect=[0,0 800x600]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[0,0 800x221]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 784x200]
|
||||
CompositorWheelHitTestTarget@2 target_scroll_frame_index=0 rect=[8,8 200x200]
|
||||
FillRect@2 rect=[8,8 200x200] color=rgb(211, 211, 211)
|
||||
CompositorWheelHitTestTarget@2 target_scroll_frame_index=0 rect=[8,8 200x90]
|
||||
FillRect@2 rect=[8,8 200x90] color=rgb(173, 216, 230)
|
||||
CompositorWheelHitTestTarget@2 target_scroll_frame_index=0 rect=[33,33 100x50]
|
||||
FillRect@2 rect=[33,33 100x50] color=rgb(255, 127, 80)
|
||||
DrawGlyphRun@2 rect=[33,33 84x18] translation=[33,46.796875] color=rgb(0, 0, 0)
|
||||
Restore@0
|
||||
|
|
|
|||
|
|
@ -5,8 +5,14 @@ AccumulatedVisualContext Tree:
|
|||
|
||||
DisplayList:
|
||||
SaveLayer@0
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=0 rect=[0,0 800x600]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[0,0 800x321]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 784x300]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 300x300]
|
||||
FillRect@1 rect=[8,8 300x300] color=rgb(211, 211, 211)
|
||||
CompositorWheelHitTestTarget@2 target_scroll_frame_index=0 rect=[8,8 100x100]
|
||||
FillRect@2 rect=[8,8 100x100] color=rgb(173, 216, 230)
|
||||
CompositorWheelHitTestTarget@3 target_scroll_frame_index=0 rect=[13,13 100x100]
|
||||
FillRect@3 rect=[13,13 100x100] color=rgb(255, 127, 80)
|
||||
DrawGlyphRun@3 rect=[13,13 65x18] translation=[13,26.796875] color=rgb(0, 0, 0)
|
||||
Restore@0
|
||||
|
|
|
|||
|
|
@ -1,13 +1,19 @@
|
|||
AccumulatedVisualContext Tree:
|
||||
[1] scroll_frame_id=1 (PaintableWithLines(BlockContainer<PRE>#out))
|
||||
[2] clip=[33,33 180x100]
|
||||
[3] scroll_frame_id=2 (PaintableWithLines(BlockContainer(anonymous)))
|
||||
|
||||
DisplayList:
|
||||
SaveLayer@0
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=0 rect=[0,0 800x600]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[0,0 800x21]
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=0 rect=[20,20 204x154]
|
||||
FillRect@0 rect=[20,20 204x154] color=rgb(211, 211, 211)
|
||||
FillPath@0 path_bounding_rect=[20,20 204x154]
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=2 rect=[32,32 182x102]
|
||||
CompositorScrollNode@0 scroll_frame_index=2 parent_scroll_frame_index=0 scrollport_rect=[33,33 180x100] max_scroll_offset=[120,100] is_viewport=false
|
||||
FillPath@0 path_bounding_rect=[32,32 182x102]
|
||||
CompositorWheelHitTestTarget@3 target_scroll_frame_index=2 rect=[33,33 300x200]
|
||||
FillRect@3 rect=[33,33 300x200] color=rgb(240, 128, 128)
|
||||
DrawGlyphRun@3 rect=[33,33 179x18] translation=[33,46.796875] color=rgb(0, 0, 0)
|
||||
PaintScrollBar@0
|
||||
|
|
|
|||
|
|
@ -7,9 +7,17 @@ AccumulatedVisualContext Tree:
|
|||
|
||||
DisplayList:
|
||||
SaveLayer@0
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=0 rect=[0,0 800x600]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[0,0 800x103]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 784x82]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 784x82]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 102x82]
|
||||
FillPath@1 path_bounding_rect=[8,8 102x82]
|
||||
CompositorWheelHitTestTarget@3 target_scroll_frame_index=0 rect=[9,9 150x120]
|
||||
FillRect@3 rect=[9,9 150x120] color=rgb(240, 128, 128)
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[130,8 102x82]
|
||||
FillPath@1 path_bounding_rect=[130,8 102x82]
|
||||
CompositorWheelHitTestTarget@5 target_scroll_frame_index=0 rect=[131,9 150x120]
|
||||
FillRect@5 rect=[131,9 150x120] color=rgb(144, 238, 144)
|
||||
DrawGlyphRun@3 rect=[9,9 110x18] translation=[9,22.796875] color=rgb(0, 0, 0)
|
||||
DrawGlyphRun@5 rect=[131,9 119x18] translation=[131,22.796875] color=rgb(0, 0, 0)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
AccumulatedVisualContext Tree:
|
||||
[1] scroll_frame_id=1 (PaintableWithLines(BlockContainer<PRE>#out))
|
||||
[2] clip=[23,23 91x150]
|
||||
[3] scroll_frame_id=2 (PaintableWithLines(BlockContainer(anonymous)))
|
||||
[4] clip=[126,23 92x150]
|
||||
|
|
@ -8,16 +9,25 @@ AccumulatedVisualContext Tree:
|
|||
|
||||
DisplayList:
|
||||
SaveLayer@0
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=0 rect=[0,0 800x600]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[0,0 800x21]
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=0 rect=[10,10 324x224]
|
||||
FillRect@0 rect=[10,10 324x224] color=rgb(211, 211, 211)
|
||||
FillPath@0 path_bounding_rect=[10,10 324x224]
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=2 rect=[22,22 93.328125x152]
|
||||
CompositorScrollNode@0 scroll_frame_index=2 parent_scroll_frame_index=0 scrollport_rect=[23,23 91x150] max_scroll_offset=[108.671875,150] is_viewport=false
|
||||
FillPath@0 path_bounding_rect=[22,22 93x152]
|
||||
CompositorWheelHitTestTarget@3 target_scroll_frame_index=2 rect=[23,23 200x300]
|
||||
FillRect@3 rect=[23,23 200x300] color=rgb(240, 128, 128)
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=3 rect=[125.328125,22 93.328125x152]
|
||||
CompositorScrollNode@0 scroll_frame_index=3 parent_scroll_frame_index=0 scrollport_rect=[126,23 92x150] max_scroll_offset=[108.671875,150] is_viewport=false
|
||||
FillPath@0 path_bounding_rect=[125,22 94x152]
|
||||
CompositorWheelHitTestTarget@5 target_scroll_frame_index=3 rect=[126.328125,23 200x300]
|
||||
FillRect@5 rect=[126,23 200x300] color=rgb(144, 238, 144)
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=4 rect=[228.65625,22 93.328125x152]
|
||||
CompositorScrollNode@0 scroll_frame_index=4 parent_scroll_frame_index=0 scrollport_rect=[230,23 91x150] max_scroll_offset=[108.671875,150] is_viewport=false
|
||||
FillPath@0 path_bounding_rect=[229,22 93x152]
|
||||
CompositorWheelHitTestTarget@7 target_scroll_frame_index=4 rect=[229.65625,23 200x300]
|
||||
FillRect@7 rect=[230,23 200x300] color=rgb(173, 216, 230)
|
||||
DrawGlyphRun@3 rect=[23,23 71x18] translation=[23,36.796875] color=rgb(0, 0, 0)
|
||||
PaintScrollBar@0
|
||||
|
|
|
|||
|
|
@ -5,8 +5,14 @@ AccumulatedVisualContext Tree:
|
|||
|
||||
DisplayList:
|
||||
SaveLayer@0
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=0 rect=[0,0 800x600]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[0,0 800x101]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 784x80]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 784x80]
|
||||
CompositorWheelHitTestTarget@2 target_scroll_frame_index=0 rect=[8,8 80x80]
|
||||
FillRect@2 rect=[8,8 80x80] color=rgb(255, 0, 0)
|
||||
DrawGlyphRun@2 rect=[8,8 15x18] translation=[8,21.796875] color=rgb(0, 0, 0)
|
||||
CompositorWheelHitTestTarget@3 target_scroll_frame_index=0 rect=[98,8 80x80]
|
||||
FillRect@3 rect=[98,8 80x80] color=rgb(0, 0, 255)
|
||||
DrawGlyphRun@3 rect=[98,8 10x18] translation=[98,21.796875] color=rgb(0, 0, 0)
|
||||
Restore@0
|
||||
|
|
|
|||
|
|
@ -5,7 +5,12 @@ AccumulatedVisualContext Tree:
|
|||
|
||||
DisplayList:
|
||||
SaveLayer@0
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=0 rect=[0,0 800x600]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[0,0 800x125]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 784x104]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 204x104]
|
||||
FillPath@1 path_bounding_rect=[8,8 204x104]
|
||||
CompositorWheelHitTestTarget@3 target_scroll_frame_index=0 rect=[10,10 300x150]
|
||||
FillRect@3 rect=[10,10 300x150] color=rgb(240, 128, 128)
|
||||
DrawGlyphRun@3 rect=[10,10 38x18] translation=[10,23.796875] color=rgb(0, 0, 0)
|
||||
Restore@0
|
||||
|
|
|
|||
|
|
@ -4,6 +4,11 @@ AccumulatedVisualContext Tree:
|
|||
|
||||
DisplayList:
|
||||
SaveLayer@0
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=0 rect=[0,0 800x600]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[0,0 800x221]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 784x200]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,108 100x100]
|
||||
CompositorWheelHitTestTarget@6 target_scroll_frame_index=0 rect=[8,108 50x50]
|
||||
FillRect@6 rect=[8,108 50x50] color=rgb(255, 0, 0)
|
||||
Restore@0
|
||||
|
||||
|
|
|
|||
|
|
@ -5,6 +5,11 @@ AccumulatedVisualContext Tree:
|
|||
|
||||
DisplayList:
|
||||
SaveLayer@0
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=0 rect=[0,0 800x600]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[0,0 800x121]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 784x100]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 784x100]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 100x100]
|
||||
Save@2
|
||||
AddClipRect@2 rect=[-2,-2 119x119]
|
||||
SaveLayer@2
|
||||
|
|
@ -18,6 +23,8 @@ SaveLayer@0
|
|||
Save@2
|
||||
AddClipRect@2 rect=[-2,-2 119x119]
|
||||
SaveLayer@2
|
||||
CompositorWheelHitTestTarget@2 target_scroll_frame_index=0 rect=[8,8 100x100]
|
||||
CompositorWheelHitTestTarget@3 target_scroll_frame_index=0 rect=[8,8 100x100]
|
||||
FillRect@3 rect=[8,8 100x100] color=rgb(0, 0, 0)
|
||||
ApplyEffects@2 opacity=1 has_filter=false
|
||||
PaintNestedDisplayList@2 rect=[-2,-2 119x119]
|
||||
|
|
|
|||
|
|
@ -3,10 +3,17 @@ AccumulatedVisualContext Tree:
|
|||
|
||||
DisplayList:
|
||||
SaveLayer@0
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=0 rect=[0,0 800x600]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[0,0 800x221]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,13 784x200]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,13 784x200]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,13 300x200]
|
||||
Save@1
|
||||
AddClipRect@1 rect=[8,13 300x200]
|
||||
PaintNestedDisplayList@1 rect=[8,13 300x200]
|
||||
SaveLayer@0
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=0 rect=[0,0 300x200]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[0,0 300x200]
|
||||
FillPath@1 path_bounding_rect=[5,0 55x56]
|
||||
FillPath@1 path_bounding_rect=[1,50 55x55]
|
||||
Save@1
|
||||
|
|
|
|||
|
|
@ -4,6 +4,11 @@ AccumulatedVisualContext Tree:
|
|||
|
||||
DisplayList:
|
||||
SaveLayer@0
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=0 rect=[0,0 800x600]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[0,0 800x200]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[0,0 800x200]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[0,0 800x200]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[0,0 200x200]
|
||||
FillPath@2 path_bounding_rect=[10,10 100x100]
|
||||
Restore@0
|
||||
|
||||
|
|
|
|||
|
|
@ -6,6 +6,11 @@ AccumulatedVisualContext Tree:
|
|||
|
||||
DisplayList:
|
||||
SaveLayer@0
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=0 rect=[0,0 800x600]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[0,0 800x221]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 784x200]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 784x200]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 200x200]
|
||||
FillPath@4 path_bounding_rect=[8,8 100x100]
|
||||
Restore@0
|
||||
|
||||
|
|
|
|||
|
|
@ -3,6 +3,11 @@ AccumulatedVisualContext Tree:
|
|||
|
||||
DisplayList:
|
||||
SaveLayer@0
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=0 rect=[0,0 800x600]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[0,0 800x71]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 784x50]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 784x50]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 168.54688x50]
|
||||
FillRect@1 rect=[69,-17 47x100] color=rgba(61, 174, 233, 0.5)
|
||||
Save@1
|
||||
AddClipRect@1 rect=[8,-17 61x100]
|
||||
|
|
|
|||
|
|
@ -4,8 +4,15 @@ AccumulatedVisualContext Tree:
|
|||
|
||||
DisplayList:
|
||||
SaveLayer@0
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=0 rect=[0,0 800x600]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[0,0 800x57]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 784x36]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 784x36]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 106x36]
|
||||
FillRect@1 rect=[8,8 106x36] color=rgb(255, 255, 255)
|
||||
FillPath@1 path_bounding_rect=[8,8 106x36]
|
||||
CompositorWheelHitTestTarget@2 target_scroll_frame_index=0 rect=[11,11 100x15]
|
||||
CompositorWheelHitTestTarget@2 target_scroll_frame_index=0 rect=[11,11 100x15]
|
||||
DrawGlyphRun@2 rect=[11,11 30x15] translation=[11,22.390625] color=rgb(0, 0, 0)
|
||||
FillRect@2 rect=[11,11 1x15] color=rgb(0, 0, 0)
|
||||
FillPath@1 path_bounding_rect=[6,6 110x40]
|
||||
|
|
|
|||
|
|
@ -6,10 +6,17 @@ AccumulatedVisualContext Tree:
|
|||
|
||||
DisplayList:
|
||||
SaveLayer@0
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=0 rect=[0,0 800x600]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[0,0 800x81]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 784x60]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 784x60]
|
||||
CompositorWheelHitTestTarget@2 target_scroll_frame_index=0 rect=[8,8 60x60]
|
||||
FillRect@2 rect=[8,8 60x60] color=rgb(255, 0, 0)
|
||||
DrawGlyphRun@2 rect=[8,8 7x18] translation=[8,21.796875] color=rgb(0, 0, 0)
|
||||
CompositorWheelHitTestTarget@3 target_scroll_frame_index=0 rect=[73,8 60x60]
|
||||
FillRect@3 rect=[73,8 60x60] color=rgb(0, 128, 0)
|
||||
DrawGlyphRun@3 rect=[73,8 9x18] translation=[73,21.796875] color=rgb(0, 0, 0)
|
||||
CompositorWheelHitTestTarget@4 target_scroll_frame_index=0 rect=[138,8 60x60]
|
||||
FillRect@4 rect=[138,8 60x60] color=rgb(0, 0, 255)
|
||||
DrawGlyphRun@4 rect=[138,8 10x18] translation=[138,21.796875] color=rgb(0, 0, 0)
|
||||
Restore@0
|
||||
|
|
|
|||
|
|
@ -4,6 +4,10 @@ AccumulatedVisualContext Tree:
|
|||
|
||||
DisplayList:
|
||||
SaveLayer@0
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=0 rect=[0,0 800x600]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[0,0 800x121]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 784x100]
|
||||
CompositorWheelHitTestTarget@2 target_scroll_frame_index=0 rect=[8,8 100x100]
|
||||
FillRect@2 rect=[8,8 100x100] color=rgb(0, 0, 255)
|
||||
DrawGlyphRun@2 rect=[8,8 38x18] translation=[8,21.796875] color=rgb(0, 0, 0)
|
||||
Restore@0
|
||||
|
|
|
|||
|
|
@ -5,7 +5,12 @@ AccumulatedVisualContext Tree:
|
|||
|
||||
DisplayList:
|
||||
SaveLayer@0
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=0 rect=[0,0 800x600]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[0,0 800x221]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 784x200]
|
||||
CompositorWheelHitTestTarget@2 target_scroll_frame_index=0 rect=[8,8 200x200]
|
||||
FillRect@2 rect=[8,8 200x200] color=rgb(173, 216, 230)
|
||||
CompositorWheelHitTestTarget@3 target_scroll_frame_index=0 rect=[8,8 100x100]
|
||||
FillRect@3 rect=[8,8 100x100] color=rgb(255, 127, 80)
|
||||
DrawGlyphRun@3 rect=[8,8 52x18] translation=[8,21.796875] color=rgb(0, 0, 0)
|
||||
Restore@0
|
||||
|
|
|
|||
|
|
@ -6,7 +6,12 @@ AccumulatedVisualContext Tree:
|
|||
|
||||
DisplayList:
|
||||
SaveLayer@0
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=0 rect=[0,0 800x600]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[0,0 800x175]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 784x154]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 154x154]
|
||||
FillPath@1 path_bounding_rect=[8,8 154x154]
|
||||
CompositorWheelHitTestTarget@4 target_scroll_frame_index=0 rect=[10,10 200x200]
|
||||
FillRect@4 rect=[10,10 200x200] color=rgb(144, 238, 144)
|
||||
DrawGlyphRun@4 rect=[10,10 185x18] translation=[10,23.796875] color=rgb(0, 0, 0)
|
||||
Restore@0
|
||||
|
|
|
|||
|
|
@ -4,6 +4,11 @@ AccumulatedVisualContext Tree:
|
|||
|
||||
DisplayList:
|
||||
SaveLayer@0
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=0 rect=[0,0 800x600]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[0,0 800x221]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 784x200]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 200x200]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 50x50]
|
||||
FillRect@1 rect=[8,8 50x50] color=rgb(0, 0, 255)
|
||||
Restore@0
|
||||
|
||||
|
|
@ -13,6 +18,11 @@ AccumulatedVisualContext Tree:
|
|||
|
||||
DisplayList:
|
||||
SaveLayer@0
|
||||
CompositorWheelHitTestTarget@0 target_scroll_frame_index=0 rect=[0,0 800x600]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[0,0 800x221]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 784x200]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 200x200]
|
||||
CompositorWheelHitTestTarget@1 target_scroll_frame_index=0 rect=[8,8 50x50]
|
||||
FillRect@1 rect=[8,8 50x50] color=rgb(0, 0, 255)
|
||||
Restore@0
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,54 @@
|
|||
<!DOCTYPE html>
|
||||
<script src="../include.js"></script>
|
||||
<style>
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
#scroller {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
overflow: scroll;
|
||||
}
|
||||
|
||||
#spacer {
|
||||
height: 800px;
|
||||
}
|
||||
|
||||
#overlay {
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
background-color: red;
|
||||
}
|
||||
|
||||
#page-spacer {
|
||||
height: 2000px;
|
||||
margin-top: 200px;
|
||||
}
|
||||
</style>
|
||||
<div id="scroller"><div id="spacer"></div></div>
|
||||
<div id="overlay"></div>
|
||||
<div id="page-spacer"></div>
|
||||
<script>
|
||||
promiseTest(async () => {
|
||||
println(`uncovered scroller wheel target: ${internals.asyncScrollingStateWheelTargetAt(150, 150, 0, 100)}`);
|
||||
println(`covered scroller wheel target: ${internals.asyncScrollingStateWheelTargetAt(50, 50, 0, 100)}`);
|
||||
|
||||
overlay.style.pointerEvents = "none";
|
||||
println(`covered scroller with pointer-events none wheel target: ${internals.asyncScrollingStateWheelTargetAt(50, 50, 0, 100)}`);
|
||||
overlay.style.pointerEvents = "auto";
|
||||
|
||||
internals.wheel(50, 50, 0, 100);
|
||||
await animationFrame();
|
||||
|
||||
println(`scroller scrollTop after covered wheel: ${scroller.scrollTop}`);
|
||||
println(`window scrollY after covered wheel: ${window.scrollY}`);
|
||||
});
|
||||
</script>
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
<!DOCTYPE html>
|
||||
<script src="../include.js"></script>
|
||||
<style>
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
#scroller {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
overflow: scroll;
|
||||
}
|
||||
|
||||
#spacer {
|
||||
height: 800px;
|
||||
}
|
||||
|
||||
#overlay {
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
border-radius: 50px;
|
||||
background-color: red;
|
||||
}
|
||||
|
||||
#page-spacer {
|
||||
height: 2000px;
|
||||
margin-top: 200px;
|
||||
}
|
||||
</style>
|
||||
<div id="scroller"><div id="spacer"></div></div>
|
||||
<div id="overlay"></div>
|
||||
<div id="page-spacer"></div>
|
||||
<script>
|
||||
test(() => {
|
||||
println(`rounded corner wheel target: ${internals.asyncScrollingStateWheelTargetAt(5, 5, 0, 100)}`);
|
||||
println(`rounded center wheel target: ${internals.asyncScrollingStateWheelTargetAt(50, 50, 0, 100)}`);
|
||||
});
|
||||
</script>
|
||||
Loading…
Reference in a new issue