Skip to content

Commit

Permalink
Reverts "Remove physical geometry" (#47862)
Browse files Browse the repository at this point in the history
Reverts #47825
Initiated by: zanderso
This change reverts the following previous change:
Original Description:
Looks like this was proactively added in #20496, but never wired up to anything on any platform. It is also unused in framework and customer code; we never exposed this on e.g. MediaQuery.

Related framework PR: flutter/flutter#138103 (Checks will fail until that PR is submitted).
  • Loading branch information
auto-submit[bot] committed Nov 9, 2023
1 parent 87cebd9 commit 35cad36
Show file tree
Hide file tree
Showing 7 changed files with 38 additions and 8 deletions.
2 changes: 1 addition & 1 deletion lib/ui/hooks.dart
Expand Up @@ -135,7 +135,7 @@ _ViewConfiguration _buildViewConfiguration(
) {
return _ViewConfiguration(
devicePixelRatio: devicePixelRatio,
size: Size(width, height),
geometry: Rect.fromLTWH(0.0, 0.0, width, height),
viewPadding: ViewPadding._(
top: viewPaddingTop,
right: viewPaddingRight,
Expand Down
9 changes: 5 additions & 4 deletions lib/ui/platform_dispatcher.dart
Expand Up @@ -1462,7 +1462,7 @@ class _PlatformConfiguration {
class _ViewConfiguration {
const _ViewConfiguration({
this.devicePixelRatio = 1.0,
this.size = Size.zero,
this.geometry = Rect.zero,
this.viewInsets = ViewPadding.zero,
this.viewPadding = ViewPadding.zero,
this.systemGestureInsets = ViewPadding.zero,
Expand All @@ -1479,8 +1479,9 @@ class _ViewConfiguration {
/// The pixel density of the output surface.
final double devicePixelRatio;

/// The size requested for the view in logical pixels.
final Size size;
/// The geometry requested for the view on the screen or within its parent
/// window, in logical pixels.
final Rect geometry;

/// The number of physical pixels on each side of the display rectangle into
/// which the view can render, but over which the operating system will likely
Expand Down Expand Up @@ -1550,7 +1551,7 @@ class _ViewConfiguration {

@override
String toString() {
return '$runtimeType[size: $size]';
return '$runtimeType[geometry: $geometry]';
}
}

Expand Down
23 changes: 22 additions & 1 deletion lib/ui/window.dart
Expand Up @@ -138,6 +138,25 @@ class FlutterView {
/// The value here is equal to the value exposed on [display].
double get devicePixelRatio => _viewConfiguration.devicePixelRatio;

/// The dimensions and location of the rectangle into which the scene rendered
/// in this view will be drawn on the screen, in physical pixels.
///
/// When this changes, [PlatformDispatcher.onMetricsChanged] is called.
///
/// At startup, the size and location of the view may not be known before Dart
/// code runs. If this value is observed early in the application lifecycle,
/// it may report [Rect.zero].
///
/// This value does not take into account any on-screen keyboards or other
/// system UI. The [padding] and [viewInsets] properties provide a view into
/// how much of each side of the view may be obscured by system UI.
///
/// See also:
///
/// * [WidgetsBindingObserver], for a mechanism at the widgets layer to
/// observe when this value changes.
Rect get physicalGeometry => _viewConfiguration.geometry;

/// The dimensions of the rectangle into which the scene rendered in this view
/// will be drawn on the screen, in physical pixels.
///
Expand All @@ -160,9 +179,11 @@ class FlutterView {
///
/// See also:
///
/// * [physicalGeometry], which reports the location of the view as well as
/// its size.
/// * [WidgetsBindingObserver], for a mechanism at the widgets layer to
/// observe when this value changes.
Size get physicalSize => _viewConfiguration.size;
Size get physicalSize => _viewConfiguration.geometry.size;

/// The number of physical pixels on each side of the display rectangle into
/// which the view can render, but over which the operating system will likely
Expand Down
6 changes: 5 additions & 1 deletion lib/web_ui/lib/src/engine/platform_dispatcher.dart
Expand Up @@ -1340,6 +1340,7 @@ class ViewConfiguration {
const ViewConfiguration({
this.view,
this.devicePixelRatio = 1.0,
this.geometry = ui.Rect.zero,
this.visible = false,
this.viewInsets = ui.ViewPadding.zero as ViewPadding,
this.viewPadding = ui.ViewPadding.zero as ViewPadding,
Expand All @@ -1352,6 +1353,7 @@ class ViewConfiguration {
ViewConfiguration copyWith({
EngineFlutterView? view,
double? devicePixelRatio,
ui.Rect? geometry,
bool? visible,
ViewPadding? viewInsets,
ViewPadding? viewPadding,
Expand All @@ -1363,6 +1365,7 @@ class ViewConfiguration {
return ViewConfiguration(
view: view ?? this.view,
devicePixelRatio: devicePixelRatio ?? this.devicePixelRatio,
geometry: geometry ?? this.geometry,
visible: visible ?? this.visible,
viewInsets: viewInsets ?? this.viewInsets,
viewPadding: viewPadding ?? this.viewPadding,
Expand All @@ -1375,6 +1378,7 @@ class ViewConfiguration {

final EngineFlutterView? view;
final double devicePixelRatio;
final ui.Rect geometry;
final bool visible;
final ViewPadding viewInsets;
final ViewPadding viewPadding;
Expand All @@ -1385,7 +1389,7 @@ class ViewConfiguration {

@override
String toString() {
return '$runtimeType[view: $view]';
return '$runtimeType[view: $view, geometry: $geometry]';
}
}

Expand Down
3 changes: 3 additions & 0 deletions lib/web_ui/lib/src/engine/window.dart
Expand Up @@ -73,6 +73,9 @@ base class EngineFlutterView implements ui.FlutterView {
late final PlatformViewMessageHandler platformViewMessageHandler =
PlatformViewMessageHandler(platformViewsContainer: dom.platformViewsHost);

@override
ui.Rect get physicalGeometry => _viewConfiguration.geometry;

@override
ui.Size get physicalSize {
if (_physicalSize == null) {
Expand Down
1 change: 1 addition & 0 deletions lib/web_ui/lib/window.dart
Expand Up @@ -15,6 +15,7 @@ abstract class FlutterView {
PlatformDispatcher get platformDispatcher;
int get viewId;
double get devicePixelRatio;
Rect get physicalGeometry;
Size get physicalSize;
ViewPadding get viewInsets;
ViewPadding get viewPadding;
Expand Down
2 changes: 1 addition & 1 deletion shell/common/fixtures/shell_test.dart
Expand Up @@ -530,7 +530,7 @@ List<int> getCurrentViewWidths() {
final List<int> result = <int>[];
for (final FlutterView view in PlatformDispatcher.instance.views) {
result.add(view.viewId);
result.add(view.physicalSize.width.round());
result.add(view.physicalGeometry.width.round());
}
return result;
}
Expand Down

0 comments on commit 35cad36

Please sign in to comment.