From 48835b90f8479c67e60d797e1862e74fc29c0c22 Mon Sep 17 00:00:00 2001 From: Alspb <> Date: Mon, 2 Oct 2023 00:47:59 +0100 Subject: [PATCH] Fixed range style: symmetric difference is replaced with intersection of each individual segment styles --- lib/src/models/documents/nodes/line.dart | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/lib/src/models/documents/nodes/line.dart b/lib/src/models/documents/nodes/line.dart index b9e7191d..539f3c5d 100644 --- a/lib/src/models/documents/nodes/line.dart +++ b/lib/src/models/documents/nodes/line.dart @@ -352,18 +352,13 @@ class Line extends Container { final excluded = {}; void _handle(Style style) { - if (result.isEmpty) { - excluded.addAll(style.values); - } else { - for (final attr in result.values) { - if (!style.containsKey(attr.key)) { - excluded.add(attr); - } + for (final attr in result.values) { + if (!style.containsKey(attr.key) || + (style.attributes[attr.key] != attr.value)) { + excluded.add(attr); } } - final remaining = style.removeAll(excluded); result = result.removeAll(excluded); - result = result.mergeAll(remaining); } final data = queryChild(offset, true);