textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutvkb.cpp
branchRCL_3
changeset 22 1bbdde98cc2d
parent 19 5e18d8c489d6
child 38 b1ea1642412e
--- a/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutvkb.cpp	Tue May 25 13:03:44 2010 +0300
+++ b/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutvkb.cpp	Wed Jun 09 10:03:19 2010 +0300
@@ -1349,6 +1349,10 @@
         {
         //find key        
         //iKeyboard->DrawKey(this);
+        if ( !aFlag )
+            {
+            iKeyCtrl->UpdateChangedArea(EFalse);
+            }
         iKeyCtrl->Draw();
         }
     }
@@ -1503,6 +1507,9 @@
     
     iKeyGc = CFbsBitGc::NewL();
     iKeyGc->Reset();   
+    
+    iHighlightKeyResourceChanged = ETrue;
+    iNormalKeyResourceChanged = ETrue;   
     }
 
 void CVirtualKeyboard::CreateBmpDevL()
@@ -1519,8 +1526,15 @@
             TRAP_IGNORE(CreateBmpDevL());
             }
         }
+    else if(aType == KPenInputOwnDeviceResourceChange)
+        {
+        iExt->iHighlightKeyResourceChanged = ETrue;
+        iExt->iNormalKeyResourceChanged = ETrue;
+        }    
     else
+    	{
         CControlGroup::HandleResourceChange(aType);
+        }
     }
     
 CFbsBitmap* CVirtualKeyboard::PrepareMaskBmpL(CFbsBitGc* aGc, const TDisplayMode& aMode, const TRect& aRect)
@@ -1601,4 +1615,31 @@
     delete keyBmp;        
     return ETrue;
     }
+
+TBool CVirtualKeyboard::PrepareHighlightKeyBmp(const TRect& aRect, const TRect& aInnerRect, const TRect& aKeyRect)
+    {
+    if(HighightKeyBmp()->SizeInPixels() != aRect.Size() || iExt->iHighlightKeyResourceChanged)
+        {
+        iExt->iHighlightKeyResourceChanged = EFalse;
+        return PrepareKeyBmp(HighightKeyBmp(),HighlightKeyDev(),aRect,aInnerRect
+                                ,KeySkinId(EKeyBmpHighlight),KAknsIIDDefault,aKeyRect);
+        
+        }
+    
+    return ETrue;
+    }
+    
+TBool CVirtualKeyboard::PrepareNormalKeyBmp(const TRect& aRect, const TRect& aInnerRect, const TRect& aKeyRect)
+    {
+    if(NormalKeyBmp()->SizeInPixels() != aRect.Size() || iExt->iNormalKeyResourceChanged)
+        {
+        iExt->iNormalKeyResourceChanged = EFalse; 
+        return PrepareKeyBmp(NormalKeyBmp(),NormalKeyDev(),aRect,aInnerRect
+                            ,KeySkinId(EKeyBmpNormal),KAknsIIDDefault,aKeyRect);
+                           
+        }
+        
+    return ETrue;
+    }
+        
 //end of implementation of Class CVirtualKey