diff --git a/lib/src/models/documents/nodes/line.dart b/lib/src/models/documents/nodes/line.dart index df9374a2..65e893f7 100644 --- a/lib/src/models/documents/nodes/line.dart +++ b/lib/src/models/documents/nodes/line.dart @@ -519,6 +519,7 @@ base class Line extends QuillContainer { int _getNodeText(Leaf node, StringBuffer buffer, int offset, int remaining) { final text = node.toPlainText(); if (text == Embed.kObjectReplacementCharacter) { + buffer.write(Embed.kObjectReplacementCharacter); return remaining - node.length; } diff --git a/lib/src/models/rules/insert.dart b/lib/src/models/rules/insert.dart index 9b0a3ea7..5a53fbdf 100644 --- a/lib/src/models/rules/insert.dart +++ b/lib/src/models/rules/insert.dart @@ -565,8 +565,8 @@ class PreserveInlineStylesRule extends InsertRule { if ((prev.data as String).endsWith('\n')) { if (prev.attributes != null) { - for (final key in prev.attributes!.keys) { - if (Attribute.blockKeys.contains(key)) { + for (final value in prev.attributes!.values) { + if (!(value as Attribute).isInline) { return null; } } diff --git a/lib/src/widgets/toolbar/base_button/base_value_button.dart b/lib/src/widgets/toolbar/base_button/base_value_button.dart index 6fc0acb8..670e2548 100644 --- a/lib/src/widgets/toolbar/base_button/base_value_button.dart +++ b/lib/src/widgets/toolbar/base_button/base_value_button.dart @@ -32,6 +32,13 @@ abstract class QuillToolbarCommonButtonState< String get tooltip => options.tooltip ?? baseButtonExtraOptions?.tooltip ?? defaultTooltip; + IconData get defaultIconData; + + IconData get iconData => + options.iconData ?? + context.quillToolbarBaseButtonOptions?.iconData ?? + defaultIconData; + double get iconSize => options.iconSize ?? baseButtonExtraOptions?.iconSize ?? kDefaultIconSize; diff --git a/lib/src/widgets/toolbar/buttons/clipboard_button.dart b/lib/src/widgets/toolbar/buttons/clipboard_button.dart index 93d1ba35..ab873b7d 100644 --- a/lib/src/widgets/toolbar/buttons/clipboard_button.dart +++ b/lib/src/widgets/toolbar/buttons/clipboard_button.dart @@ -91,7 +91,8 @@ class QuillToolbarClipboardButtonState ClipboardAction.paste => context.loc.paste, }; - IconData get _icon => switch (widget.clipboardAction) { + @override + IconData get defaultIconData => switch (widget.clipboardAction) { ClipboardAction.cut => Icons.cut_outlined, ClipboardAction.copy => Icons.copy_outlined, ClipboardAction.paste => Icons.paste_outlined, @@ -132,7 +133,7 @@ class QuillToolbarClipboardButtonState message: tooltip, child: QuillToolbarIconButton( icon: Icon( - _icon, + iconData, size: iconSize * iconButtonFactor, ), isSelected: false, diff --git a/lib/src/widgets/toolbar/buttons/color/color_button.dart b/lib/src/widgets/toolbar/buttons/color/color_button.dart index 5f553160..308c74c4 100644 --- a/lib/src/widgets/toolbar/buttons/color/color_button.dart +++ b/lib/src/widgets/toolbar/buttons/color/color_button.dart @@ -103,11 +103,9 @@ class QuillToolbarColorButtonState extends QuillToolbarColorBaseButtonState { super.dispose(); } - IconData get iconData { - return options.iconData ?? - baseButtonExtraOptions?.iconData ?? - (widget.isBackground ? Icons.format_color_fill : Icons.color_lens); - } + @override + IconData get defaultIconData => + widget.isBackground ? Icons.format_color_fill : Icons.color_lens; @override Widget build(BuildContext context) { @@ -140,7 +138,7 @@ class QuillToolbarColorButtonState extends QuillToolbarColorBaseButtonState { _showColorPicker(); afterButtonPressed?.call(); }, - iconColor: null, + iconColor: iconColor, iconColorBackground: iconColorBackground, fillColor: fillColor, fillColorBackground: fillColorBackground, diff --git a/lib/src/widgets/toolbar/buttons/font_family_button.dart b/lib/src/widgets/toolbar/buttons/font_family_button.dart index 3ed3e0d5..d9001748 100644 --- a/lib/src/widgets/toolbar/buttons/font_family_button.dart +++ b/lib/src/widgets/toolbar/buttons/font_family_button.dart @@ -79,6 +79,9 @@ class QuillToolbarFontFamilyButtonState extends QuillToolbarBaseButtonState< @override String get defaultTooltip => context.loc.fontFamily; + @override + IconData get defaultIconData => Icons.font_download_outlined; + void _onPressed() { if (_menuController.isOpen) { _menuController.close(); diff --git a/lib/src/widgets/toolbar/buttons/font_size_button.dart b/lib/src/widgets/toolbar/buttons/font_size_button.dart index 6a70a531..effb85c4 100644 --- a/lib/src/widgets/toolbar/buttons/font_size_button.dart +++ b/lib/src/widgets/toolbar/buttons/font_size_button.dart @@ -85,6 +85,9 @@ class QuillToolbarFontSizeButtonState extends QuillToolbarBaseButtonState< @override String get defaultTooltip => context.loc.fontSize; + @override + IconData get defaultIconData => Icons.format_size_outlined; + void _onDropdownButtonPressed() { if (_menuController.isOpen) { _menuController.close(); diff --git a/lib/src/widgets/toolbar/buttons/hearder_style/select_header_style_buttons.dart b/lib/src/widgets/toolbar/buttons/hearder_style/select_header_style_buttons.dart index 53162b7b..c18577e1 100644 --- a/lib/src/widgets/toolbar/buttons/hearder_style/select_header_style_buttons.dart +++ b/lib/src/widgets/toolbar/buttons/hearder_style/select_header_style_buttons.dart @@ -39,6 +39,9 @@ class QuillToolbarSelectHeaderStyleButtonsState @override String get defaultTooltip => context.loc.headerStyle; + @override + IconData get defaultIconData => Icons.question_mark_outlined; + Style get _selectionStyle => controller.getSelectionStyle(); final _valueToText = { diff --git a/lib/src/widgets/toolbar/buttons/hearder_style/select_header_style_dropdown_button.dart b/lib/src/widgets/toolbar/buttons/hearder_style/select_header_style_dropdown_button.dart index 7a84ba5d..cff72714 100644 --- a/lib/src/widgets/toolbar/buttons/hearder_style/select_header_style_dropdown_button.dart +++ b/lib/src/widgets/toolbar/buttons/hearder_style/select_header_style_dropdown_button.dart @@ -35,6 +35,9 @@ class _QuillToolbarSelectHeaderStyleDropdownButtonState @override String get defaultTooltip => context.loc.headerStyle; + @override + IconData get defaultIconData => Icons.question_mark_outlined; + Attribute _selectedItem = Attribute.header; final _menuController = MenuController(); diff --git a/lib/src/widgets/toolbar/buttons/history_button.dart b/lib/src/widgets/toolbar/buttons/history_button.dart index 09284a84..384fc1ba 100644 --- a/lib/src/widgets/toolbar/buttons/history_button.dart +++ b/lib/src/widgets/toolbar/buttons/history_button.dart @@ -36,6 +36,10 @@ class QuillToolbarHistoryButtonState String get defaultTooltip => widget.isUndo ? context.loc.undo : context.loc.redo; + @override + IconData get defaultIconData => + (widget.isUndo ? Icons.undo_outlined : Icons.redo_outlined); + @override void initState() { super.initState(); @@ -53,9 +57,6 @@ class QuillToolbarHistoryButtonState @override Widget build(BuildContext context) { - final iconData = options.iconData ?? - baseButtonExtraOptions?.iconData ?? - (widget.isUndo ? Icons.undo_outlined : Icons.redo_outlined); final childBuilder = options.childBuilder ?? baseButtonExtraOptions?.childBuilder; diff --git a/lib/src/widgets/toolbar/buttons/indent_button.dart b/lib/src/widgets/toolbar/buttons/indent_button.dart index a750e7fc..1cc3aabe 100644 --- a/lib/src/widgets/toolbar/buttons/indent_button.dart +++ b/lib/src/widgets/toolbar/buttons/indent_button.dart @@ -33,13 +33,10 @@ class QuillToolbarIndentButtonState extends QuillToolbarIndentBaseButtonState { ? context.loc.increaseIndent : context.loc.decreaseIndent; - IconData get iconData { - return options.iconData ?? - baseButtonExtraOptions?.iconData ?? - (widget.isIncrease - ? Icons.format_indent_increase - : Icons.format_indent_decrease); - } + @override + IconData get defaultIconData => widget.isIncrease + ? Icons.format_indent_increase + : Icons.format_indent_decrease; void _sharedOnPressed() { widget.controller.indentSelection(widget.isIncrease); diff --git a/lib/src/widgets/toolbar/buttons/link_style_button.dart b/lib/src/widgets/toolbar/buttons/link_style_button.dart index cb8f24b8..92724012 100644 --- a/lib/src/widgets/toolbar/buttons/link_style_button.dart +++ b/lib/src/widgets/toolbar/buttons/link_style_button.dart @@ -62,9 +62,8 @@ class QuillToolbarLinkStyleButtonState controller.removeListener(_didChangeSelection); } - IconData get iconData { - return options.iconData ?? baseButtonExtraOptions?.iconData ?? Icons.link; - } + @override + IconData get defaultIconData => Icons.link; Color get dialogBarrierColor { return options.dialogBarrierColor ?? diff --git a/lib/src/widgets/toolbar/buttons/toggle_check_list_button.dart b/lib/src/widgets/toolbar/buttons/toggle_check_list_button.dart index 2bf6825b..7d79f815 100644 --- a/lib/src/widgets/toolbar/buttons/toggle_check_list_button.dart +++ b/lib/src/widgets/toolbar/buttons/toggle_check_list_button.dart @@ -52,11 +52,8 @@ class QuillToolbarToggleCheckListButtonState @override String get defaultTooltip => context.loc.checkedList; - IconData get iconData { - return options.iconData ?? - baseButtonExtraOptions?.iconData ?? - Icons.check_box; - } + @override + IconData get defaultIconData => Icons.check_box; @override Widget build(BuildContext context) { diff --git a/lib/src/widgets/toolbar/buttons/toggle_style_button.dart b/lib/src/widgets/toolbar/buttons/toggle_style_button.dart index 017ccb74..941a893e 100644 --- a/lib/src/widgets/toolbar/buttons/toggle_style_button.dart +++ b/lib/src/widgets/toolbar/buttons/toggle_style_button.dart @@ -96,11 +96,8 @@ class QuillToolbarToggleStyleButtonState @override String get defaultTooltip => _defaultTooltipAndIconData.$1; - IconData get iconData { - return options.iconData ?? - context.quillToolbarBaseButtonOptions?.iconData ?? - _defaultTooltipAndIconData.$2; - } + @override + IconData get defaultIconData => _defaultTooltipAndIconData.$2; void _onPressed() { _toggleAttribute(); @@ -140,6 +137,7 @@ class QuillToolbarToggleStyleButtonState bool _getIsToggled(Map attrs) { if (widget.attribute.key == Attribute.list.key || + widget.attribute.key == Attribute.header.key || widget.attribute.key == Attribute.script.key || widget.attribute.key == Attribute.align.key) { final attribute = attrs[widget.attribute.key];