Commit 9040acb9 authored by Sergey Ulanov's avatar Sergey Ulanov Committed by Commit Bot

Revert "[Fuchsia] remove input node from ScenicWindow"

This reverts commit ef78a44e.

Reason for revert: input node is still needed. It worked correctly without due to a bug in Scenic.

Original change's description:
> [Fuchsia] remove input node from ScenicWindow
>
> Input node doesn't do anything. Scenic directs input events to
> the Browser's session, since this is the session that owns the View.
>
> Change-Id: I34337c8dc98668fd432fb0ac413e19dbc9338b92
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1704940
> Commit-Queue: Sergey Ulanov <sergeyu@chromium.org>
> Reviewed-by: Michael Spang <spang@chromium.org>
> Reviewed-by: Wez <wez@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#678057}

Bug: fuchsia:37760
Change-Id: Ife02bdda703c00ed982b53230994ef1f90f7e867
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1838379Reviewed-by: default avatarWez <wez@chromium.org>
Reviewed-by: default avatarMichael Spang <spang@chromium.org>
Commit-Queue: Sergey Ulanov <sergeyu@chromium.org>
Commit-Queue: Wez <wez@chromium.org>
Auto-Submit: Sergey Ulanov <sergeyu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#702549}
parent 965e8c91
......@@ -36,6 +36,7 @@ ScenicWindow::ScenicWindow(ScenicWindowManager* window_manager,
std::move(view_ref_pair.view_ref),
"chromium window"),
node_(&scenic_session_),
input_node_(&scenic_session_),
render_node_(&scenic_session_) {
scenic_session_.set_error_handler(
fit::bind_member(this, &ScenicWindow::OnScenicError));
......@@ -47,6 +48,9 @@ ScenicWindow::ScenicWindow(ScenicWindowManager* window_manager,
// get the device pixel ratio for the screen.
node_.SetEventMask(fuchsia::ui::gfx::kMetricsEventMask);
// Add input shape.
node_.AddChild(input_node_);
// Add rendering subtree. Hit testing is disabled to prevent GPU process from
// receiving input.
render_node_.SetHitTestBehavior(fuchsia::ui::gfx::HitTestBehavior::kSuppress);
......@@ -193,6 +197,10 @@ void ScenicWindow::UpdateSize() {
// Scale the render node so that surface rect can always be 1x1.
render_node_.SetScale(size_dips_.width(), size_dips_.height(), 1.f);
// Resize input node to cover the whole surface.
input_node_.SetShape(scenic::Rectangle(&scenic_session_, size_dips_.width(),
size_dips_.height()));
// This is necessary when using vulkan because ImagePipes are presented
// separately and we need to make sure our sizes change is committed.
scenic_session_.Present(
......
......@@ -105,6 +105,9 @@ class COMPONENT_EXPORT(OZONE) ScenicWindow
// Entity node for the |view_|.
scenic::EntityNode node_;
// Node in |scenic_session_| for receiving input that hits within our View.
scenic::ShapeNode input_node_;
// Node in |scenic_session_| for rendering (hit testing disabled).
scenic::EntityNode render_node_;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment