1
1
/****************************************************************************
3
3
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
4
** All rights reserved.
4
5
** Contact: Nokia Corporation (qt-info@nokia.com)
6
7
** This file is part of the QtGui module of the Qt Toolkit.
8
9
** $QT_BEGIN_LICENSE:LGPL$
10
** Licensees holding valid Qt Commercial licenses may use this file in
11
** accordance with the Qt Commercial License Agreement provided with the
12
** Software or, alternatively, in accordance with the terms contained in
13
** a written agreement between you and Nokia.
10
** No Commercial Usage
11
** This file contains pre-release code and may not be distributed.
12
** You may use this file in accordance with the terms and conditions
13
** contained in the Technology Preview License Agreement accompanying
15
16
** GNU Lesser General Public License Usage
16
17
** Alternatively, this file may be used under the terms of the GNU Lesser
20
21
** ensure the GNU Lesser General Public License version 2.1 requirements
21
22
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
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
28
** GNU General Public License Usage
29
** Alternatively, this file may be used under the terms of the GNU
30
** General Public License version 3.0 as published by the Free Software
31
** Foundation and appearing in the file LICENSE.GPL included in the
32
** packaging of this file. Please review the following information to
33
** ensure the GNU General Public License version 3.0 requirements will be
34
** met: http://www.gnu.org/copyleft/gpl.html.
36
** If you are unsure which license is appropriate for your use, please
37
** contact the sales department at http://www.qtsoftware.com/contact.
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.
28
** If you have questions regarding the use of this file, please contact
29
** Nokia at qt-info@nokia.com.
38
38
** $QT_END_LICENSE$
40
40
****************************************************************************/
506
506
*atomFormat = textprop.encoding;
507
507
*dataFormat = textprop.format;
508
508
*data = QByteArray((const char *) textprop.value, textprop.nitems * textprop.format / 8);
510
511
DEBUG(" textprop type %lx\n"
511
512
" textprop name '%s'\n"
541
542
dm->xdndMimeTransferedPixmap[dm->xdndMimeTransferedPixmapIndex] = pm;
542
543
dm->xdndMimeTransferedPixmapIndex =
543
544
(dm->xdndMimeTransferedPixmapIndex + 1) % 2;
548
DEBUG("QClipboard: xdndMimeDataForAtom(): converting to type '%s' is not supported", qPrintable(atomName));
551
return ret && data != 0;
622
626
if (format == QLatin1String("image/ppm")) {
623
627
if (a == XA_PIXMAP && data.size() == sizeof(Pixmap)) {
624
628
Pixmap xpm = *((Pixmap*)data.data());
625
Display *dpy = display;
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);
637
XCopyArea(dpy,xpm,qbm.handle(),gc,0,0,w,h,0,0);
638
imageWriter.setFormat("PBMRAW");
639
imageToWrite = qbm.toImage();
642
XCopyArea(dpy,xpm,qpm.handle(),gc,0,0,w,h,0,0);
643
imageWriter.setFormat("PPMRAW");
644
imageToWrite = qpm.toImage();
633
imageWriter.setFormat("PPMRAW");
634
QImage imageToWrite = qpm.toImage();
648
636
buf.open(QIODevice::WriteOnly);
649
637
imageWriter.setDevice(&buf);
825
813
Atom type = XNone;
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];
820
Atom *data = (Atom *)retval;
821
for (; j<qt_xdnd_max_type && j < (int)n; j++) {
822
qt_xdnd_types[j] = data[j];
836
824
XFree((uchar*)data);
838
827
// get the types from the message
1086
1075
if (!qt_xdnd_current_target)
1078
QDragManager *manager = QDragManager::self();
1089
1080
XClientMessageEvent leave;
1090
1081
leave.type = ClientMessage;
1091
1082
leave.window = qt_xdnd_current_target;
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
1097
1088
leave.data.l[3] = 0; // w, h
1108
1099
XSendEvent(X11->display, qt_xdnd_current_proxy_target, False,
1109
1100
NoEventMask, (XEvent*)&leave);
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)
1114
1105
manager->emitActionChanged(Qt::IgnoreAction);