Fixed range style: symmetric difference is replaced with intersection of each individual segment styles

pull/1416/head
Alspb 2 years ago
parent 15e6bfd018
commit 48835b90f8
  1. 13
      lib/src/models/documents/nodes/line.dart

@ -352,18 +352,13 @@ class Line extends Container<Leaf?> {
final excluded = <Attribute>{};
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);

Loading…
Cancel
Save