[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: extragear/utils/kpager
From: Pino Toscano <pino () kde ! org>
Date: 2010-12-31 21:39:08
Message-ID: 20101231213908.10AF1AC8AE () svn ! kde ! org
[Download RAW message or body]
SVN commit 1210514 by pino:
port the custom drag code to the qt4 way
- turn PagerWindowDrag into a simple namespace, and make the former c'tor a function \
to populate the QMimeData
- canDecode/decode: just use QMimeData, instead of use the drag events
... because of this, manually accept() the event on drop
- create a QDrag object and fill it with mime data, pixmap and hostspot information
- remove few unnecessary includes
M +13 -6 desktop.cpp
M +8 -12 windowdrag.cpp
M +8 -14 windowdrag.h
--- trunk/extragear/utils/kpager/desktop.cpp #1210513:1210514
@@ -290,17 +290,20 @@
int deltax=dragpos.x();
int deltay=dragpos.y();
- PagerWindowDrag *wdrag= new PagerWindowDrag( info->win(), deltax, deltay,
- m_desk, this);
- wdrag->setPixmap( *pixmap, QPoint( deltax, deltay) );
+ QDrag *drag = new QDrag(this);
+ QMimeData *mimeData = new QMimeData;
+ PagerWindowDrag::populateMimeData(mimeData, info->win(), deltax, deltay, m_desk);
+ drag->setMimeData(mimeData);
+ drag->setPixmap(*pixmap);
+ drag->setHotSpot(QPoint(deltax, deltay));
delete pixmap;
- wdrag->dragCopy();
+ drag->exec();
}
void Desktop::dragEnterEvent(QDragEnterEvent *ev)
{
- if (PagerWindowDrag::canDecode( ev )) ev->accept();
+ if (PagerWindowDrag::canDecode(ev->mimeData())) ev->accept();
}
void Desktop::dragMoveEvent(QDragMoveEvent *)
@@ -315,7 +318,11 @@
WId win=0;
int deltax,deltay;
int origdesk;
- if (!PagerWindowDrag::decode(ev,win,deltax,deltay,origdesk)) return;
+ if (!PagerWindowDrag::decode(ev->mimeData(),win,deltax,deltay,origdesk))
+ {
+ ev->accept();
+ return;
+ }
int x=ev->pos().x()-deltax;
int y=ev->pos().y()-deltay;
--- trunk/extragear/utils/kpager/windowdrag.cpp #1210513:1210514
@@ -23,37 +23,33 @@
*************************************************************************/
+#include <QMimeData>
+
#include <stdio.h>
#include "windowdrag.h"
-PagerWindowDrag::PagerWindowDrag(WId w,int deltax,int deltay, int origdesk,QWidget \
*parent)
- : Q3StoredDrag("application/x-kpager",parent,"windowdrag")
+void PagerWindowDrag::populateMimeData(QMimeData *mimeData, WId w, int deltax, int \
deltay, int origdesk) {
QString tmp;
tmp.sprintf("%d %d %d %d", static_cast<int>(w), deltax, deltay, origdesk);
QByteArray data = tmp.toLatin1();
- setEncodedData(data);
+ mimeData->setData("application/x-kpager", data);
}
-PagerWindowDrag::~PagerWindowDrag()
+bool PagerWindowDrag::canDecode(const QMimeData *mimeData)
{
+ return mimeData->hasFormat("application/x-kpager");
}
-bool PagerWindowDrag::canDecode (QDragMoveEvent *e)
+bool PagerWindowDrag::decode(const QMimeData *mimeData, WId &w, int &deltax, int \
&deltay, int &origdesk) {
- return e->provides("application/x-kpager");
-}
-
-bool PagerWindowDrag::decode( QDropEvent *e, WId &w,int &deltax,int &deltay,int \
&origdesk)
-{
- QByteArray data=e->encodedData("application/x-kpager");
+ QByteArray data = mimeData->data("application/x-kpager");
if (data.size())
{
char *tmp=data.data();
sscanf(tmp,"%lu %d %d %d", &w, &deltax, &deltay, &origdesk);
- e->accept();
return true;
}
return false;
--- trunk/extragear/utils/kpager/windowdrag.h #1210513:1210514
@@ -24,21 +24,15 @@
#ifndef WINDOWDRAG_H
#define WINDOWDRAG_H
-#include <Qt3Support/Q3ColorDrag>
-//Added by qt3to4:
-#include <QDragMoveEvent>
-#include <QDropEvent>
-#include <X11/Xlib.h>
+#include <qwindowdefs.h>
-class PagerWindowDrag : public Q3StoredDrag
+class QMimeData;
+
+namespace PagerWindowDrag
{
-public:
- PagerWindowDrag(WId w,int deltax,int deltay,int origdesk,QWidget *parent);
- virtual ~PagerWindowDrag();
+ void populateMimeData(QMimeData *mimeData, WId w, int deltax, int deltay, int \
origdesk); + bool canDecode(const QMimeData *mimeData);
+ bool decode(const QMimeData *mimeData, WId &w, int &deltax, int &deltay, int \
&origdesk); +}
- static bool canDecode( QDragMoveEvent *e);
- static bool decode ( QDropEvent *e, WId &w,int &deltax,int &deltay,int \
&origdesk);
-
-};
-
#endif
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic