mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
This reverts commit 0f8148ec16325493b1b48a21367b839167f940b9.
This commit is contained in:
parent
c26ed03c8a
commit
e170ea521c
@ -3703,10 +3703,7 @@ class RenderEditable extends RenderBox with RelayoutWhenSystemFontsChangeMixin {
|
||||
_clipRectLayer = null;
|
||||
_paintContents(context, offset);
|
||||
}
|
||||
final TextSelection? selection = this.selection;
|
||||
if (selection != null) {
|
||||
_paintHandleLayers(context, getEndpointsForSelection(selection));
|
||||
}
|
||||
_paintHandleLayers(context, getEndpointsForSelection(selection!));
|
||||
}
|
||||
|
||||
ClipRectLayer? _clipRectLayer;
|
||||
@ -4063,7 +4060,9 @@ class _FloatingCursorPainter extends RenderEditablePainter {
|
||||
assert(renderEditable != null);
|
||||
final TextSelection? selection = renderEditable.selection;
|
||||
|
||||
if (selection == null || !selection.isCollapsed || !selection.isValid)
|
||||
// TODO(LongCatIsLooong): skip painting the caret when the selection is
|
||||
// (-1, -1).
|
||||
if (selection == null || !selection.isCollapsed)
|
||||
return;
|
||||
|
||||
final Rect? floatingCursorRect = this.floatingCursorRect;
|
||||
|
||||
@ -412,51 +412,6 @@ void main() {
|
||||
expect(editable, paintsExactlyCountTimes(#drawRect, 1));
|
||||
});
|
||||
|
||||
test('does not paint the caret when selection is null', () async {
|
||||
final TextSelectionDelegate delegate = FakeEditableTextState();
|
||||
final ValueNotifier<bool> showCursor = ValueNotifier<bool>(true);
|
||||
final RenderEditable editable = RenderEditable(
|
||||
backgroundCursorColor: Colors.grey,
|
||||
selectionColor: Colors.black,
|
||||
paintCursorAboveText: true,
|
||||
textDirection: TextDirection.ltr,
|
||||
cursorColor: Colors.red,
|
||||
showCursor: showCursor,
|
||||
offset: ViewportOffset.zero(),
|
||||
textSelectionDelegate: delegate,
|
||||
text: const TextSpan(
|
||||
text: 'test',
|
||||
style: TextStyle(
|
||||
height: 1.0, fontSize: 10.0, fontFamily: 'Ahem',
|
||||
),
|
||||
),
|
||||
startHandleLayerLink: LayerLink(),
|
||||
endHandleLayerLink: LayerLink(),
|
||||
selection: const TextSelection.collapsed(
|
||||
offset: 2,
|
||||
affinity: TextAffinity.upstream,
|
||||
),
|
||||
);
|
||||
|
||||
layout(editable);
|
||||
|
||||
expect(
|
||||
editable,
|
||||
paints
|
||||
..paragraph()
|
||||
// Red collapsed cursor is painted, not a selection box.
|
||||
..rect(color: Colors.red[500]),
|
||||
);
|
||||
|
||||
// Let the RenderEditable paint again. Setting the selection to null should
|
||||
// prevent the caret from being painted.
|
||||
editable.selection = null;
|
||||
// Still paints the paragraph.
|
||||
expect(editable, paints..paragraph());
|
||||
// No longer paints the caret.
|
||||
expect(editable, isNot(paints..rect(color: Colors.red[500])));
|
||||
});
|
||||
|
||||
test('selects correct place with offsets', () {
|
||||
const String text = 'test\ntest';
|
||||
final TextSelectionDelegate delegate = FakeEditableTextState()
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user