mirror of
https://github.com/penpot/penpot.git
synced 2025-12-11 22:14:05 +01:00
🐛 Fix selectAll on mixed span styles
This commit is contained in:
@@ -1939,11 +1939,21 @@ export class SelectionController extends EventTarget {
|
|||||||
const textSpan = this.startTextSpan;
|
const textSpan = this.startTextSpan;
|
||||||
const midText = startNode.splitText(startOffset);
|
const midText = startNode.splitText(startOffset);
|
||||||
const endText = midText.splitText(endOffset - startOffset);
|
const endText = midText.splitText(endOffset - startOffset);
|
||||||
const midTextSpan = createTextSpanFrom(textSpan, midText, newStyles);
|
|
||||||
textSpan.after(midTextSpan);
|
// Only create text span if midText is not empty
|
||||||
if (endText.length > 0) {
|
if (midText.nodeValue && midText.nodeValue.length > 0) {
|
||||||
const endTextSpan = createTextSpan(endText, textSpan.style);
|
const midTextSpan = createTextSpanFrom(textSpan, midText, newStyles);
|
||||||
midTextSpan.after(endTextSpan);
|
textSpan.after(midTextSpan);
|
||||||
|
if (endText.length > 0) {
|
||||||
|
const endTextSpan = createTextSpan(endText, textSpan.style);
|
||||||
|
midTextSpan.after(endTextSpan);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// If midText is empty, just create endTextSpan if needed
|
||||||
|
if (endText.length > 0) {
|
||||||
|
const endTextSpan = createTextSpan(endText, textSpan.style);
|
||||||
|
textSpan.after(endTextSpan);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// NOTE: This is necessary because sometimes
|
// NOTE: This is necessary because sometimes
|
||||||
@@ -1996,7 +2006,8 @@ export class SelectionController extends EventTarget {
|
|||||||
// new text span.
|
// new text span.
|
||||||
if (
|
if (
|
||||||
this.#textNodeIterator.currentNode === startNode &&
|
this.#textNodeIterator.currentNode === startNode &&
|
||||||
startOffset > 0
|
startOffset > 0 &&
|
||||||
|
startOffset < (startNode.nodeValue?.length || 0)
|
||||||
) {
|
) {
|
||||||
const newTextSpan = splitTextSpan(textSpan, startOffset);
|
const newTextSpan = splitTextSpan(textSpan, startOffset);
|
||||||
setTextSpanStyles(newTextSpan, newStyles);
|
setTextSpanStyles(newTextSpan, newStyles);
|
||||||
@@ -2018,7 +2029,8 @@ export class SelectionController extends EventTarget {
|
|||||||
// If we're at end node
|
// If we're at end node
|
||||||
} else if (
|
} else if (
|
||||||
this.#textNodeIterator.currentNode === endNode &&
|
this.#textNodeIterator.currentNode === endNode &&
|
||||||
endOffset < endNode.nodeValue.length
|
endOffset < endNode.nodeValue.length &&
|
||||||
|
endOffset > 0
|
||||||
) {
|
) {
|
||||||
const newTextSpan = splitTextSpan(textSpan, endOffset);
|
const newTextSpan = splitTextSpan(textSpan, endOffset);
|
||||||
setTextSpanStyles(textSpan, newStyles);
|
setTextSpanStyles(textSpan, newStyles);
|
||||||
|
|||||||
Reference in New Issue
Block a user