r23984 by jghali - Adjust text selection when inserting chars in story in the same way we do when removing chars: this allows to adapt selection automatically when applying bullets or numbered lists
scribus-commit
scribus-commit at lists.scribus.net
Mon Aug 17 11:05:32 UTC 2020
Author: jghali
Date: Mon Aug 17 11:05:32 2020
New Revision: 23984
URL: http://scribus.net/websvn/listing.php?repname=Scribus&sc=1&rev=23984
Log:
Adjust text selection when inserting chars in story in the same way we do when removing chars: this allows to adapt selection automatically when applying bullets or numbered lists
Modified:
trunk/Scribus/scribus/text/storytext.cpp
Modified: trunk/Scribus/scribus/text/storytext.cpp
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=23984&path=/trunk/Scribus/scribus/text/storytext.cpp
==============================================================================
--- trunk/Scribus/scribus/text/storytext.cpp (original)
+++ trunk/Scribus/scribus/text/storytext.cpp Mon Aug 17 11:05:32 2020
@@ -473,7 +473,7 @@
void StoryText::insert(int pos, const StoryText& other, bool onlySelection)
{
if (pos < 0)
- pos += length()+1;
+ pos += length() + 1;
CharStyle cstyle(charStyle(pos));
ParagraphStyle pstyle(paragraphStyle(pos));
@@ -482,6 +482,8 @@
ParagraphStyle otherDefault(other.defaultStyle());
otherDefault.eraseStyle(defaultStyle());
+ int oldPos = pos;
+ int oldLen = length();
int otherStart = onlySelection? other.startOfSelection() : 0;
int otherEnd = onlySelection? other.endOfSelection() : other.length();
int cstyleStart = otherStart;
@@ -542,6 +544,8 @@
applyStyle(pos, other.paragraphStyle(otherEnd-1));
}
}
+ if ((d->selLast >= d->selFirst) && (d->selFirst <= oldPos) && (oldPos <= d->selLast))
+ d->selLast += (length() - oldLen);
invalidate(pos, length());
}
@@ -678,7 +682,7 @@
void StoryText::insertChars(int pos, const QString& txt, bool applyNeighbourStyle) //, const CharStyle & charstyle)
{
if (pos < 0)
- pos += length()+1;
+ pos += length() + 1;
assert(pos >= 0);
assert(pos <= length());
@@ -713,13 +717,15 @@
}
d->len = d->count();
+ if ((d->selLast >= d->selFirst) && (d->selFirst <= pos) && (pos <= d->selLast))
+ d->selLast += txt.length();
invalidate(pos, pos + txt.length());
}
void StoryText::insertCharsWithSoftHyphens(int pos, const QString& txt, bool applyNeighbourStyle)
{
if (pos < 0)
- pos += length()+1;
+ pos += length() + 1;
assert(pos >= 0);
assert(pos <= length());
@@ -732,7 +738,7 @@
ScText clone;
if (applyNeighbourStyle)
{
- int referenceChar = qMax(0, qMin(pos, length()-1));
+ int referenceChar = qMax(0, qMin(pos, length() - 1));
clone.applyCharStyle(charStyle(referenceChar));
clone.setEffects(ScStyle_Default);
}
@@ -771,6 +777,8 @@
}
d->len = d->count();
+ if ((d->selLast >= d->selFirst) && (d->selFirst <= pos) && (pos <= d->selLast))
+ d->selLast += inserted;
invalidate(pos, pos + inserted);
}
More information about the scribus-commit
mailing list