[QScintilla] Problem with mime-data encoding

Baz Walter bazwal at ftml.net
Wed Jun 13 17:31:25 BST 2012


Before version 2.5, qscintilla always used the unicode-friendly text 
methods when dealing with mime-data. But this was changed when support 
for pasting rectangular selections was added, and so there is now a real 
risk of data corruption when using the clipboard, or drag and drop.

If, for example, qscintilla is using its default code page, a copy 
operation will store latin1 encoded data on the clipboard with a 
mime-type of 'text/plain'. If this data is then pasted by another qt 
widget which *does* use the text methods (such as a line-edit), all the 
non-asciii characters will be lost (i.e. replaced by replacement 
characters). This is because QMimeData always uses the utf-8 codec when 
converting bytes to a QString, which of course will choke on latin1 
encoded data.

Even worse, if two qscintilla editors using different code pages 
exchange data, they will end up with mixed encodings. Unlike Qt, 
Scintilla does nothing to mitigate against this and so the editors will 
be left in an unstable state.

So I was hoping to simply suggest reverting to the unicode-friendly 
mime-data methods to avoid such problems.

However, the latest snapshot (2.6.2-75020a35b5eb) may have introduced 
some extra complications.

It seems that, on OSX and X11, rectangular selections now no longer have 
a mime-type of "text/plain", and instead just get the rectangular-marker 
mime-type. This is in conflict with the unicode-friendly text methods, 
which would always enforce a mime-type of "text/plain".

The current use of the rectangular-marker mime-type is very puzzling, 
since it means rectangular selections can now no longer be copied and 
pasted to other widgets/applications (which won't recognize them as text).

Is there a specific reason why this restriction has been imposed?

Rectangular selections are just ordinary lines of text - no special 
handling is required to paste them as a stream, rather than as a block. 
Personally, I tend to copy and paste them to other applications at least 
as much as pasting them as blocks within qscintilla - so, for me, the 
change of behaviour is very unwelcome.



More information about the QScintilla mailing list