Ignore:
Timestamp:
Feb 11, 2010, 11:19:06 PM (15 years ago)
Author:
Dmitry A. Kuminov
Message:

trunk: Merged in qt 4.6.1 sources.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk

  • trunk/src/gui/kernel/qdnd_x11.cpp

    r2 r561  
    22**
    33** 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)
    56**
    67** This file is part of the QtGui module of the Qt Toolkit.
     
    2122** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
    2223**
    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.
    2727**
    2828** GNU General Public License Usage
     
    3434** met: http://www.gnu.org/copyleft/gpl.html.
    3535**
    36 ** If you are unsure which license is appropriate for your use, please
    37 ** 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.
    3838** $QT_END_LICENSE$
    3939**
     
    507507                    *dataFormat = textprop.format;
    508508                    *data = QByteArray((const char *) textprop.value, textprop.nitems * textprop.format / 8);
     509                    ret = true;
    509510
    510511                    DEBUG("    textprop type %lx\n"
     
    542543                dm->xdndMimeTransferedPixmapIndex =
    543544                            (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;
    548552}
    549553
     
    623627        if (a == XA_PIXMAP && data.size() == sizeof(Pixmap)) {
    624628            Pixmap xpm = *((Pixmap*)data.data());
    625             Display *dpy = display;
    626             Window r;
    627             int x,y;
    628             uint w,h,bw,d;
    629629            if (!xpm)
    630630                return QByteArray();
    631             XGetGeometry(dpy,xpm, &r,&x,&y,&w,&h,&bw,&d);
     631            QPixmap qpm = QPixmap::fromX11Pixmap(xpm);
    632632            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();
    647635            QBuffer buf;
    648636            buf.open(QIODevice::WriteOnly);
     
    826814        int f;
    827815        unsigned long n, a;
    828         unsigned char *retval;
     816        unsigned char *retval = 0;
    829817        XGetWindowProperty(X11->display, qt_xdnd_dragsource_xid, ATOM(XdndTypelist), 0,
    830818                           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            }
    836824            XFree((uchar*)data);
     825        }
    837826    } else {
    838827        // get the types from the message
     
    10871076        return;
    10881077
     1078    QDragManager *manager = QDragManager::self();
     1079
    10891080    XClientMessageEvent leave;
    10901081    leave.type = ClientMessage;
     
    10921083    leave.format = 32;
    10931084    leave.message_type = ATOM(XdndLeave);
    1094     leave.data.l[0] = qt_xdnd_dragsource_xid;
     1085    leave.data.l[0] = manager->dragPrivate()->source->effectiveWinId();
    10951086    leave.data.l[1] = 0; // flags
    10961087    leave.data.l[2] = 0; // x, y
     
    11081099        XSendEvent(X11->display, qt_xdnd_current_proxy_target, False,
    11091100                    NoEventMask, (XEvent*)&leave);
     1101
    11101102    // reset the drag manager state
    1111     QDragManager *manager = QDragManager::self();
    11121103    manager->willDrop = false;
    11131104    if (global_accepted_action != Qt::IgnoreAction)
Note: See TracChangeset for help on using the changeset viewer.