[QScintilla] Incorrect EOL after copy-pasting
Andrei Kopats
hlamer at tut.by
Fri Sep 30 08:47:22 BST 2011
Hi
I have problem with EOLs in QScintilla.
Let's open 2 QScintilla based editors. First is configured to work in CR EOL
mode, and second in LF EOL mode.
If I copy text from first to second - second contains mix of different EOL
modes.
To see it, activate EOL symbols visibility or check saved file with hex
editor.
I think, when pasting, QScintilla should automatically convert EOLs of
pasted text to current EOL mode of the file.
I can not reproduce this bug on SciTE, seems, Qt implementation specific.
I also checked SciTE code, it seems, it does not do any conversions when
pasting, but only calls Scintilla GTK implementation.
This problem was discussed on QScintilla bugtracker
https://sourceforge.net/tracker/index.php?func=detail&aid=1216370&group_id=2439&atid=352439
I discovered, that JuffED fixes this problem in its code, but, I think, it
would be better, if QScintilla handles it...
void JuffScintilla::paste() {
QString originalText = QApplication::clipboard()->text();
QString convertedText;
if ( originalText.contains(LineSeparatorRx) ) {
QStringList lines = originalText.split(LineSeparatorRx);
switch ( eolMode() ) {
case EolWindows : convertedText = lines.join("\r\n"); break;
case EolUnix : convertedText = lines.join("\n"); break;
case EolMac : convertedText = lines.join("\r"); break;
}
QApplication::clipboard()->setText(convertedText);
}
if ( SendScintilla(SCI_SELECTIONISRECTANGLE) ) {
QString text = QApplication::clipboard()->text();
int line1, col1, line2, col2;
getOrderedSelection(line1, col1, line2, col2);
beginUndoAction();
deleteRectSelection(line1, col1, line2, col2);
for ( int line = line2; line >= line1; --line ) {
insertAt(text, line, col1);
}
endUndoAction();
}
else {
QsciScintilla::paste();
}
// restore the original clipboard content
QApplication::clipboard()->setText(originalText);
}
Andrei Kopats
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.riverbankcomputing.com/pipermail/qscintilla/attachments/20110930/371643be/attachment.html>
More information about the QScintilla
mailing list