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

List:       kde-commits
Subject:    KDE/kdelibs/kdeui
From:       Kévin Ottens <ervin () ipsquad ! net>
Date:       2005-05-21 9:26:12
Message-ID: 1116667572.143873.24852.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 416341 by ervin:

Don't keep the timer going when we left the view, or the signal could
be emitted when it shouldn't.

Thanks to Thomas McGuire for the patch. Nice catch!

BUG:85161


 M  +27 -29    trunk/KDE/kdelibs/kdeui/kiconview.cpp  
 M  +2 -0      trunk/KDE/kdelibs/kdeui/kiconview.h  


--- trunk/KDE/kdelibs/kdeui/kiconview.cpp #416340:416341
@@ -255,6 +255,24 @@
   }
 }
 
+void KIconView::updateDragHoldItem( QDropEvent *e )
+{
+  QIconViewItem *item = findItem( e->pos() );
+
+  if ( d->dragHoldItem != item)
+  {
+    d->dragHoldItem = item;
+    if( item  )
+    {
+      d->dragHoldTimer.start( 1000, true );
+    }
+    else
+    {
+      d->dragHoldTimer.stop();
+    }
+  }
+}
+
 void KIconView::focusOutEvent( QFocusEvent *fe )
 {
   m_pAutoSelect->stop();
@@ -313,41 +331,21 @@
 
 void KIconView::contentsDragEnterEvent( QDragEnterEvent *e )
 {
-    QIconViewItem *item = findItem( e->pos() );
-
-    if ( d->dragHoldItem != item)
-    {
-        d->dragHoldItem = item;
-        if( item  )
-        {
-            d->dragHoldTimer.start( 1000, true );
-        }
-        else
-        {
-            d->dragHoldTimer.stop();
-        }
-    }
-
+    updateDragHoldItem( e );
     QIconView::contentsDragEnterEvent( e );
 }
 
-void KIconView::contentsDragMoveEvent( QDragMoveEvent *e )
+void KIconView::contentsDragLeaveEvent( QDragLeaveEvent *e )
 {
-    QIconViewItem *item = findItem( e->pos() );
+    d->dragHoldTimer.stop();
+    d->dragHoldItem = 0L;
+    QIconView::contentsDragLeaveEvent( e );
+}
 
-    if ( d->dragHoldItem != item)
-    {
-        d->dragHoldItem = item;
-        if( item  )
-        {
-            d->dragHoldTimer.start( 1000, true );
-        }
-        else
-        {
-            d->dragHoldTimer.stop();
-        }
-    }
 
+void KIconView::contentsDragMoveEvent( QDragMoveEvent *e )
+{
+    updateDragHoldItem( e );
     QIconView::contentsDragMoveEvent( e );
 }
 
--- trunk/KDE/kdelibs/kdeui/kiconview.h #416340:416341
@@ -164,6 +164,7 @@
 
 protected:
   void emitExecute( QIconViewItem *item, const QPoint &pos );
+  void updateDragHoldItem( QDropEvent *e );
 
   virtual void focusOutEvent( QFocusEvent *fe );
   virtual void leaveEvent( QEvent *e );
@@ -171,6 +172,7 @@
   virtual void contentsMouseDoubleClickEvent ( QMouseEvent * e );
   virtual void contentsMouseReleaseEvent( QMouseEvent *e );
   virtual void contentsDragEnterEvent( QDragEnterEvent *e );
+  virtual void contentsDragLeaveEvent( QDragLeaveEvent *e );
   virtual void contentsDragMoveEvent( QDragMoveEvent *e );
   virtual void contentsDropEvent( QDropEvent* e );
   virtual void wheelEvent( QWheelEvent *e );
[prev in list] [next in list] [prev in thread] [next in thread] 

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