uifw/ganes/src/HgScroller.cpp
branchRCL_3
changeset 7 08e69e956a8c
parent 6 9f56a4e1b8ab
child 8 71dd06cfe933
--- 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();
     }