Fixes #270 Copying text is broken

This commit is contained in:
fourtf 2018-04-10 15:48:56 +02:00
parent 739c17c0c8
commit bcf0ebd8ef
2 changed files with 16 additions and 9 deletions

View file

@ -134,7 +134,8 @@ void MessageLayoutContainer::breakLine()
} }
this->lineStart = this->elements.size(); this->lineStart = this->elements.size();
this->currentX = (int)(this->scale * 8); // this->currentX = (int)(this->scale * 8);
this->currentX = 0;
this->currentY += this->lineHeight; this->currentY += this->lineHeight;
this->height = this->currentY + (this->margin.bottom * this->scale); this->height = this->currentY + (this->margin.bottom * this->scale);
this->lineHeight = 0; this->lineHeight = 0;
@ -409,19 +410,21 @@ int MessageLayoutContainer::getLastCharacterIndex() const
void MessageLayoutContainer::addSelectionText(QString &str, int from, int to) void MessageLayoutContainer::addSelectionText(QString &str, int from, int to)
{ {
int index = 0; int index = 0;
bool xd = true; bool first = true;
for (std::unique_ptr<MessageLayoutElement> &ele : this->elements) { for (std::unique_ptr<MessageLayoutElement> &ele : this->elements) {
int c = ele->getSelectionIndexCount(); int c = ele->getSelectionIndexCount();
if (xd) { qDebug() << c;
if (first) {
if (index + c > from) { if (index + c > from) {
ele->addCopyTextToString(str, index - from, to - from); ele->addCopyTextToString(str, from - index, to - from);
xd = false; first = false;
} }
} else { } else {
if (index + c > from) { if (index + c > to) {
ele->addCopyTextToString(str, 0, index - to); ele->addCopyTextToString(str, 0, to - index);
break; break;
} else { } else {
ele->addCopyTextToString(str); ele->addCopyTextToString(str);

View file

@ -279,14 +279,18 @@ QString ChannelView::getSelectedText()
return result; return result;
} }
for (int msg = selection.min.messageIndex; msg <= selection.min.messageIndex; msg++) { qDebug() << "xd >>>>";
for (int msg = selection.min.messageIndex; msg <= selection.max.messageIndex; msg++) {
MessageLayoutPtr layout = messagesSnapshot[msg]; MessageLayoutPtr layout = messagesSnapshot[msg];
int from = msg == selection.min.messageIndex ? selection.min.charIndex : 0; int from = msg == selection.min.messageIndex ? selection.min.charIndex : 0;
int to = msg == selection.max.messageIndex ? selection.max.charIndex int to = msg == selection.max.messageIndex ? selection.max.charIndex
: layout->getLastCharacterIndex(); : layout->getLastCharacterIndex() + 1;
qDebug() << "from:" << from << ", to:" << to;
layout->addSelectionText(result, from, to); layout->addSelectionText(result, from, to);
} }
qDebug() << "xd <<<<";
return result; return result;
} }