commit 7e5368f6d02d9d34863cf5f5427141693d237ad4
Author: Hugo Pereira Da Costa <hugo@oxygen-icons.org>
Date:   Tue Aug 28 09:26:04 2012 +0200

    Fixed positioning of tabs when manually reordering with right mouse button
    Made 'drop target' animation consistent with where tab is actually dropped
    Cleanup code.
    CCBUG: 305443

diff --git a/kwin/clients/oxygen/oxygenclient.cpp b/kwin/clients/oxygen/oxygenclient.cpp
index 5fbb4fb..0b39d7d 100644
--- a/kwin/clients/oxygen/oxygenclient.cpp
+++ b/kwin/clients/oxygen/oxygenclient.cpp
@@ -1620,7 +1620,8 @@ namespace Oxygen
             const int clickedIndex( tabIndexAt( point ) );
             _mouseButton = Qt::NoButton;
             if ( tabIndexAt( point ) > -1)
-                showWindowMenu( widget()->mapToGlobal( event->pos() ), tabId(clickedIndex) );
+            { showWindowMenu( widget()->mapToGlobal( event->pos() ), tabId(clickedIndex) ); }
+
             accepted = true; // displayClientMenu can possibly destroy the deco...
 
         }
@@ -1632,8 +1633,7 @@ namespace Oxygen
     {
 
         bool accepted( false );
-        if( _mouseButton == event->button() &&
-            buttonToWindowOperation( _mouseButton ) != OperationsOp )
+        if( _mouseButton == event->button() && buttonToWindowOperation( _mouseButton ) != OperationsOp )
         {
 
             const QPoint point = event->pos();
@@ -1755,19 +1755,18 @@ namespace Oxygen
         // check if drag enter is allowed
         if( !event->mimeData()->hasFormat( tabDragMimeType() ) || hideTitleBar() ) return false;
 
-        //
+        // accept event
         event->acceptProposedAction();
+
+        // animate
         if( event->source() != widget() )
         {
 
-            const QPoint position( event->pos() );
-            _itemData.animate( AnimationEnter, tabIndexAt( position, true ) );
+            _itemData.animate( AnimationEnter, tabIndexAt( event->pos(), true ) );
 
         } else if( _itemData.count() > 1 )  {
 
-            const QPoint position( event->pos() );
-            const int clickedIndex( tabIndexAt( position, false ) );
-            _itemData.animate( AnimationEnter|AnimationSameTarget, clickedIndex );
+            _itemData.animate( AnimationEnter|AnimationSameTarget, tabIndexAt( event->pos(), true ) );
 
         }
 
@@ -1791,7 +1790,6 @@ namespace Oxygen
 
         }
 
-
         return true;
 
     }
@@ -1802,19 +1800,17 @@ namespace Oxygen
 
         // check format
         if( !event->mimeData()->hasFormat( tabDragMimeType() ) ) return false;
+
+        // animate
         if( event->source() != widget() )
         {
 
-            const QPoint position( event->pos() );
-            _itemData.animate( AnimationMove, tabIndexAt( position, true ) );
+            _itemData.animate( AnimationMove, tabIndexAt( event->pos(), true ) );
 
         } else if( _itemData.count() > 1 )  {
 
             if( _dragStartTimer.isActive() ) _dragStartTimer.stop();
-
-            const QPoint position( event->pos() );
-            const int clickedIndex( tabIndexAt( position, false ) );
-            _itemData.animate( AnimationMove|AnimationSameTarget, clickedIndex );
+            _itemData.animate( AnimationMove|AnimationSameTarget, tabIndexAt( event->pos(), true ) );
 
         }
 
@@ -1834,20 +1830,15 @@ namespace Oxygen
 
         _itemData.setDirty( true );
 
-        if( widget() != event->source() )
-            setForceActive( true );
+        if( widget() != event->source() ) setForceActive( true );
 
         const long source = QString( groupData->data( tabDragMimeType() ) ).toLong();
-        int clickedIndex( tabIndexAt( point, true ) );
-        if (clickedIndex < 0)
-            tab_A_behind_B(source, tabId(_itemData.count() - 1));
-        else if (clickedIndex)
-            tab_A_behind_B(source, tabId(clickedIndex));
-        else
-            tab_A_before_B(source, tabId(clickedIndex));
-
-        if( widget() == event->source() )
-            updateTitleRect();
+        const int clickedIndex( tabIndexAt( point, true ) );
+        if( clickedIndex < 0 ) tab_A_behind_B( source, tabId(_itemData.count()-1) );
+        else tab_A_before_B( source, tabId(clickedIndex) );
+
+        // update title
+        if( widget() == event->source() ) updateTitleRect();
 
         _titleAnimationData->reset();
         return true;
