meetingrequest/mrgui/src/cmrfieldcontainer.cpp
branchRCL_3
changeset 80 726fba06891a
parent 64 3533d4323edc
--- a/meetingrequest/mrgui/src/cmrfieldcontainer.cpp	Wed Sep 15 11:52:37 2010 +0300
+++ b/meetingrequest/mrgui/src/cmrfieldcontainer.cpp	Wed Oct 13 14:11:15 2010 +0300
@@ -361,8 +361,10 @@
         // Remove existing focus
         focusedField->SetOutlineFocusL( EFalse );
         focusedField->SetFocus( EFalse );
+        focusedField->MoveToScreen( EFalse );
 
         // Set focus to new field
+        visibleField->MoveToScreen( ETrue );
         visibleField->SetOutlineFocusL( ETrue );
         visibleField->SetFocus( ETrue );
 
@@ -554,7 +556,7 @@
                 // is done.
                 ScrollControlVisible( iFocusedFieldIndex );
                 }
-
+            SizeChanged();
             DrawDeferred();
             }
         }
@@ -920,9 +922,11 @@
 
         if ( field->IsVisible() )
             {
-            field->SetPosition( aTl );
-
-            aTl.iY += field->Size().iHeight;
+			TPoint pos( field->Position() );
+			pos.iY = aTl.iY;
+			field->SetPosition( pos );
+	
+			aTl.iY += field->Size().iHeight;
             }
         }
     }
@@ -1064,6 +1068,23 @@
     field->MoveToScreen( !iScrolling );
     }
 
+// ---------------------------------------------------------------------------
+// CMRFieldContainer::RedrawField
+// ---------------------------------------------------------------------------
+//
+void CMRFieldContainer::RedrawField( CESMRField& aField )
+    {
+    FUNC_LOG;
+
+    // Record and redraw field only if it is not on screen
+    if ( !aField.HasOutlineFocus() )
+        {
+        aField.RecordField();
+        TRect rect( aField.Rect() );
+        rect.Move( iPosition.iX - rect.iTl.iX, 0 );
+        aField.DrawNow( rect );
+        }
+    }
 
 // ---------------------------------------------------------------------------
 // CMRFieldContainer::Draw