Skip to content

Commit

Permalink
Merge pull request #31 from CODeRUS/master
Browse files Browse the repository at this point in the history
[fingerterm] make copy to clipboard working
  • Loading branch information
thp committed Mar 31, 2014
2 parents 947df90 + af0601f commit 4c94c79
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 47 deletions.
63 changes: 29 additions & 34 deletions terminal.cpp
Expand Up @@ -1144,18 +1144,9 @@ void Terminal::pasteFromClipboard()
{
QClipboard *cb = QGuiApplication::clipboard();

//mimeData() could be null when the clipboard QPA plugin of the platform doesn't support QClipboard::Clipboard, or
//the plugin is bugged.
//In those cases, disable clipboard features.
if(!cb->mimeData())
qDebug() << "FIXME: QClipboard::mimeData() returned NULL, the clipboard functionality will not be used";
else {
if(cb->mimeData()->hasText() && !cb->mimeData()->text().isEmpty()) {
if(iPtyIFace) {
resetBackBufferScrollPos();
iPtyIFace->writeTerm(cb->mimeData()->text());
}
}
if(iPtyIFace && !cb->text().isEmpty()) {
resetBackBufferScrollPos();
iPtyIFace->writeTerm(cb->text());
}
}

Expand Down Expand Up @@ -1299,42 +1290,46 @@ void Terminal::copySelectionToClipboard()
line.clear();
int start = 0;
int end = iBackBuffer[i].size()-1;
if (i==lineFrom)
if (i==lineFrom) {
start = selection().left()-1;
if (i==lineTo)
}
if (i==lineTo) {
end = selection().right()-1;
}
for (int j=start; j<=end; j++) {
if (j >= 0 && j < iBackBuffer[i].size() && iBackBuffer[i][j].c.isPrint())
line += iBackBuffer[i][j].c;
}
text += line.trimmed() + "\n";
}
}
}

// main buffer
lineFrom = selection().top()-1-iBackBufferScrollPos;
lineTo = selection().bottom()-1-iBackBufferScrollPos;
for (int i=lineFrom; i<=lineTo; i++) {
if (i >= 0 && i < buffer().size()) {
line.clear();
int start = 0;
int end = buffer()[i].size()-1;
if (i==lineFrom)
start = selection().left()-1;
if (i==lineTo)
end = selection().right()-1;
for (int j=start; j<=end; j++) {
if (j >= 0 && j < buffer()[i].size() && buffer()[i][j].c.isPrint())
line += buffer()[i][j].c;
}
text += line.trimmed() + "\n";
// main buffer
int lineFrom = selection().top()-1-iBackBufferScrollPos;
int lineTo = selection().bottom()-1-iBackBufferScrollPos;
for (int i=lineFrom; i<=lineTo; i++) {
if (i >= 0 && i < buffer().size()) {
line.clear();
int start = 0;
int end = buffer()[i].size()-1;
if (i==lineFrom) {
start = selection().left()-1;
}
if (i==lineTo) {
end = selection().right()-1;
}
for (int j=start; j<=end; j++) {
if (j >= 0 && j < buffer()[i].size() && buffer()[i][j].c.isPrint())
line += buffer()[i][j].c;
}
text += line.trimmed() + "\n";
}
}

//qDebug() << text.trimmed();
//qDebug() << text.trimmed();

cb->setText(text.trimmed());
}
cb->setText(text.trimmed());
}

void Terminal::adjustSelectionPosition(int lines)
Expand Down
14 changes: 1 addition & 13 deletions util.cpp
Expand Up @@ -382,19 +382,7 @@ bool Util::canPaste()

QClipboard *cb = QGuiApplication::clipboard();

//mimeData() could be null when the clipboard QPA plugin of the platform doesn't support QClipboard::Clipboard, or
//the plugin is bugged.
//In those cases, disable clipboard features.
if(!cb->mimeData()) {
qDebug() << "FIXME: QClipboard::mimeData() returned NULL, the clipboard functionality will not be used";
return false;
}
else {
if(cb->mimeData()->hasText() && !cb->mimeData()->text().isEmpty())
return true;
}

return false;
return !cb->text().isEmpty();
}

void Util::selectionFinished()
Expand Down

0 comments on commit 4c94c79

Please sign in to comment.