From bbabf4e25dbc9671668984ad1a9726f209e489ea Mon Sep 17 00:00:00 2001 From: Xin Yao Date: Tue, 13 Jul 2021 08:54:06 -0700 Subject: [PATCH] Refactor code for collectAllStyles --- lib/src/models/documents/document.dart | 16 ++++++++++------ lib/src/models/documents/nodes/line.dart | 5 ++--- lib/src/widgets/controller.dart | 9 ++++++--- lib/src/widgets/toolbar/clear_format_button.dart | 2 +- 4 files changed, 19 insertions(+), 13 deletions(-) diff --git a/lib/src/models/documents/document.dart b/lib/src/models/documents/document.dart index 010df462..71cdf487 100644 --- a/lib/src/models/documents/document.dart +++ b/lib/src/models/documents/document.dart @@ -119,13 +119,17 @@ class Document { return delta; } - Style collectStyle(int index, int len, bool collectAll) { + /// Only attributes applied to all characters within this range are + /// included in the result. + Style collectStyle(int index, int len) { final res = queryChild(index); - if (collectAll) { - return (res.node as Line).collectAllStyle(res.offset, len); - } else { - return (res.node as Line).collectStyle(res.offset, len); - } + return (res.node as Line).collectStyle(res.offset, len); + } + + /// Returns all style for any character within the specified text range. + Style collectAllStyles(int index, int len) { + final res = queryChild(index); + return (res.node as Line).collectAllStyles(res.offset, len); } ChildQuery queryChild(int offset) { diff --git a/lib/src/models/documents/nodes/line.dart b/lib/src/models/documents/nodes/line.dart index a67a17da..0abbf920 100644 --- a/lib/src/models/documents/nodes/line.dart +++ b/lib/src/models/documents/nodes/line.dart @@ -370,7 +370,7 @@ class Line extends Container { } /// Returns all style for any character within the specified text range. - Style collectAllStyle(int offset, int len) { + Style collectAllStyles(int offset, int len) { final local = math.min(length - offset, len); var result = Style(); @@ -394,11 +394,10 @@ class Line extends Container { final remaining = len - local; if (remaining > 0) { - final rest = nextLine!.collectAllStyle(0, remaining); + final rest = nextLine!.collectAllStyles(0, remaining); result = result.mergeAll(rest); } return result; } - } diff --git a/lib/src/widgets/controller.dart b/lib/src/widgets/controller.dart index 9e2e01b0..bed27b90 100644 --- a/lib/src/widgets/controller.dart +++ b/lib/src/widgets/controller.dart @@ -55,15 +55,18 @@ class QuillController extends ChangeNotifier { selection: selection, ); + /// Only attributes applied to all characters within this range are + /// included in the result. Style getSelectionStyle() { return document - .collectStyle(selection.start, selection.end - selection.start, false) + .collectStyle(selection.start, selection.end - selection.start) .mergeAll(toggledStyle); } - Style getAllSelectionStyle() { + /// Returns all style for any character within the specified text range. + Style getAllSelectionStyles() { return document - .collectStyle(selection.start, selection.end - selection.start, true) + .collectAllStyles(selection.start, selection.end - selection.start) .mergeAll(toggledStyle); } diff --git a/lib/src/widgets/toolbar/clear_format_button.dart b/lib/src/widgets/toolbar/clear_format_button.dart index ee049b41..597a211e 100644 --- a/lib/src/widgets/toolbar/clear_format_button.dart +++ b/lib/src/widgets/toolbar/clear_format_button.dart @@ -34,7 +34,7 @@ class _ClearFormatButtonState extends State { fillColor: fillColor, onPressed: () { for (final k - in widget.controller.getAllSelectionStyle().attributes.values) { + in widget.controller.getAllSelectionStyles().attributes.values) { widget.controller.formatSelection(Attribute.clone(k, null)); } });