mirror of
https://github.com/bggRGjQaUbCoE/PiliPlus.git
synced 2026-07-24 20:40:11 +08:00
fix selection separator
Signed-off-by: dom <githubaccount56556@proton.me>
This commit is contained in:
@@ -14,15 +14,53 @@ index 97a41dafb8d..70c55832625 100644
|
||||
context.canvas.drawRect(textBox.toRect().shift(offset), selectionPaint);
|
||||
}
|
||||
}
|
||||
diff --git a/packages/flutter/lib/src/rendering/selection.dart b/packages/flutter/lib/src/rendering/selection.dart
|
||||
index a813e141dc4..78b9bb84c0e 100644
|
||||
--- a/packages/flutter/lib/src/rendering/selection.dart
|
||||
+++ b/packages/flutter/lib/src/rendering/selection.dart
|
||||
@@ -114,6 +114,8 @@ abstract class SelectionHandler implements ValueListenable<SelectionGeometry> {
|
||||
|
||||
/// The length of the content in this object.
|
||||
int get contentLength;
|
||||
+
|
||||
+ Object? get separator;
|
||||
}
|
||||
|
||||
/// This class stores the range information of the selection under a [Selectable]
|
||||
@@ -236,6 +238,8 @@ class SelectedContent with Diagnosticable {
|
||||
/// See also:
|
||||
/// * [SelectableRegion], which provides an overview of selection system.
|
||||
mixin Selectable implements SelectionHandler {
|
||||
+ Object? get separator => null;
|
||||
+
|
||||
/// {@macro flutter.rendering.RenderObject.getTransformTo}
|
||||
Matrix4 getTransformTo(RenderObject? ancestor);
|
||||
|
||||
diff --git a/packages/flutter/lib/src/widgets/scrollable.dart b/packages/flutter/lib/src/widgets/scrollable.dart
|
||||
index 9df2d633f16..54d30883245 100644
|
||||
--- a/packages/flutter/lib/src/widgets/scrollable.dart
|
||||
+++ b/packages/flutter/lib/src/widgets/scrollable.dart
|
||||
@@ -1177,6 +1177,9 @@ class _ScrollableSelectionContainerDelegate extends MultiSelectableSelectionCont
|
||||
_position.addListener(_scheduleLayoutChange);
|
||||
}
|
||||
|
||||
+ @override
|
||||
+ Object separator = '\n';
|
||||
+
|
||||
// Pointer drag is a single point, it should not have a size.
|
||||
static const double _kDefaultDragTargetSize = 0;
|
||||
|
||||
diff --git a/packages/flutter/lib/src/widgets/selectable_region.dart b/packages/flutter/lib/src/widgets/selectable_region.dart
|
||||
index 59de8bae20b..17220a77d04 100644
|
||||
index 59de8bae20b..39bfeb2b4f0 100644
|
||||
--- a/packages/flutter/lib/src/widgets/selectable_region.dart
|
||||
+++ b/packages/flutter/lib/src/widgets/selectable_region.dart
|
||||
@@ -402,8 +402,10 @@ class SelectableRegionState extends State<SelectableRegion>
|
||||
@@ -401,9 +401,11 @@ class SelectableRegionState extends State<SelectableRegion>
|
||||
final LayerLink _startHandleLayerLink = LayerLink();
|
||||
final LayerLink _endHandleLayerLink = LayerLink();
|
||||
final LayerLink _toolbarLayerLink = LayerLink();
|
||||
final StaticSelectionContainerDelegate _selectionDelegate = StaticSelectionContainerDelegate();
|
||||
+ StaticSelectionContainerDelegate get selectionDelegate => _selectionDelegate;
|
||||
- final StaticSelectionContainerDelegate _selectionDelegate = StaticSelectionContainerDelegate();
|
||||
+ final StaticSelectionContainerDelegate _selectionDelegate = StaticSelectionContainerDelegate(separator: '\n');
|
||||
+ StaticSelectionContainerDelegate get selectionDelegate => _selectionDelegate;
|
||||
// there should only ever be one selectable, which is the SelectionContainer.
|
||||
Selectable? _selectable;
|
||||
+ Selectable? get selectable => _selectable;
|
||||
@@ -146,15 +184,48 @@ index 59de8bae20b..17220a77d04 100644
|
||||
}
|
||||
},
|
||||
child: CompositedTransformTarget(
|
||||
@@ -2822,7 +2796,10 @@ abstract class MultiSelectableSelectionContainerDelegate extends SelectionContai
|
||||
@@ -2087,6 +2061,11 @@ class _DirectionallyExtendCaretSelectionAction<T extends DirectionalCaretMovemen
|
||||
/// * [MultiSelectableSelectionContainerDelegate], for the class that provides
|
||||
/// the main implementation details of this [SelectionContainerDelegate].
|
||||
class StaticSelectionContainerDelegate extends MultiSelectableSelectionContainerDelegate {
|
||||
+ StaticSelectionContainerDelegate({this.separator});
|
||||
+
|
||||
+ @override
|
||||
+ final Object? separator;
|
||||
+
|
||||
/// The set of [Selectable]s that have received start events.
|
||||
final Set<Selectable> _hasReceivedStartEvent = <Selectable>{};
|
||||
|
||||
@@ -2822,8 +2801,17 @@ abstract class MultiSelectableSelectionContainerDelegate extends SelectionContai
|
||||
return null;
|
||||
}
|
||||
final buffer = StringBuffer();
|
||||
- for (final selection in selections) {
|
||||
+ for (final (i, selection) in selections.indexed) {
|
||||
+ if (i != 0) {
|
||||
+ buffer.write('\n');
|
||||
- buffer.write(selection.plainText);
|
||||
+ if (separator != null) {
|
||||
+ for (final (i, selection) in selections.indexed) {
|
||||
+ if (i != 0) {
|
||||
+ buffer.write(separator);
|
||||
+ }
|
||||
+ buffer.write(selection.plainText);
|
||||
+ }
|
||||
+ } else {
|
||||
+ for (final selection in selections) {
|
||||
+ buffer.write(selection.plainText);
|
||||
+ }
|
||||
buffer.write(selection.plainText);
|
||||
}
|
||||
return SelectedContent(plainText: buffer.toString());
|
||||
}
|
||||
diff --git a/packages/flutter/lib/src/widgets/selection_container.dart b/packages/flutter/lib/src/widgets/selection_container.dart
|
||||
index 5d5a2386a7a..92e7d1eb70a 100644
|
||||
--- a/packages/flutter/lib/src/widgets/selection_container.dart
|
||||
+++ b/packages/flutter/lib/src/widgets/selection_container.dart
|
||||
@@ -270,6 +270,8 @@ class SelectionRegistrarScope extends InheritedWidget {
|
||||
/// This delegate needs to implement [SelectionRegistrar] to register
|
||||
/// [Selectable]s in the [SelectionContainer] subtree.
|
||||
abstract class SelectionContainerDelegate implements SelectionHandler, SelectionRegistrar {
|
||||
+ Object? get separator => null;
|
||||
+
|
||||
BuildContext? _selectionContainerContext;
|
||||
|
||||
/// Gets the paint transform from the [Selectable] child to
|
||||
|
||||
Reference in New Issue
Block a user