Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Address comments
  • Loading branch information
dkwingsmt committed Dec 11, 2023
commit 9f70c4c385e93cb9f841a94a8b25e10d2641cb75
4 changes: 1 addition & 3 deletions lib/ui/window/pointer_data_packet_converter_unittests.cc
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,6 @@
namespace flutter {
namespace testing {

static constexpr int64_t kImplicitViewId = 0;

void CreateSimulatedPointerData(PointerData& data, // NOLINT
PointerData::Change change,
int64_t device,
Expand Down Expand Up @@ -131,7 +129,7 @@ void CreateSimulatedTrackpadGestureData(PointerData& data, // NOLINT
data.pan_delta_y = 0.0;
data.scale = scale;
data.rotation = rotation;
data.view_id = kImplicitViewId;
data.view_id = 0;
}

void UnpackPointerPacket(std::vector<PointerData>& output, // NOLINT
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -260,7 +260,7 @@ private void addPointerForIndex(
}
// TODO(dkwingsmt): Use the correct source view ID once Android supports
// multiple views.
// https://github.com/flutter/flutter/issues/138167
// https://github.com/flutter/flutter/issues/134405
final int viewId = IMPLICIT_VIEW_ID;
final int pointerId = event.getPointerId(pointerIndex);

Expand Down
11 changes: 10 additions & 1 deletion shell/platform/embedder/embedder.h
Original file line number Diff line number Diff line change
Expand Up @@ -266,6 +266,15 @@ typedef enum {

typedef struct _FlutterEngine* FLUTTER_API_SYMBOL(FlutterEngine);

/// Identifier for views.
///
/// The responsibility for generating view IDs lies with the embedding. The
/// engine does not assume any specifics about the generation algorithm,
/// including whether it utilizes the entire range of int64_t or permits the
/// use of zero or negative IDs. The only requirement is that at any given
/// moment, no two views share the same ID.
typedef int64_t FlutterViewId;

typedef struct {
/// horizontal scale factor
double scaleX;
Expand Down Expand Up @@ -962,7 +971,7 @@ typedef struct {
/// The rotation of the pan/zoom in radians, where 0.0 is the initial angle.
double rotation;
/// The identifier of the view that received the pointer event.
int64_t view_id;
FlutterViewId view_id;
} FlutterPointerEvent;

typedef enum {
Expand Down
22 changes: 4 additions & 18 deletions shell/platform/windows/flutter_windows_view.cc
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,6 @@ namespace {
// for a window resize operation to complete.
constexpr std::chrono::milliseconds kWindowResizeTimeout{100};

// TODO(dkwingsmt): Use the correct view ID for pointer events once the Windows
// embedder supports multiple views.
// https://github.com/flutter/flutter/issues/138179
int64_t _viewIdForPointerEvent() {
return flutter::kFlutterImplicitViewId;
}

/// Returns true if the surface will be updated as part of the resize process.
///
/// This is called on window resize to determine if the platform thread needs
Expand Down Expand Up @@ -372,7 +365,6 @@ void FlutterWindowsView::SendPointerMove(double x,
FlutterPointerEvent event = {};
event.x = x;
event.y = y;
event.view_id = _viewIdForPointerEvent();

SetEventPhaseFromCursorButtonState(&event, state);
SendPointerEventWithData(event, state);
Expand All @@ -384,7 +376,6 @@ void FlutterWindowsView::SendPointerDown(double x,
FlutterPointerEvent event = {};
event.x = x;
event.y = y;
event.view_id = _viewIdForPointerEvent();

SetEventPhaseFromCursorButtonState(&event, state);
SendPointerEventWithData(event, state);
Expand All @@ -398,7 +389,6 @@ void FlutterWindowsView::SendPointerUp(double x,
FlutterPointerEvent event = {};
event.x = x;
event.y = y;
event.view_id = _viewIdForPointerEvent();

SetEventPhaseFromCursorButtonState(&event, state);
SendPointerEventWithData(event, state);
Expand All @@ -414,7 +404,6 @@ void FlutterWindowsView::SendPointerLeave(double x,
event.x = x;
event.y = y;
event.phase = FlutterPointerPhase::kRemove;
event.view_id = _viewIdForPointerEvent();
SendPointerEventWithData(event, state);
}

Expand All @@ -429,7 +418,6 @@ void FlutterWindowsView::SendPointerPanZoomStart(int32_t device_id,
event.x = x;
event.y = y;
event.phase = FlutterPointerPhase::kPanZoomStart;
event.view_id = _viewIdForPointerEvent();
SendPointerEventWithData(event, state);
}

Expand All @@ -448,7 +436,6 @@ void FlutterWindowsView::SendPointerPanZoomUpdate(int32_t device_id,
event.scale = scale;
event.rotation = rotation;
event.phase = FlutterPointerPhase::kPanZoomUpdate;
event.view_id = _viewIdForPointerEvent();
SendPointerEventWithData(event, state);
}

Expand All @@ -459,7 +446,6 @@ void FlutterWindowsView::SendPointerPanZoomEnd(int32_t device_id) {
event.x = state->pan_zoom_start_x;
event.y = state->pan_zoom_start_y;
event.phase = FlutterPointerPhase::kPanZoomEnd;
event.view_id = _viewIdForPointerEvent();
SendPointerEventWithData(event, state);
}

Expand Down Expand Up @@ -517,7 +503,6 @@ void FlutterWindowsView::SendScroll(double x,
event.signal_kind = FlutterPointerSignalKind::kFlutterPointerSignalKindScroll;
event.scroll_delta_x = delta_x * scroll_offset_multiplier;
event.scroll_delta_y = delta_y * scroll_offset_multiplier;
event.view_id = _viewIdForPointerEvent();
SetEventPhaseFromCursorButtonState(&event, state);
SendPointerEventWithData(event, state);
}
Expand All @@ -533,7 +518,6 @@ void FlutterWindowsView::SendScrollInertiaCancel(int32_t device_id,
event.y = y;
event.signal_kind =
FlutterPointerSignalKind::kFlutterPointerSignalKindScrollInertiaCancel;
event.view_id = _viewIdForPointerEvent();
SetEventPhaseFromCursorButtonState(&event, state);
SendPointerEventWithData(event, state);
}
Expand All @@ -550,7 +534,6 @@ void FlutterWindowsView::SendPointerEventWithData(
event.x = event_data.x;
event.y = event_data.y;
event.buttons = 0;
event.view_id = _viewIdForPointerEvent();
SendPointerEventWithData(event, state);
}

Expand All @@ -565,7 +548,10 @@ void FlutterWindowsView::SendPointerEventWithData(
event.device_kind = state->device_kind;
event.device = state->pointer_id;
event.buttons = state->buttons;
event.view_id = _viewIdForPointerEvent();
// TODO(dkwingsmt): Use the correct view ID for pointer events once the
// Windows embedder supports multiple views.
// https://github.com/flutter/flutter/issues/138179
event.view_id = flutter::kFlutterImplicitViewId;

// Set metadata that's always the same regardless of the event.
event.struct_size = sizeof(event);
Expand Down