r21733 by jghali - #14565: selecting word by double clicking doesn't work in some cases
scribus-commit
scribus-commit at lists.scribus.net
Wed Jan 18 19:32:49 UTC 2017
Author: jghali
Date: Wed Jan 18 19:32:49 2017
New Revision: 21733
URL: http://scribus.net/websvn/listing.php?repname=Scribus&sc=1&rev=21733
Log:
#14565: selecting word by double clicking doesn't work in some cases
Modified:
trunk/Scribus/scribus/text/storytext.cpp
trunk/Scribus/scribus/text/storytext.h
Modified: trunk/Scribus/scribus/text/storytext.cpp
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=21733&path=/trunk/Scribus/scribus/text/storytext.cpp
==============================================================================
--- trunk/Scribus/scribus/text/storytext.cpp (original)
+++ trunk/Scribus/scribus/text/storytext.cpp Wed Jan 18 19:32:49 2017
@@ -82,7 +82,6 @@
{
d = other.d;
d->refs++;
- m_text = other.m_text;
if (m_doc) {
m_doc->paragraphStyles().connect(this, SLOT(invalidateAll()));
@@ -157,7 +156,6 @@
m_doc = other.m_doc;
d = other.d;
- m_text = other.m_text;
if (m_doc) {
m_doc->paragraphStyles().connect(this, SLOT(invalidateAll()));
@@ -310,7 +308,6 @@
d->clear();
d->len = 0;
- m_text.clear();
invalidateAll();
}
@@ -527,7 +524,7 @@
if (pos + static_cast<int>(len) > length())
len = length() - pos;
- for ( int i = pos + static_cast<int>(len) - 1; i >= pos; --i )
+ for (int i = pos + static_cast<int>(len) - 1; i >= pos; --i)
{
ScText *it = d->at(i);
if ((it->ch == SpecialChars::PARSEP))
@@ -553,7 +550,6 @@
m_selLast = -1;
}
invalidate(pos, length());
- m_text.remove(pos, len);
}
void StoryText::trim()
@@ -610,20 +606,17 @@
for (int i = 0; i < txt.length(); ++i) {
ScText * item = new ScText(clone);
- QChar tmpch = txt.at(i);
- item->ch = tmpch;
+ item->ch= txt.at(i);
item->setContext(cStyleContext);
d->insert(pos + i, item);
d->len++;
if (item->ch == SpecialChars::PARSEP) {
// qDebug() << QString("new PARSEP %2 at %1").arg(pos).arg(paragraphStyle(pos).name());
insertParSep(pos + i);
- tmpch = QLatin1Char('\n');
}
if (d->cursorPosition >= static_cast<uint>(pos + i)) {
d->cursorPosition += 1;
}
- m_text += tmpch;
}
d->len = d->count();
@@ -676,14 +669,10 @@
d->insert(index, item);
d->len++;
if (item->ch == SpecialChars::PARSEP)
- {
insertParSep(index);
- ch = QLatin1Char('\n');
- }
if (d->cursorPosition >= static_cast<uint>(index))
d->cursorPosition += 1;
++inserted;
- m_text += ch;
}
}
@@ -712,9 +701,6 @@
}
invalidate(pos, pos + 1);
- if (ch == SpecialChars::PARSEP)
- ch = QLatin1Char('\n');
- m_text[pos] = ch;
}
int StoryText::replaceWord(int pos, QString newWord)
@@ -820,7 +806,24 @@
QString StoryText::plainText() const
{
- return m_text;
+ if (length() <= 0)
+ return QString();
+
+ QChar ch;
+ QString result;
+
+ int len = length();
+ result.reserve(len);
+
+ StoryText* that(const_cast<StoryText*>(this));
+ for (int i = 0; i < len; ++i) {
+ ch = that->d->at(i)->ch;
+ if (ch == SpecialChars::PARSEP)
+ ch = QLatin1Char('\n');
+ result += ch;
+ }
+
+ return result;
}
#if 0
QChar StoryText::text() const
Modified: trunk/Scribus/scribus/text/storytext.h
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=21733&path=/trunk/Scribus/scribus/text/storytext.h
==============================================================================
--- trunk/Scribus/scribus/text/storytext.h (original)
+++ trunk/Scribus/scribus/text/storytext.h Wed Jan 18 19:32:49 2017
@@ -281,8 +281,6 @@
ScText * item(uint index);
const ScText * item(uint index) const;
void fixSurrogateSelection();
- // storage for plain text
- QString m_text;
//public:
// ScText * item_p(uint index) { return item(index); }
More information about the scribus-commit
mailing list