diff options
author | Denis Dzyubenko <denis.dzyubenko@nokia.com> | 2009-05-05 08:16:00 (GMT) |
---|---|---|
committer | Denis Dzyubenko <denis.dzyubenko@nokia.com> | 2009-05-05 09:06:50 (GMT) |
commit | 5eef8717c9862befe8b6529cbb111c0b30529f48 (patch) | |
tree | f21db5059713f883f59d317d4709cf137e120ae8 /src/gui/kernel/qdnd_x11.cpp | |
parent | 4baa045b77ef98f269bec4cab410229a89e644c5 (diff) | |
download | Qt-5eef8717c9862befe8b6529cbb111c0b30529f48.zip Qt-5eef8717c9862befe8b6529cbb111c0b30529f48.tar.gz Qt-5eef8717c9862befe8b6529cbb111c0b30529f48.tar.bz2 |
Fixed handling of XA_PIXMAP format type in QClipboard on X11.
When requesting image/ppm type we didn't return the proper pixmap
because type 'PIXMAP' is not a proper image format name, but a reserved
atom, so the fix is to remove redundant check that was triggered before
we entered the actual function that tries to convert the clipboard
content.
Task-number: 252501
Reviewed-by: Brad
Diffstat (limited to 'src/gui/kernel/qdnd_x11.cpp')
-rw-r--r-- | src/gui/kernel/qdnd_x11.cpp | 23 |
1 files changed, 5 insertions, 18 deletions
diff --git a/src/gui/kernel/qdnd_x11.cpp b/src/gui/kernel/qdnd_x11.cpp index 4c9c73c..ed93b34 100644 --- a/src/gui/kernel/qdnd_x11.cpp +++ b/src/gui/kernel/qdnd_x11.cpp @@ -542,6 +542,8 @@ bool QX11Data::xdndMimeDataForAtom(Atom a, QMimeData *mimeData, QByteArray *data dm->xdndMimeTransferedPixmapIndex = (dm->xdndMimeTransferedPixmapIndex + 1) % 2; } + } else { + DEBUG("QClipboard: xdndMimeDataForAtom(): converting to type '%s' is not supported", atomName); } } return data; @@ -623,27 +625,12 @@ QVariant QX11Data::xdndMimeConvertToFormat(Atom a, const QByteArray &data, const if (a == XA_PIXMAP && data.size() == sizeof(Pixmap)) { Pixmap xpm = *((Pixmap*)data.data()); Display *dpy = display; - Window r; - int x,y; - uint w,h,bw,d; if (!xpm) return QByteArray(); - XGetGeometry(dpy,xpm, &r,&x,&y,&w,&h,&bw,&d); + QPixmap qpm = QPixmap::fromX11Pixmap(xpm); QImageWriter imageWriter; - GC gc = XCreateGC(dpy, xpm, 0, 0); - QImage imageToWrite; - if (d == 1) { - QBitmap qbm(w,h); - XCopyArea(dpy,xpm,qbm.handle(),gc,0,0,w,h,0,0); - imageWriter.setFormat("PBMRAW"); - imageToWrite = qbm.toImage(); - } else { - QPixmap qpm(w,h); - XCopyArea(dpy,xpm,qpm.handle(),gc,0,0,w,h,0,0); - imageWriter.setFormat("PPMRAW"); - imageToWrite = qpm.toImage(); - } - XFreeGC(dpy,gc); + imageWriter.setFormat("PPMRAW"); + QImage imageToWrite = qpm.toImage(); QBuffer buf; buf.open(QIODevice::WriteOnly); imageWriter.setDevice(&buf); |