Unverified Commit 1196dbe9 authored by jslavitz's avatar jslavitz Committed by GitHub

Fixes a cursor offset mistake for Material on iOS (#27851)

* Fixes offset and unblocks roll
parent a5af29e8
......@@ -110,11 +110,6 @@ class CupertinoButton extends StatefulWidget {
/// Defaults to round corners of 8 logical pixels.
final BorderRadius borderRadius;
/// The shape of the button.
///
/// Defaults to a super ellipse with
// final ShapeBorder shape;
final bool _filled;
/// Whether the button is enabled or disabled. Buttons are disabled by default. To
......
......@@ -778,7 +778,7 @@ class _TextFieldState extends State<TextField> with AutomaticKeepAliveClientMixi
//
// This value is in device pixels, not logical pixels as is typically used
// throughout the codebase.
const int _iOSHorizontalOffset = 2;
const int _iOSHorizontalOffset = -2;
cursorOffset = Offset(_iOSHorizontalOffset / MediaQuery.of(context).devicePixelRatio, 0);
break;
......
......@@ -4326,14 +4326,14 @@ void main() {
expect(lastCharEndpoint.length, 1);
// The last character is now on screen.
expect(lastCharEndpoint[0].point.dx, moreOrLessEquals(797.3333129882812));
expect(lastCharEndpoint[0].point.dx, moreOrLessEquals(798.6666870117188));
final List<TextSelectionPoint> firstCharEndpoint = renderEditable.getEndpointsForSelection(
const TextSelection.collapsed(offset: 0), // First character's position.
);
expect(firstCharEndpoint.length, 1);
// The first character is now offscreen to the left.
expect(firstCharEndpoint[0].point.dx, moreOrLessEquals(-258.66668701171875));
expect(firstCharEndpoint[0].point.dx, moreOrLessEquals(-257.33331298828125));
});
testWidgets(
......
......@@ -512,7 +512,9 @@ void main() {
expect(controller.selection.baseOffset, text.length);
});
testWidgets('Floating cursor is painted', (WidgetTester tester) async {
testWidgets('Floating cursor is painted on iOS', (WidgetTester tester) async {
final TextEditingController controller = TextEditingController();
const TextStyle textStyle = TextStyle();
const String text = 'hello world this is fun and cool and awesome!';
controller.text = text;
final FocusNode focusNode = FocusNode();
......@@ -544,7 +546,7 @@ void main() {
editableTextState.updateFloatingCursor(
RawFloatingCursorPoint(
state: FloatingCursorDragState.Update,
offset: const Offset(20, 20),
offset: const Offset(20, 20)
),
);
await tester.pump();
......@@ -552,41 +554,45 @@ void main() {
expect(editable, paints
..rrect(
rrect: RRect.fromRectAndRadius(
Rect.fromLTRB(464.6666564941406, 2.0833332538604736, 466.6666564941406, 14.083333015441895),
const Radius.circular(2.0),
Rect.fromLTRB(463.3333435058594, 2.0833332538604736, 465.3333435058594, 14.083333015441895),
const Radius.circular(2.0)
),
color: const Color(0xff8e8e93))
color: const Color(0xff8e8e93),
)
..rrect(
rrect: RRect.fromRectAndRadius(
Rect.fromLTRB(465.1666564941406, 1.0833336114883423, 468.1666564941406, 15.083333969116211),
Rect.fromLTRB(463.8333435058594, 1.0833336114883423, 466.8333435058594, 15.083333969116211),
const Radius.circular(1.0),
),
color: const Color(0xbf2196f3))
color: const Color(0xbf2196f3),
)
);
// Moves the cursor right a few characters.
editableTextState.updateFloatingCursor(
RawFloatingCursorPoint(
state: FloatingCursorDragState.Update,
offset: const Offset(-250, 20)));
RawFloatingCursorPoint(
state: FloatingCursorDragState.Update,
offset: const Offset(-250, 20)
),
);
expect(find.byType(EditableText), paints
..rrect(
rrect: RRect.fromRectAndRadius(
Rect.fromLTRB(192.6666717529297, 2.0833332538604736, 194.6666717529297, 14.083333015441895),
const Radius.circular(2.0),
Rect.fromLTRB(191.3333282470703, 2.0833332538604736, 193.3333282470703, 14.083333015441895),
const Radius.circular(2.0)
),
color: const Color(0xff8e8e93))
color: const Color(0xff8e8e93)
)
..rrect(
rrect: RRect.fromRectAndRadius(
Rect.fromLTRB(195.16665649414062, 1.0833336114883423, 198.16665649414062, 15.083333969116211),
const Radius.circular(1.0),
),
color: const Color(0xbf2196f3))
Rect.fromLTRB(193.83334350585938, 1.0833336114883423, 196.83334350585938, 15.083333969116211),
const Radius.circular(1.0)),
color: const Color(0xbf2196f3),
)
);
editableTextState.updateFloatingCursor(RawFloatingCursorPoint(state: FloatingCursorDragState.End));
await tester.pumpAndSettle();
});
}
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