[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