[QScintilla] Incorrect EOL after copy-pasting

Andrei Kopats hlamer at tut.by
Sun Oct 2 18:35:12 BST 2011


Yes, thanks. Ubuntu version still contains this bug, but snapshot works
fine.


2011/10/2 Phil Thompson <phil at riverbankcomputing.com>

> On Fri, 30 Sep 2011 10:47:22 +0300, Andrei Kopats <hlamer at tut.by> wrote:
> > 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
>
> Works fine for me with the current version.
>
> Phil
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.riverbankcomputing.com/pipermail/qscintilla/attachments/20111002/9607de2f/attachment.html>


More information about the QScintilla mailing list