initial import
[gentoo-soor-overlay.git] / x11-libs / qt / files / 0038-dragobject-dont-prefer-unknown.patch
blobae4163ae2d29cd1c87daf24126c721a97a9503d1
1 qt-bugs@ issue : 38642
2 bugs.kde.org number : 71084
3 applied: no
4 author: Lubos Lunak <l.lunak@kde.org>
6 Hello,
8 start Mozilla, go e.g. to http://kde.org, start KWrite (or basically any Qt
9 app that accepts text drops), select 'Conquer your Desktop!', and try to
10 drag&drop it onto KWrite. The only text pasted should be 'm'.
12 I don't know much the related mimetype and encoding stuff, so I'm unsure
13 whose fault this actually is. The text drag is provided as a lot of
14 text/something targets, to list some text/_moz_htmlinfo, text/x-moz-url,
15 text/unicode and similar. The problem is, Kate uses QTextDrag::decode() with
16 no subtype specified, probably with the intention that as Kate is a text
17 editor, it can accept any text pasted. And since the first target provided by
18 mozilla is text/x-moz-url, (which moreover seems to be encoded as 16bit
19 unicode), the text dropped is completely wrong. You can easily see all
20 targets provided by Mozilla with see_mime.patch applied.
22 Solution #1: Say that Kate (any pretty much everybody else expecting text)
23 should say "plain" as the subtype. In such case, I suggest you drop the
24 QTextDrag::decode() variant with no subtype specified, and stress more the
25 fact that not specifying a subtype can result in a lot of rubbish. It's
26 simply too tempting to leave the subtype empty and try to accept anything.
28 Solution #2: When trying to accept anything, try to get useful data. Which
29 means either sorting the subtypes available somehow, checking only the ones
30 Qt knows.
32 To me, #1 seems to be a better choice, or possibly at least something like
33 the attached QTextDrag patch, which simply always tries first "plain" subtype
34 if none is specified. With this patch, Mozilla even works (that's irony, of
35 course, Mozilla still pastes the text/plain text as HTML, but at least now it
36 pastes something where it's easy to point at the offender).
39 --- src/kernel/qdragobject.cpp.sav 2004-01-06 19:24:35.000000000 +0100
40 +++ src/kernel/qdragobject.cpp 2004-01-06 19:47:01.000000000 +0100
41 @@ -844,6 +844,16 @@ bool QTextDrag::decode( const QMimeSourc
43 if(!e)
44 return FALSE;
46 + // when subtype is not specified, try text/plain first, otherwise this may read
47 + // things like text/x-moz-url even though better targets are available
48 + if( subtype.isNull()) {
49 + QCString subtmp = "plain";
50 + if( decode( e, str, subtmp )) {
51 + subtype = subtmp;
52 + return true;
53 + }
54 + }
56 if ( e->cacheType == QMimeSource::Text ) {
57 str = *e->cache.txt.str;