diff -r 2f259fa3e83a -r 3320e4e6e8bb uifw/AvKon/src/Aknslider.cpp --- a/uifw/AvKon/src/Aknslider.cpp Tue Feb 02 01:00:49 2010 +0200 +++ b/uifw/AvKon/src/Aknslider.cpp Fri Apr 16 15:13:44 2010 +0300 @@ -3150,6 +3150,15 @@ { if ( touchDownArea.Contains( aEvent.iPosition ) ) { + TInt stepCount = SliderData()->Range() / SliderData()->iStepSize; + if ( stepCount <= KStepThreshold ) + { + MTouchFeedback* feedback = MTouchFeedback::Instance(); + if ( feedback ) + { + feedback->InstantFeedback( this, ETouchFeedbackBasicSlider, aEvent ); + } + } // repeat until thumb reaches the stylus down position iExt->iPenInputPos = aEvent.iPosition; @@ -3161,7 +3170,7 @@ MTouchFeedback* feedback = MTouchFeedback::Instance(); if ( feedback ) { - feedback->InstantFeedback( this, ETouchFeedbackSlider, aEvent ); + feedback->InstantFeedback( this, ETouchFeedbackBasicSlider, aEvent ); } iExt->SetFlag( CAknSliderExtension::EFlagDraggingThumb ); reportDragEvent = EDragMarkerStart; @@ -3248,7 +3257,7 @@ if ( feedback ) { feedback->InstantFeedback( this, - ETouchFeedbackSlider, + ETouchFeedbackBasicSlider, ETouchFeedbackVibra, aEvent ); } @@ -3609,11 +3618,29 @@ { if( aFeedback ) { - MTouchFeedback* feedback = MTouchFeedback::Instance(); - if ( feedback ) - { - feedback->InstantFeedback( this, ETouchFeedbackSlider ); - } + TInt stepCount = SliderData()->Range() / SliderData()->iStepSize; + if ( stepCount > KStepThreshold ) + { + if ( iExt->IsFlagSet( CAknSliderExtension::EFlagPlayingContinuousFb )) + { + if ( SliderData()->iFeedbackStyle == EAknSliderFbDynamic ) + { + ModifyFeedback(); + } + } + else + { + StartFeedback( NULL, KNoFeedbackTimeout ); + } + } + else + { + MTouchFeedback* feedback = MTouchFeedback::Instance(); + if ( feedback ) + { + feedback->InstantFeedback( this, ETouchFeedbackBasicSlider ); + } + } } Window().Invalidate( Rect() );