Changeset 561 for trunk/src/gui/kernel/qdnd_x11.cpp
- Timestamp:
- Feb 11, 2010, 11:19:06 PM (15 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk
-
Property svn:mergeinfo
set to (toggle deleted branches)
/branches/vendor/nokia/qt/4.6.1 merged eligible /branches/vendor/nokia/qt/current merged eligible /branches/vendor/trolltech/qt/current 3-149
-
Property svn:mergeinfo
set to (toggle deleted branches)
-
trunk/src/gui/kernel/qdnd_x11.cpp
r2 r561 2 2 ** 3 3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). 4 ** Contact: Qt Software Information (qt-info@nokia.com) 4 ** All rights reserved. 5 ** Contact: Nokia Corporation (qt-info@nokia.com) 5 6 ** 6 7 ** This file is part of the QtGui module of the Qt Toolkit. … … 21 22 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. 22 23 ** 23 ** In addition, as a special exception, Nokia gives you certain 24 ** additional rights. These rights are described in the Nokia Qt LGPL 25 ** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this 26 ** package. 24 ** In addition, as a special exception, Nokia gives you certain additional 25 ** rights. These rights are described in the Nokia Qt LGPL Exception 26 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. 27 27 ** 28 28 ** GNU General Public License Usage … … 34 34 ** met: http://www.gnu.org/copyleft/gpl.html. 35 35 ** 36 ** If you are unsure which license is appropriate for your use, please37 ** contact the sales department at qt-sales@nokia.com.36 ** If you have questions regarding the use of this file, please contact 37 ** Nokia at qt-info@nokia.com. 38 38 ** $QT_END_LICENSE$ 39 39 ** … … 507 507 *dataFormat = textprop.format; 508 508 *data = QByteArray((const char *) textprop.value, textprop.nitems * textprop.format / 8); 509 ret = true; 509 510 510 511 DEBUG(" textprop type %lx\n" … … 542 543 dm->xdndMimeTransferedPixmapIndex = 543 544 (dm->xdndMimeTransferedPixmapIndex + 1) % 2; 544 } 545 } 546 } 547 return data; 545 ret = true; 546 } 547 } else { 548 DEBUG("QClipboard: xdndMimeDataForAtom(): converting to type '%s' is not supported", qPrintable(atomName)); 549 } 550 } 551 return ret && data != 0; 548 552 } 549 553 … … 623 627 if (a == XA_PIXMAP && data.size() == sizeof(Pixmap)) { 624 628 Pixmap xpm = *((Pixmap*)data.data()); 625 Display *dpy = display;626 Window r;627 int x,y;628 uint w,h,bw,d;629 629 if (!xpm) 630 630 return QByteArray(); 631 XGetGeometry(dpy,xpm, &r,&x,&y,&w,&h,&bw,&d);631 QPixmap qpm = QPixmap::fromX11Pixmap(xpm); 632 632 QImageWriter imageWriter; 633 GC gc = XCreateGC(dpy, xpm, 0, 0); 634 QImage imageToWrite; 635 if (d == 1) { 636 QBitmap qbm(w,h); 637 XCopyArea(dpy,xpm,qbm.handle(),gc,0,0,w,h,0,0); 638 imageWriter.setFormat("PBMRAW"); 639 imageToWrite = qbm.toImage(); 640 } else { 641 QPixmap qpm(w,h); 642 XCopyArea(dpy,xpm,qpm.handle(),gc,0,0,w,h,0,0); 643 imageWriter.setFormat("PPMRAW"); 644 imageToWrite = qpm.toImage(); 645 } 646 XFreeGC(dpy,gc); 633 imageWriter.setFormat("PPMRAW"); 634 QImage imageToWrite = qpm.toImage(); 647 635 QBuffer buf; 648 636 buf.open(QIODevice::WriteOnly); … … 826 814 int f; 827 815 unsigned long n, a; 828 unsigned char *retval ;816 unsigned char *retval = 0; 829 817 XGetWindowProperty(X11->display, qt_xdnd_dragsource_xid, ATOM(XdndTypelist), 0, 830 818 qt_xdnd_max_type, False, XA_ATOM, &type, &f,&n,&a,&retval); 831 Atom *data = (Atom *)retval;832 for (; j<qt_xdnd_max_type && j < (int)n; j++) {833 qt_xdnd_types[j] = data[j];834 }835 if (data)819 if (retval) { 820 Atom *data = (Atom *)retval; 821 for (; j<qt_xdnd_max_type && j < (int)n; j++) { 822 qt_xdnd_types[j] = data[j]; 823 } 836 824 XFree((uchar*)data); 825 } 837 826 } else { 838 827 // get the types from the message … … 1087 1076 return; 1088 1077 1078 QDragManager *manager = QDragManager::self(); 1079 1089 1080 XClientMessageEvent leave; 1090 1081 leave.type = ClientMessage; … … 1092 1083 leave.format = 32; 1093 1084 leave.message_type = ATOM(XdndLeave); 1094 leave.data.l[0] = qt_xdnd_dragsource_xid;1085 leave.data.l[0] = manager->dragPrivate()->source->effectiveWinId(); 1095 1086 leave.data.l[1] = 0; // flags 1096 1087 leave.data.l[2] = 0; // x, y … … 1108 1099 XSendEvent(X11->display, qt_xdnd_current_proxy_target, False, 1109 1100 NoEventMask, (XEvent*)&leave); 1101 1110 1102 // reset the drag manager state 1111 QDragManager *manager = QDragManager::self();1112 1103 manager->willDrop = false; 1113 1104 if (global_accepted_action != Qt::IgnoreAction)
Note:
See TracChangeset
for help on using the changeset viewer.