Added a property to control the detect word boundary behaviour (#1)

pull/1102/head
sourabhguptazeil 2 years ago committed by sourabhguptazeil
parent fdbebef79b
commit 5aa99ea7ce
  1. 15
      lib/src/widgets/editor.dart

@ -182,6 +182,7 @@ class QuillEditor extends StatefulWidget {
this.onImagePaste, this.onImagePaste,
this.customShortcuts, this.customShortcuts,
this.customActions, this.customActions,
this.detectWordBoundary = true,
Key? key}) Key? key})
: super(key: key); : super(key: key);
@ -399,6 +400,8 @@ class QuillEditor extends StatefulWidget {
final Map<LogicalKeySet, Intent>? customShortcuts; final Map<LogicalKeySet, Intent>? customShortcuts;
final Map<Type, Action<Intent>>? customActions; final Map<Type, Action<Intent>>? customActions;
final bool detectWordBoundary;
@override @override
QuillEditorState createState() => QuillEditorState(); QuillEditorState createState() => QuillEditorState();
} }
@ -413,7 +416,8 @@ class QuillEditorState extends State<QuillEditor>
void initState() { void initState() {
super.initState(); super.initState();
_selectionGestureDetectorBuilder = _selectionGestureDetectorBuilder =
_QuillEditorSelectionGestureDetectorBuilder(this); _QuillEditorSelectionGestureDetectorBuilder(this,
widget.detectWordBoundary);
} }
@override @override
@ -591,10 +595,11 @@ class QuillEditorState extends State<QuillEditor>
class _QuillEditorSelectionGestureDetectorBuilder class _QuillEditorSelectionGestureDetectorBuilder
extends EditorTextSelectionGestureDetectorBuilder { extends EditorTextSelectionGestureDetectorBuilder {
_QuillEditorSelectionGestureDetectorBuilder(this._state) _QuillEditorSelectionGestureDetectorBuilder(this._state, this._detectWordBoundary)
: super(delegate: _state); : super(delegate: _state);
final QuillEditorState _state; final QuillEditorState _state;
final bool _detectWordBoundary;
@override @override
void onForcePressStart(ForcePressDetails details) { void onForcePressStart(ForcePressDetails details) {
@ -712,9 +717,15 @@ class _QuillEditorSelectionGestureDetectorBuilder
case PointerDeviceKind.unknown: case PointerDeviceKind.unknown:
// On macOS/iOS/iPadOS a touch tap places the cursor at the edge // On macOS/iOS/iPadOS a touch tap places the cursor at the edge
// of the word. // of the word.
if (_detectWordBoundary) {
renderEditor! renderEditor!
..selectWordEdge(SelectionChangedCause.tap) ..selectWordEdge(SelectionChangedCause.tap)
..onSelectionCompleted(); ..onSelectionCompleted();
} else {
renderEditor!
..selectPosition(cause: SelectionChangedCause.tap)
..onSelectionCompleted();
}
break; break;
case PointerDeviceKind.trackpad: case PointerDeviceKind.trackpad:
// TODO: Handle this case. // TODO: Handle this case.

Loading…
Cancel
Save