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

List:       kde-commits
Subject:    KDE/kdelibs/kdeui/widgets
From:       David Arturo Palacio <dpalacio () uninorte ! edu ! co>
Date:       2010-09-03 11:41:02
Message-ID: 20100903114102.4B582AC883 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1171318 by davidp:

Move tab switching by mouse wheel scrolling from KTabWidget to KTabBar.
Skip disabled pages.

BUG: 248617
BUG: 248962


 M  +24 -3     ktabbar.cpp  
 M  +2 -8      ktabwidget.cpp  


--- trunk/KDE/kdelibs/kdeui/widgets/ktabbar.cpp #1171317:1171318
@@ -315,11 +315,32 @@
 #ifndef QT_NO_WHEELEVENT
 void KTabBar::wheelEvent( QWheelEvent *event )
 {
-  if ( event->orientation() == Qt::Horizontal )
+  if ( !( event->orientation() == Qt::Horizontal ) ) {
+    if ( receivers( SIGNAL(wheelDelta(int)) ) ) {
+      emit( wheelDelta( event->delta() ) );
     return;
-
-  emit( wheelDelta( event->delta() ) );
 }
+    int lastIndex = count() - 1;
+    //Set an invalid index as base case
+    int targetIndex = -1;
+    bool forward = event->delta() < 0;
+    if ( forward && lastIndex == currentIndex() ) {
+      targetIndex = 0;
+    }
+    else if ( !forward && 0 == currentIndex() ) {
+      targetIndex = lastIndex;
+    }
+    //Will not move when targetIndex is invalid
+    setCurrentIndex( targetIndex );
+    //If it has not moved yet (targetIndex == -1), or if it moved but current tab is \
disabled +    if ( targetIndex != currentIndex() || !isTabEnabled( targetIndex ) ) {
+      QTabBar::wheelEvent( event );
+    }
+    event->accept();
+  } else {
+    event->ignore();
+  }
+}
 #endif
 
 bool KTabBar::isTabReorderingEnabled() const
--- trunk/KDE/kdelibs/kdeui/widgets/ktabwidget.cpp #1171317:1171318
@@ -236,9 +236,6 @@
   connect(tabBar(), SIGNAL(receivedDropEvent( int, QDropEvent * )), \
SLOT(receivedDropEvent( int, QDropEvent * )));  connect(tabBar(), SIGNAL(moveTab( \
int, int )), SLOT(moveTab( int, int )));  connect(tabBar(), SIGNAL(tabCloseRequested( \
                int )), SLOT(closeRequest( int )));
-#ifndef QT_NO_WHEELEVENT
-  connect(tabBar(), SIGNAL(wheelDelta( int )), SLOT(wheelDelta( int )));
-#endif
 }
 
 KTabWidget::~KTabWidget()
@@ -448,13 +445,10 @@
 #ifndef QT_NO_WHEELEVENT
 void KTabWidget::wheelEvent( QWheelEvent *event )
 {
-  if ( event->orientation() == Qt::Horizontal )
-    return;
-
   if ( d->isEmptyTabbarSpace( event->pos() ) )
-    wheelDelta( event->delta() );
+    QCoreApplication::sendEvent( tabBar(), event );
   else
-    event->ignore();
+    QTabWidget::wheelEvent( event );
 }
 
 void KTabWidget::wheelDelta( int delta )


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

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