[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    koffice/lib/kopainter
From:       Rob Buis <rwlbuis () xs4all ! nl>
Date:       2003-06-01 20:10:31
[Download RAW message or body]

CVS commit by buis: 

Support for starting a drag from KoIconChooser.
Default behaviour is no drag.


  M +26 -0     koIconChooser.cc   1.7
  M +8 -0      koIconChooser.h   1.6


--- koffice/lib/kopainter/koIconChooser.cc  #1.6:1.7
@@ -24,4 +24,5 @@
 #include <qpainter.h>
 #include <qcursor.h>
+#include <qapplication.h>
 #include <qhbox.h>
 #include <qlayout.h>
@@ -75,4 +76,6 @@ QGridView(parent, name)
   mItemWidth = aIconSize.width();
   mItemHeight = aIconSize.height();
+  mMouseButtonDown = false;
+  mDragEnabled = false;
 }
 
@@ -143,7 +146,9 @@ void KoIconChooser::mousePressEvent(QMou
 {
   QGridView::mousePressEvent(e);
+  mMouseButtonDown = true;
   if(e->button() == LeftButton)
   {
     QPoint p = e->pos();
+    mDragStartPos = p;
     int row = rowAt(contentsY() + p.y());
     int col = columnAt(contentsX() + p.x());
@@ -170,7 +175,28 @@ void KoIconChooser::mousePressEvent(QMou
 }
 
+void KoIconChooser::mouseMoveEvent(QMouseEvent *e)
+{
+  if(mMouseButtonDown && mDragEnabled )
+  {
+    if(mPixmapWidget)
+    {
+      delete mPixmapWidget;
+      mPixmapWidget = 0L;
+    }
+    if( ( mDragStartPos - e->pos() ).manhattanLength() > QApplication::startDragDistance() )
+      startDrag();
+  }
+}
+
+void
+KoIconChooser::startDrag()
+{
+  mMouseButtonDown = false;
+}
+
 // when a big item is shown in full size, delete it on mouseRelease
 void KoIconChooser::mouseReleaseEvent(QMouseEvent * /*e*/)
 {
+  mMouseButtonDown = false;
   if(mPixmapWidget)
   {

--- koffice/lib/kopainter/koIconChooser.h  #1.5:1.6
@@ -73,4 +73,7 @@ public:
   void setCurrentItem(KoIconItem *item);
 
+  void setDragEnabled(bool allow) { mDragEnabled = allow; }
+  bool dragEnabled() const { return mDragEnabled; }
+
 signals:
   void  selected(KoIconItem *item);
@@ -80,6 +83,8 @@ protected:
   void mousePressEvent( QMouseEvent *e);
   void mouseReleaseEvent( QMouseEvent *e);
+  void mouseMoveEvent( QMouseEvent *e);
   void resizeEvent(QResizeEvent *e);
   void paintCell(QPainter *p, int row, int col);
+  virtual void startDrag();
 
 private:
@@ -100,4 +105,7 @@ private:
   int                     mCurCol;
   int                     mMargin;
+  QPoint                  mDragStartPos;
+  bool                    mMouseButtonDown;
+  bool                    mDragEnabled;
 };
 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic