diff -r aecbbf00d063 -r d48ab3b357f1 uifw/EikStd/coctlsrc/aknstyluspopupmenuphysicshandler.cpp --- 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 - ( 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; } }