diff -r 9f56a4e1b8ab -r 08e69e956a8c uifw/ganes/src/HgScroller.cpp --- a/uifw/ganes/src/HgScroller.cpp Mon Mar 15 12:41:34 2010 +0200 +++ b/uifw/ganes/src/HgScroller.cpp Wed Mar 31 21:59:52 2010 +0300 @@ -207,8 +207,11 @@ { if( aIndex >= 0 && aIndex < iItems.Count() ) { - iSelectedIndex = iItems.Count() - 1; - FitSelectionToView(); + if( !IsDisplayed( aIndex ) ) + { + iSelectedIndex = iItems.Count() - 1; + FitSelectionToView(); + } iSelectedIndex = aIndex; // Move view position so that it is fully visible. @@ -541,7 +544,7 @@ // void CHgScroller::InitScrollbarL() { - if( iScrollbar && iItemCount ) + if( iScrollbar ) { TBool prevStatic = iScrollbar->IsStatic(); iScrollbar->InitScrollBarL( Rect(), @@ -1083,8 +1086,12 @@ { iCurrentRow = newRow; + TBool needsFeedback = + ( iCurrentRow >= 0 && iCurrentRow <= iItems.Count() ) + || ( iItems.Count() - iCurrentRow > ItemsOnScreen() ); + TInt action = iPhysics->OngoingPhysicsAction(); - if( action != CAknPhysics::EAknPhysicsActionNone ) + if( action != CAknPhysics::EAknPhysicsActionNone && needsFeedback ) { TTouchFeedbackType type( ETouchFeedbackVibra ); if ( CAknPhysics::EAknPhysicsActionDragging == action ) @@ -1469,6 +1476,7 @@ // void CHgScroller::HandleLosingForeground() { + iPointerDown = EFalse; iPopupText1.Zero(); iPopupText2.Zero(); }