summaryrefslogtreecommitdiffstats
path: root/src/gui/kernel/qdnd_x11.cpp
diff options
context:
space:
mode:
authorDenis Dzyubenko <denis.dzyubenko@nokia.com>2009-05-05 08:16:00 (GMT)
committerDenis Dzyubenko <denis.dzyubenko@nokia.com>2009-05-05 09:06:50 (GMT)
commit5eef8717c9862befe8b6529cbb111c0b30529f48 (patch)
treef21db5059713f883f59d317d4709cf137e120ae8 /src/gui/kernel/qdnd_x11.cpp
parent4baa045b77ef98f269bec4cab410229a89e644c5 (diff)
downloadQt-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.cpp23
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);