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

List:       kde-commits
Subject:    branches/KDE/4.0/kdelibs/kdeui/widgets
From:       Marc Mutz <mutz () kde ! org>
Date:       2008-02-26 17:08:58
Message-ID: 1204045738.623983.10459.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 779621 by mutz:

Fix KTab{Widget,Bar}'s egoistic DnD behaviour. Patch as posted on k-c-d

 M  +15 -2     ktabbar.cpp  
 M  +10 -2     ktabwidget.cpp  


--- branches/KDE/4.0/kdelibs/kdeui/widgets/ktabbar.cpp #779620:779621
@@ -279,7 +279,21 @@
 
 void KTabBar::dragEnterEvent( QDragEnterEvent *event )
 {
-  event->setAccepted( true );
+  int tab = selectTab( event->pos() );
+  if ( tab != -1 ) {
+    bool accept = false;
+    // The receivers of the testCanDecode() signal has to adjust
+    // 'accept' accordingly.
+    emit testCanDecode( event, accept );
+    if ( accept && tab != currentIndex() ) {
+      d->mDragSwitchTab = tab;
+      d->mActivateDragSwitchTabTimer->start( QApplication::doubleClickInterval() * 2 );
+    }
+
+    event->setAccepted( accept );
+    return;
+  }
+
   QTabBar::dragEnterEvent( event );
 }
 
@@ -300,7 +314,6 @@
     return;
   }
 
-  event->setAccepted( false );
   QTabBar::dragMoveEvent( event );
 }
 
--- branches/KDE/4.0/kdelibs/kdeui/widgets/ktabwidget.cpp #779620:779621
@@ -312,7 +312,16 @@
 
 void KTabWidget::dragEnterEvent( QDragEnterEvent *event )
 {
-  event->setAccepted( true );
+  if ( d->isEmptyTabbarSpace( event->pos() ) ) {
+    bool accept = false;
+    // The receivers of the testCanDecode() signal has to adjust
+    // 'accept' accordingly.
+    emit testCanDecode( event, accept);
+
+    event->setAccepted( accept );
+    return;
+  }
+
   QTabWidget::dragEnterEvent( event );
 }
 
@@ -328,7 +337,6 @@
     return;
   }
 
-  event->setAccepted( false );
   QTabWidget::dragMoveEvent( event );
 }
 
[prev in list] [next in list] [prev in thread] [next in thread] 

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