uifw/EikStd/coctlsrc/aknstyluspopupmenuphysicshandler.cpp
branchRCL_3
changeset 20 d48ab3b357f1
parent 19 aecbbf00d063
--- a/uifw/EikStd/coctlsrc/aknstyluspopupmenuphysicshandler.cpp	Tue Aug 31 15:28:30 2010 +0300
+++ b/uifw/EikStd/coctlsrc/aknstyluspopupmenuphysicshandler.cpp	Wed Sep 01 12:16:19 2010 +0100
@@ -110,7 +110,7 @@
             if ( feedback )
                 {
                 feedback->InstantFeedback( NULL,
-                                           ETouchFeedbackBasicItem,
+                                           ETouchFeedbackList,
                                            aPointerEvent );
                 }
             }
@@ -146,17 +146,6 @@
         iPressedDown = EFalse;              
         TPoint adjustedPosition( aPointerEvent.iPosition + TPoint(0, Offset() ) );
         TInt item = iPopUpMenuContent->ContainingItem( adjustedPosition );
-        if ( item != KNoItemSelected )
-            {
-        MTouchFeedback* feedback = MTouchFeedback::Instance();
-        if ( feedback )
-            {
-                feedback->InstantFeedback( NULL,
-                                           ETouchFeedbackBasicItem,
-                                           ETouchFeedbackVibra,
-                                           aPointerEvent );
-                }
-            }
  
         TPoint distance( 0, iStartPosition.iY - aPointerEvent.iPosition.iY );
         if ( iPhysics->StartPhysics( distance, iStartTime ) )
@@ -170,7 +159,16 @@
             {
             if ( iViewRect.Contains( aPointerEvent.iPosition ) )
                 {
-                iPopUpMenuContent->SelectItem( 
+                if( AknLayoutUtils::PenEnabled() )
+                    {
+                    MTouchFeedback* feedback = MTouchFeedback::Instance();
+                    if( feedback )
+                        {
+                        feedback->InstantFeedback( NULL, ETouchFeedbackList,
+                                            ETouchFeedbackVibra, aPointerEvent );
+                        }
+                    }
+                iPopUpMenuContent->SelectItemL( 
                         iPopUpMenuContent->CurrentItem() );
                 }
             else 
@@ -244,7 +242,10 @@
     TSize viewSize( iViewRect.Width(), iViewRect.Height() );
     
     iPhysics->InitPhysicsL( worldSize, viewSize, EFalse );
-    iPhysics->UpdateViewWindowControl( iPopUpMenuContent );
+    if ( iPopUpMenuContent->IsVisible() )
+    	{
+    	iPhysics->UpdateViewWindowControl( iPopUpMenuContent );
+    	}
     }
     
 
@@ -281,6 +282,10 @@
     TBool aDrawNow,
     TUint /*aFlags*/ )
     {
+    if ( !iPopUpMenuContent->IsVisible() )
+    	{
+    	return;
+    	}    
     iScrollIndex = aNewPosition.iY - iViewRect.Height() / 2;
     
     ScrollView( aDrawNow );
@@ -378,29 +383,24 @@
         iPrevTopmostItem = topmostItem;    
         
         //when appear or dispear a tiem,a feedback was given.
-        if ( abs( iPrevOffset ) <= iViewRect.Height()
+        if ( abs( iPrevOffset ) < iViewRect.Height() + iItemHeight
               && ( iPrevOffset/iItemHeight ) != iOffsetItemCount )
             {
             if ( iPhysics )
                 {
-                TTouchFeedbackType feedbackType = ETouchFeedbackVibra;
-                switch( iPhysics->OngoingPhysicsAction() )
+                switch(iPhysics->OngoingPhysicsAction())
                     {
+                    case CAknPhysics::EAknPhysicsActionBouncing:
                     case CAknPhysics::EAknPhysicsActionDragging:
-                        {
-                        feedbackType = static_cast<TTouchFeedbackType>
-                                  ( ETouchFeedbackVibra | ETouchFeedbackAudio );
-                        }
                     case CAknPhysics::EAknPhysicsActionFlicking:
-                    case CAknPhysics::EAknPhysicsActionBouncing:
                         {
                         MTouchFeedback* feedback = MTouchFeedback::Instance();
                         if ( feedback )
                             {
                             feedback->InstantFeedback( iPopUpMenuContent,
-                                                    ETouchFeedbackSensitiveItem,
-                                                    feedbackType,
-                                                    TPointerEvent() );
+                                                ETouchFeedbackSensitiveList,
+                                                ETouchFeedbackVibra,
+                                                TPointerEvent() );
                             }
                         break;
                         }
@@ -408,8 +408,8 @@
                         break;
                     }
                 }
+            iOffsetItemCount = iPrevOffset/iItemHeight;
             }
-        iOffsetItemCount = iPrevOffset/iItemHeight;
         }
     }