Revision: 201021 RCL_3
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Wed, 09 Jun 2010 10:03:19 +0300
branchRCL_3
changeset 13 1bbdde98cc2d
parent 12 5e18d8c489d6
Revision: 201021 Kit: 2010123
fep/aknfep/group/bld.inf
fep/aknfep/help/data/xhtml.zip
fep/aknfep/help/group/bld.inf
fep/aknfep/help/inc/hwr.vqwerty.vitu.hlp.hrh
fep/aknfep/help/rom/fephelps_variant.iby
fep/aknfep/inc/AknFepManager.h
fep/aknfep/inc/AknFepPluginManager.h
fep/aknfep/peninputplugins/peninputimeplugincn/src/pluginfepmanagerbase.cpp
fep/aknfep/peninputplugins/peninputimeplugingeneric/src/pluginfepmanagerbase.cpp
fep/aknfep/peninputplugins/peninputimepluginitut/src/pluginfepmanagerbase.cpp
fep/aknfep/src/AknFepHashKeyManager.cpp
fep/aknfep/src/AknFepManager.cpp
fep/aknfep/src/AknFepPluginManager.cpp
inputmethods_plat/aknfep_pen_support_api/inc/aknfeppeninputenums.h
inputmethods_plat/pen_input_server_api/inc/peninputclient.h
inputmethods_plat/pen_input_server_api/inc/peninputcmd.h
textinput/peninputarc/bwins/peninputClientU.DEF
textinput/peninputarc/eabi/peninputClientU.DEF
textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutbasecontrol.h
textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutvirtualkeyctrl.h
textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutvkb.h
textinput/peninputarc/inc/pensrvcliinc/peninputclientimpl.h
textinput/peninputarc/inc/pensrvcliinc/peninputclientserver.h
textinput/peninputarc/inc/pensrvcliinc/peninputserver.h
textinput/peninputarc/inc/pensrvcliinc/penuiwndctrl.h
textinput/peninputarc/src/peninputclient/penclientimpl.cpp
textinput/peninputarc/src/peninputclient/peninputclient.cpp
textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutbasecontrol.cpp
textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutbubblectrl.cpp
textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutcursor.cpp
textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutmultilineicfeditor.cpp
textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutpopupwnd.cpp
textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutrootctrl.cpp
textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutvkb.cpp
textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutvkbkeyctrl.cpp
textinput/peninputarc/src/peninputlayoutcontrol/peninputuilayout.cpp
textinput/peninputarc/src/peninputserverapp/peninputserver.cpp
textinput/peninputarc/src/peninputserverapp/peninputserversession.cpp
textinput/peninputarc/src/peninputserverapp/penuiwndctrl.cpp
textinput/peninputcommonctrls/src/peninputbuttons/peninputbutton.cpp
textinput/peninputfingerhwr/src/peninputfingerhwrlayout.cpp
textinput/peninputfingerhwr/src/peninputfingerhwrwnd.cpp
textinput/peninputgenericitut/src/peninputgenericitutlayout.cpp
textinput/peninputgenericitut/src/peninputgenericitutwindow.cpp
textinput/peninputgenericvkb/src/peninputgenericvkblayout.cpp
textinput/peninputsplititut/rom/peninputsplititut_variant.iby
textinput/peninputsplititut/rom/peninputsplititutresources.iby
textinput/peninputsplitqwerty/rom/peninputsplitqwerty_variant.iby
textinput/peninputsplitqwerty/rom/peninputsplitqwertyresources.iby
--- a/fep/aknfep/group/bld.inf	Tue May 25 13:03:44 2010 +0300
+++ b/fep/aknfep/group/bld.inf	Wed Jun 09 10:03:19 2010 +0300
@@ -35,6 +35,11 @@
 // If there's no destination then the source file will be copied
 // to the same name in /epoc32/include
 
+PRJ_PLATFORMS
+DEFAULT
+//  Help exports
+#include "../help/group/bld.inf"
+
 ../inc/AknFepManagerInterface.h     |../../../inc/AknFepManagerInterface.h
 ../inc/AknFepManagerUIInterface.h   |../../../inc/AknFepManagerUIInterface.h
 ../inc/AknFepUiIndicEnums.h         |../../../inc/AknFepUiIndicEnums.h
Binary file fep/aknfep/help/data/xhtml.zip has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fep/aknfep/help/group/bld.inf	Wed Jun 09 10:03:19 2010 +0300
@@ -0,0 +1,26 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - Initial contribution
+* 
+* Contributors:
+* 
+* 
+* Description:
+* Export help related files.
+*
+*/
+
+#include <platform_paths.hrh>				
+PRJ_EXPORTS
+:zip ../data/xhtml.zip   /epoc32/data/z/resource/ overwrite
+:zip ../data/xhtml.zip   /epoc32/winscw/c/resource/ overwrite
+
+../inc/hwr.vqwerty.vitu.hlp.hrh	MW_LAYER_PLATFORM_EXPORT_PATH(csxhelp/hwr.vqwerty.vitu.hlp.hrh)
+../rom/fephelps_variant.iby		CUSTOMER_APP_LAYER_IBY_EXPORT_PATH(fephelps_variant.iby)
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fep/aknfep/help/inc/hwr.vqwerty.vitu.hlp.hrh	Wed Jun 09 10:03:19 2010 +0300
@@ -0,0 +1,29 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+* 
+* Description:
+*
+*/
+	
+//
+// hwr.vqwerty.vitu.hlp.hrh generated by CSXHelp Utilities.
+//           
+
+#ifndef __HWR_VQWERTY_VITU_HLP_HRH__
+#define __HWR_VQWERTY_VITU_HLP_HRH__
+
+_LIT(KHWR_HLP_MAIN_VIEW, "HWR_HLP_MAIN_VIEW"); // 
+_LIT(KVQWERTY_HLP_MAIN_VIEW, "VQWERTY_HLP_MAIN_VIEW"); // 
+_LIT(KVITU_HLP_MAIN_VIEW, "VITU_HLP_MAIN_VIEW"); // 
+
+#endif 
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fep/aknfep/help/rom/fephelps_variant.iby	Wed Jun 09 10:03:19 2010 +0300
@@ -0,0 +1,11 @@
+#ifndef  __AKNFEPHELPS_VARIANT_IBY__
+#define  __AKNFEPHELPS_VARIANT_IBY__
+
+#if defined(FF_S60_HELPS_IN_USE)
+    data=LOCALISE(DATAZ_\resource\xhtml\%02d\0x100056de\contents.zip, RESOURCE_FILES_DIR\xhtml\%02d\0x100056de\contents.zip)
+    data=LOCALISE(DATAZ_\resource\xhtml\%02d\0x100056de\index.xml, RESOURCE_FILES_DIR\xhtml\%02d\0x100056de\index.xml)
+    data=LOCALISE(DATAZ_\resource\xhtml\%02d\0x100056de\keywords.xml, RESOURCE_FILES_DIR\xhtml\%02d\0x100056de\keywords.xml)
+    data=LOCALISE(DATAZ_\resource\xhtml\%02d\0x100056de\meta.xml, RESOURCE_FILES_DIR\xhtml\%02d\0x100056de\meta.xml)
+#endif
+
+#endif
\ No newline at end of file
--- a/fep/aknfep/inc/AknFepManager.h	Tue May 25 13:03:44 2010 +0300
+++ b/fep/aknfep/inc/AknFepManager.h	Wed Jun 09 10:03:19 2010 +0300
@@ -902,6 +902,8 @@
 		TBool IsSpecialNumericEditor();
 		
 	void TryPopExactWordInICFL();
+	
+	void HandleChangeInFocusForSettingFep();
 
 private:
 
@@ -2813,6 +2815,14 @@
      * can not changed in other cases, e.g. in latin-only editor
      */
     TInt iActiveInputLanguage;
+    
+    /**
+     * indicate whether matches popup list was lauched,
+     * when rotating the screen, we need to consider it, e.g V-ITUT  to FSQ
+     */
+    TBool iMatchesListLaunched;
+
+
 public:
 
     //the follow 8 functions for phrase creation 
--- a/fep/aknfep/inc/AknFepPluginManager.h	Tue May 25 13:03:44 2010 +0300
+++ b/fep/aknfep/inc/AknFepPluginManager.h	Wed Jun 09 10:03:19 2010 +0300
@@ -87,7 +87,8 @@
     EPluginSwitchMode,
     EPluginUpdatePenInputITIStatus,
 	EPluginEnableFetchDimState,
-    EPluginArabicNumModeChanged
+    EPluginArabicNumModeChanged,
+	EPluginEnablePriorityChangeOnOriChange
     };
 
 /** 
--- a/fep/aknfep/peninputplugins/peninputimeplugincn/src/pluginfepmanagerbase.cpp	Tue May 25 13:03:44 2010 +0300
+++ b/fep/aknfep/peninputplugins/peninputimeplugincn/src/pluginfepmanagerbase.cpp	Wed Jun 09 10:03:19 2010 +0300
@@ -335,7 +335,10 @@
 //
 void CPluginFepManagerBase::ActivateUI()
     {
-    iPenInputServer->ActivateLayout( ETrue );    
+    if(iPenInputServer)
+        {
+        iPenInputServer->ActivateLayout( ETrue ); 
+        }   
     }
 
 // -----------------------------------------------------------------------------
--- a/fep/aknfep/peninputplugins/peninputimeplugingeneric/src/pluginfepmanagerbase.cpp	Tue May 25 13:03:44 2010 +0300
+++ b/fep/aknfep/peninputplugins/peninputimeplugingeneric/src/pluginfepmanagerbase.cpp	Wed Jun 09 10:03:19 2010 +0300
@@ -366,7 +366,10 @@
 //
 void CPluginFepManagerBase::ActivateUI()
     {
-    iPenInputServer->ActivateLayout( ETrue );    
+    if(iPenInputServer)
+        {
+        iPenInputServer->ActivateLayout( ETrue ); 
+        }    
     }
 
 // -----------------------------------------------------------------------------
--- a/fep/aknfep/peninputplugins/peninputimepluginitut/src/pluginfepmanagerbase.cpp	Tue May 25 13:03:44 2010 +0300
+++ b/fep/aknfep/peninputplugins/peninputimepluginitut/src/pluginfepmanagerbase.cpp	Wed Jun 09 10:03:19 2010 +0300
@@ -437,7 +437,10 @@
 //
 void CPluginFepManagerBase::ActivateUI()
     {
-    iPenInputServer->ActivateLayout( ETrue );    
+    if(iPenInputServer)
+        {
+        iPenInputServer->ActivateLayout( ETrue ); 
+        }  
     }
 
 // -----------------------------------------------------------------------------
--- a/fep/aknfep/src/AknFepHashKeyManager.cpp	Tue May 25 13:03:44 2010 +0300
+++ b/fep/aknfep/src/AknFepHashKeyManager.cpp	Wed Jun 09 10:03:19 2010 +0300
@@ -138,7 +138,8 @@
     {
     TKeyResponse response = EKeyWasNotConsumed;
     TBool phoneIdle = (iFepMan.EditorType() == CAknExtendedInputCapabilities::EPhoneNumberEditor); 
-    if(phoneIdle)
+    // Don't handle hash key unless it comes from virtual keyboard.
+    if( phoneIdle && !iFepMan.PluginInputMode() )
         {
         return response;
         }
--- a/fep/aknfep/src/AknFepManager.cpp	Tue May 25 13:03:44 2010 +0300
+++ b/fep/aknfep/src/AknFepManager.cpp	Wed Jun 09 10:03:19 2010 +0300
@@ -3507,6 +3507,11 @@
         }
     }
 
+void CAknFepManager::HandleChangeInFocusForSettingFep()
+	{
+	HandleChangeInFocus();
+	}
+
 void CAknFepManager::HandleDestructionOfFocusedItem()
     {
     if (iInputCapabilities.FepAwareTextEditor())
@@ -5327,6 +5332,11 @@
                         
         case R_AVKON_PREDICTIVE_TEXT_MENU_T9:
             {
+            if( (iPtiEngine->NumberOfCandidates() <= 1) && !IsFlagSet(EFlagRemoveMatchesMenuItem ) )
+			   {
+			   SetFlag( EFlagRemoveMatchesMenuItem );
+			   }
+
             if (iMode != ELatin)
                 {
                 aMenuPane->SetItemDimmed(EAknCmdT9PredictiveInsertWord, ETrue);
@@ -8065,10 +8075,14 @@
 
         TUid fepUid = CCoeEnv::Static()->FepUid();
         ClearExtendedFlag(EExtendedFlagEdwinEditorDestroyed);
+		SendEventsToPluginManL(EPluginEnablePriorityChangeOnOriChange,EFalse);
         // Fire up the dialog
+		iMatchesListLaunched = ETrue;
         TInt returnValue = iUiInterface->LaunchListPopupL(R_AVKON_T9_MATCHES_QUERY, index, 
                                                           currentIndex, matchesList, NULL);
+        iMatchesListLaunched = EFalse;
         PrepareFepAfterDialogExitL(fepUid);
+		SendEventsToPluginManL(EPluginEnablePriorityChangeOnOriChange,ETrue);
         if(returnValue == EAknSoftkeyOk)
             {// Selected item 'index' from the matches array
             HandleChangeInFocusL();
@@ -15792,6 +15806,7 @@
 #endif //RD_SCALABLE_UI_V2
     TUid fepUid = CCoeEnv::Static()->FepUid();
     ClearExtendedFlag(EExtendedFlagEdwinEditorDestroyed);
+	SendEventsToPluginManL(EPluginEnablePriorityChangeOnOriChange,EFalse);
     TInt returnValue = iUiInterface->LaunchListPopupL(R_AVKON_T9_LANGUAGES_QUERY, index, 
                                                       selectedLanguageIndex, languagesList, icons);
 #ifdef RD_SCALABLE_UI_V2
@@ -15840,6 +15855,7 @@
         
           
         }
+	SendEventsToPluginManL(EPluginEnablePriorityChangeOnOriChange,ETrue);	
     CleanupStack::PopAndDestroy( languages );
     }
 
@@ -18382,7 +18398,7 @@
         	{
             iFepPluginManager->SetLaunchSCTInSpell( ETrue );            
         	}        	
-        
+        SendEventsToPluginManL(EPluginEnablePriorityChangeOnOriChange,EFalse);
 		if (iUiInterface->CharMapDialogL(
 			sctChars, 
 			specialChars, 
@@ -18520,6 +18536,7 @@
             iStopProcessFocus = EFalse;                   
             }		   
         PrepareFepAfterDialogExitL(fepUid);
+		SendEventsToPluginManL(EPluginEnablePriorityChangeOnOriChange,ETrue);
         }
     }
 
@@ -18757,20 +18774,28 @@
         iAsyncResouceChanged.CallBack();
     	}
 #ifdef RD_INTELLIGENT_TEXT_INPUT
-    if(iCandidatePopup && iPtiEngine && (aType == KEikDynamicLayoutVariantSwitch))        
-        {
+    
+    if(aType == KEikDynamicLayoutVariantSwitch)        
+        {		
+		if ( iAvkonAppUi->IsDisplayingDialog() && iMatchesListLaunched )
+			{
+			 iUiInterface->DeleteDialogs();
+			}
+        
         //When there is a change of layout, the inline text position changes and hence the candidate 
         //list position also needs to change accordingly.
         //We need the editor to be brought back to focus, this is because we need the position of
         //the inline text.
-        iCandidatePopup->UnFocus();
-        //Need to get the editor state back after it is brought back to focus.
-        TRAP_IGNORE( HandleChangeInFocusL()); 
-        
-        // Add candidate list control stack to get the layout change event
-        // after dialog control......
-        TRAP_IGNORE( iCandidatePopup->SetFocusAddStackReducePriorityL() );
-        
+        if( iCandidatePopup && iPtiEngine )
+        	{
+			iCandidatePopup->UnFocus();
+			//Need to get the editor state back after it is brought back to focus.
+			TRAP_IGNORE( HandleChangeInFocusL()); 
+			
+			// Add candidate list control stack to get the layout change event
+			// after dialog control......
+			TRAP_IGNORE( iCandidatePopup->SetFocusAddStackReducePriorityL() );
+        	}        
         }
 #endif		
     TRAP_IGNORE(SendEventsToPluginManL( EPluginResourceChanged, aType ));
--- a/fep/aknfep/src/AknFepPluginManager.cpp	Tue May 25 13:03:44 2010 +0300
+++ b/fep/aknfep/src/AknFepPluginManager.cpp	Wed Jun 09 10:03:19 2010 +0300
@@ -686,6 +686,8 @@
             case ESignalEnterSpellMode:
                 {
                 iCurrentPluginInputFepUI->HandleCommandL(ECmdPeninputDisableLayoutDrawing,ETrue);
+                // this will allow the layout to be redraw even if the layout was activeated
+                iCurrentPluginInputFepUI->HandleCommandL(ECmdPeninputEnalbeLayoutReDrawWhenActive,ETrue);
                 iFepMan.LaunchEditWordQueryL();
                 }
                 break;
@@ -698,6 +700,8 @@
 				iFocuschangedForSpellEditor = ETrue;
 				iCurrentPluginInputFepUI->HandleCommandL(ECmdPeninputDisableLayoutDrawing,ETrue);
 				
+                // this will allow the layout to be redraw even if the layout was activeated
+                iCurrentPluginInputFepUI->HandleCommandL(ECmdPeninputEnalbeLayoutReDrawWhenActive,ETrue);
                 exitbyok ? iFepMan.ExitPluginSpellModeByOk() : 
                            iFepMan.ExitPluginSpellModeByCancel();
                 }
@@ -1079,6 +1083,15 @@
                         ECmdPeninputArabicNumModeChanged,aEventData);                            
                 }
             break;
+		case EPluginEnablePriorityChangeOnOriChange:
+            if(iCurrentPluginInputFepUI)
+                {
+                if(ConnectServer())
+                    {
+                    iPenInputServer.EnablePriorityChangeOnOriChange(TBool(aEventData));  
+                    }
+                }
+
         default:
             break;
         }
@@ -1163,16 +1176,24 @@
     TPixelsTwipsAndRotation size; 
     CCoeEnv::Static()->ScreenDevice()->GetDefaultScreenSizeAndRotation(size);
     TBool landscape = size.iPixelSize.iWidth > size.iPixelSize.iHeight;     
-    TBool disableFSQ = 
-        (  aSuggestMode == EPluginInputModeFSQ &&
-           ( iDefaultOrientation == CAknAppUiBase::EAppUiOrientationPortrait ||
-		     ( !landscape && !iAvkonAppUi->OrientationCanBeChanged() ) ) );
-
-          
+    // For portrait only mode, need to disable FSQ.
+    TBool disableFSQ = iDefaultOrientation == CAknAppUiBase::EAppUiOrientationPortrait 
+    		           || ( !landscape && !iAvkonAppUi->OrientationCanBeChanged() );         
     if ( disableFSQ )
         {
         iPenInputServer.SetDisabledLayout( EPluginInputModeFSQ );
         }
+    else
+        {
+        // if fsq had been disabled before and now application is not portrait only,
+        // need to enable fsq again;
+        TInt disableMode = iPenInputServer.DisabledLayout();
+        if( disableMode & EPluginInputModeFSQ )
+            {
+            iPenInputServer.SetDisabledLayout( -1 );//reset disable type
+            iPenInputServer.SetDisabledLayout( disableMode & ~EPluginInputModeFSQ );
+            }
+        }
     
     TBool disableITUT = 
                ( iDefaultOrientation == CAknAppUiBase::EAppUiOrientationLandscape ||
@@ -1183,19 +1204,19 @@
          //disable V-ITUT, and if current aSuggestMode is EPluginInputModeItut, replace it with EPluginInputModeFSQ;
          iPenInputServer.SetDisabledLayout( EPluginInputModeItut );
          if( aSuggestMode == EPluginInputModeItut )
-          {
-              aSuggestMode = EPluginInputModeFSQ;
-          }
+             {
+             aSuggestMode = EPluginInputModeFSQ;
+             }
          }
     else
          {
          // if V-ITUT had been disabled before, enable it now;
          TInt disableMode = iPenInputServer.DisabledLayout();
          if( disableMode & EPluginInputModeItut )
-          {
-			iPenInputServer.SetDisabledLayout( -1 );//reset
-			iPenInputServer.SetDisabledLayout( disableMode & ~EPluginInputModeItut );
-          }
+             {
+			 iPenInputServer.SetDisabledLayout( -1 );//reset
+			 iPenInputServer.SetDisabledLayout( disableMode & ~EPluginInputModeItut );
+             }
          }
 
 
@@ -1271,11 +1292,6 @@
         isSplit = EFalse;
         }    
 
-    if ( iLangMan.IsSplitView() && !isSplit )
-        {
-        NotifyAppUiImeTouchWndStateL( EFalse ); //restore layout
-        }
-
     iLangMan.SetSplitView(isSplit);
 
  
@@ -1534,30 +1550,48 @@
     
     iResourceChange = ETrue;   
 
+    TBool needToChangeInputMode = ETrue;
     if ( iSharedData.AutoRotateEnabled() && 
         ( iPluginInputMode == EPluginInputModeFSQ || iPluginInputMode == EPluginInputModeItut ) )
         {
         if ( IsSpellVisible() )
             {
             iFepMan.ExitPluginSpellModeByCancel();
+            iFepMan.SetNotifyPlugin( EFalse );
+            iFepMan.HandleChangeInFocusForSettingFep();
+            iFepMan.SetNotifyPlugin( ETrue );
             }
-        
-        if ( iPenInputMenu && iPenInputMenu->IsShowing() )
-            {
-            iPenInputMenu->Hide();
-            ResetMenuState();
-            }
-        ClosePluginInputModeL(ETrue);               
-        iFepMan.TryCloseUiL(); 
         TPixelsTwipsAndRotation size; 
         CCoeEnv::Static()->ScreenDevice()->GetDefaultScreenSizeAndRotation(size);
 
-        iPluginInputMode = ( size.iPixelSize.iWidth < size.iPixelSize.iHeight ) ? 
+        TPluginInputMode inputModeBeforeOri = ( size.iPixelSize.iWidth < size.iPixelSize.iHeight ) ? 
             EPluginInputModeItut : EPluginInputModeFSQ;
-        }
-    TryChangePluginInputModeByModeL( iPluginInputMode,
+        
+            if ( iPenInputMenu && iPenInputMenu->IsShowing() )
+                {
+                iPenInputMenu->Hide();
+                ResetMenuState(EFalse);
+                }
+            
+        if(inputModeBeforeOri != iPluginInputMode)
+            {
+            iPluginInputMode = inputModeBeforeOri; 
+            ClosePluginInputModeL(ETrue);               
+            iFepMan.TryCloseUiL();
+            }
+        else
+            {
+            needToChangeInputMode = EFalse;
+            }
+        }
+    
+    if(needToChangeInputMode)
+	    {
+		TryChangePluginInputModeByModeL( iPluginInputMode,
                                      EPenInputOpenManually,
                                      ERangeInvalid ); 
+		}
+    
     /*if(size.iPixelSize.iWidth > size.iPixelSize.iHeight ) //landscape
         {
         if ( iPluginInputMode == EPluginInputModeVkb )
@@ -1585,12 +1619,15 @@
         iCurrentPluginInputFepUI->ResourceChanged(aType);
         }
     
-    if (iInMenu)
-        {
-        SetMenuState(EFalse);
-        }
-        
-    if (setResChange)    
+	if(needToChangeInputMode)
+	    {
+		if (iInMenu)
+			{
+			SetMenuState(EFalse);
+			}
+		}
+
+	if (setResChange)    
         {
         iPenInputServer.SetResourceChange(EFalse);         
         }
@@ -5947,6 +5984,14 @@
 //
 TBool CAknFepPluginManager::IsEditorSupportSplitIme()
     {
+	
+	TBool disablePartialInput = FeatureManager::FeatureSupported( KFeatureIdChinese ) 
+	                            || FeatureManager::FeatureSupported( KFeatureIdKorean );
+	if ( disablePartialInput )
+	    {
+	    return EFalse;
+	    }
+
     //Mfne editors
     if ( iFepMan.IsMfneEditor() )
         {
--- a/inputmethods_plat/aknfep_pen_support_api/inc/aknfeppeninputenums.h	Tue May 25 13:03:44 2010 +0300
+++ b/inputmethods_plat/aknfep_pen_support_api/inc/aknfeppeninputenums.h	Wed Jun 09 10:03:19 2010 +0300
@@ -182,6 +182,7 @@
     ECmdPeninputEnableOwnBitmap,    
 	ECmdPeninputDisableLayoutDrawing,
 	ECmdPeninputArabicNumModeChanged,
+    ECmdPeninputEnalbeLayoutReDrawWhenActive,
     ECmdPenInputImeCmdBase = 2000
     };
 
--- a/inputmethods_plat/pen_input_server_api/inc/peninputclient.h	Tue May 25 13:03:44 2010 +0300
+++ b/inputmethods_plat/pen_input_server_api/inc/peninputclient.h	Wed Jun 09 10:03:19 2010 +0300
@@ -427,7 +427,7 @@
     IMPORT_C void SetResourceChange(TBool aFlag); 
     IMPORT_C TInt ConnectAsyc(TRequestStatus& aStatus);
 	IMPORT_C void SetDataQueryPopped(TBool aFlag);
-
+    IMPORT_C void EnablePriorityChangeOnOriChange(TBool aEnabled);
 private:    // Data
     /**
      * The singleton client to the input server
--- a/inputmethods_plat/pen_input_server_api/inc/peninputcmd.h	Tue May 25 13:03:44 2010 +0300
+++ b/inputmethods_plat/pen_input_server_api/inc/peninputcmd.h	Wed Jun 09 10:03:19 2010 +0300
@@ -111,6 +111,7 @@
     ESignalRegisterBkControl,
     ESignalDisableUpdating,
     ESignalDrawBackground,
+    ESignalEnableLayoutRedrawWhenActive,
     ESignalFepEventBase = 1500,    //Event base for Fep. All fep event
                                     //is re-directed to Fep.
     ESignalKeyEvent = 1501,        //hwr recongition selection event.
--- a/textinput/peninputarc/bwins/peninputClientU.DEF	Tue May 25 13:03:44 2010 +0300
+++ b/textinput/peninputarc/bwins/peninputClientU.DEF	Wed Jun 09 10:03:19 2010 +0300
@@ -63,4 +63,5 @@
 	?SetInputLanguage@RPeninputServer@@QAEHH@Z @ 62 NONAME ; int RPeninputServer::SetInputLanguage(int)
 	?ConnectAsyc@RPeninputServer@@QAEHAAVTRequestStatus@@@Z @ 63 NONAME ; int RPeninputServer::ConnectAsyc(class TRequestStatus &)
 	?SetDataQueryPopped@RPeninputServer@@QAEXH@Z @ 64 NONAME ; void RPeninputServer::SetDataQueryPopped(int)
+	?EnablePriorityChangeOnOriChange@RPeninputServer@@QAEXH@Z @ 65 NONAME ; void RPeninputServer::EnablePriorityChangeOnOriChange(int)
 
--- a/textinput/peninputarc/eabi/peninputClientU.DEF	Tue May 25 13:03:44 2010 +0300
+++ b/textinput/peninputarc/eabi/peninputClientU.DEF	Wed Jun 09 10:03:19 2010 +0300
@@ -72,3 +72,5 @@
 	_ZN15RPeninputServer16SetInputLanguageEi @ 71 NONAME
 	_ZN15RPeninputServer11ConnectAsycER14TRequestStatus @ 72 NONAME
 	_ZN15RPeninputServer18SetDataQueryPoppedEi @ 73 NONAME
+	_ZN15RPeninputServer31EnablePriorityChangeOnOriChangeEi @ 74 NONAME
+
--- a/textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutbasecontrol.h	Tue May 25 13:03:44 2010 +0300
+++ b/textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutbasecontrol.h	Wed Jun 09 10:03:19 2010 +0300
@@ -44,6 +44,8 @@
 typedef TInt64 TControlType;
 
 const TInt KPenInputOwnDeviceChange = -1;
+const TInt KPenInputOwnDeviceResourceChange = -2;
+
 const TUint KFepCtrlExtId = 0x00000000;
 //UI layout leave code
 enum TUiLayoutErrorCode
--- a/textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutvirtualkeyctrl.h	Tue May 25 13:03:44 2010 +0300
+++ b/textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutvirtualkeyctrl.h	Wed Jun 09 10:03:19 2010 +0300
@@ -235,7 +235,7 @@
     
     TVirtualKeyDrawInfo iVirtualKeyDrawInfo;     
     
-protected:
+public:
     void UpdateChangedArea(TBool aFlag);    
 private:    
     CFbsBitGc* GetGc();
--- a/textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutvkb.h	Tue May 25 13:03:44 2010 +0300
+++ b/textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutvkb.h	Wed Jun 09 10:03:19 2010 +0300
@@ -168,7 +168,8 @@
     CFbsBitmapDevice* iHighlightKeyDev;
     CFbsBitmapDevice* iDimmedKeyDev;
     CFbsBitGc* iKeyGc;
-    
+    TBool iHighlightKeyResourceChanged;
+    TBool iNormalKeyResourceChanged;
 friend class CVirtualKeyboard;   
     };
 
@@ -935,6 +936,8 @@
     
     TBool PrepareKeyBmp(CFbsBitmap* aBmp,CFbsBitmapDevice* aDev,const TRect& aRect, 
             const TRect& aInnerRect,const TAknsItemID& aFrameID, const TAknsItemID& aCenterID,const TRect& aKeyRect);
+    TBool PrepareHighlightKeyBmp(const TRect& aRect, const TRect& aInnerRect, const TRect& aKeyRect);
+    TBool PrepareNormalKeyBmp(const TRect& aRect, const TRect& aInnerRect, const TRect& aKeyRect);        
 
 friend class CVirtualKeyCtrl;
 friend class CVirtualRawKeyCtrl;
--- a/textinput/peninputarc/inc/pensrvcliinc/peninputclientimpl.h	Tue May 25 13:03:44 2010 +0300
+++ b/textinput/peninputarc/inc/pensrvcliinc/peninputclientimpl.h	Wed Jun 09 10:03:19 2010 +0300
@@ -450,6 +450,8 @@
     void SetResourceChange(TBool aFlag);
     
     void SetDataQueryPopped(TBool aFlag);
+	
+	void EnablePriorityChangeOnOriChange(TBool aEnabled);
     /**
      * Starts the server thread
      *
--- a/textinput/peninputarc/inc/pensrvcliinc/peninputclientserver.h	Tue May 25 13:03:44 2010 +0300
+++ b/textinput/peninputarc/inc/pensrvcliinc/peninputclientserver.h	Wed Jun 09 10:03:19 2010 +0300
@@ -88,7 +88,8 @@
     EPeninputRequestInternalDimLayout,
     EPeninputRequestDimResChangeLayout,
     EPeninputRequestSupportInputMode,
-    EPeninputRequestSetInputLanguage
+    EPeninputRequestSetInputLanguage,
+	EPeninputEnablePriorityChangeOnOriChange
     };
 
 //server error code
--- a/textinput/peninputarc/inc/pensrvcliinc/peninputserver.h	Tue May 25 13:03:44 2010 +0300
+++ b/textinput/peninputarc/inc/pensrvcliinc/peninputserver.h	Wed Jun 09 10:03:19 2010 +0300
@@ -980,6 +980,8 @@
     RProperty       iDiscreetPopProperty;
     RAknUiServer    iAknUiSrv; 
     TRect iDiscreetPopArea;
+	TBool iEnablePriorityChangeOnOriChange;
+    TBool iIsLayoutReDrawAllowWhenActive;
     };
 
 /**
--- a/textinput/peninputarc/inc/pensrvcliinc/penuiwndctrl.h	Tue May 25 13:03:44 2010 +0300
+++ b/textinput/peninputarc/inc/pensrvcliinc/penuiwndctrl.h	Wed Jun 09 10:03:19 2010 +0300
@@ -201,6 +201,7 @@
     void Clean();
     
     void HandleNGASpecificSignal(TInt aEventType, const TDesC& aEventData);
+    void LiftUpPriority();
 public: // Functions from base classes.
 
     /**
@@ -374,4 +375,4 @@
     RWindowGroup& iWndGroup;
     CFbsBitmap * iBitmap;
     };    
-#endif    
\ No newline at end of file
+#endif    
--- a/textinput/peninputarc/src/peninputclient/penclientimpl.cpp	Tue May 25 13:03:44 2010 +0300
+++ b/textinput/peninputarc/src/peninputclient/penclientimpl.cpp	Wed Jun 09 10:03:19 2010 +0300
@@ -331,7 +331,7 @@
     if(aFlag)
         {
         //show the background control
-        if(!iBackgroundCtrl)
+        if(!iBackgroundCtrl && bmpHandle != -1)
             {
             iBackgroundCtrl = CPenUiBackgroundWnd::NewL(CCoeEnv::Static()->RootWin(),bmpHandle);
             }
@@ -1158,6 +1158,14 @@
     arg.Set(KMsgSlot0,&msg);    
     SendReceive(EPeninputRequestDimResChangeLayout,arg);       
     }
+
+void RPeninputServerImpl::EnablePriorityChangeOnOriChange(TBool aEnabled)
+    {
+	TIpcArgs arg;
+	TPckg<TBool> msg(aEnabled);
+    arg.Set(KMsgSlot0,&msg); 
+	SendReceive(EPeninputEnablePriorityChangeOnOriChange,arg); 
+	}
     
 //end of class RPeninputServerImpl
 
--- a/textinput/peninputarc/src/peninputclient/peninputclient.cpp	Tue May 25 13:03:44 2010 +0300
+++ b/textinput/peninputarc/src/peninputclient/peninputclient.cpp	Wed Jun 09 10:03:19 2010 +0300
@@ -505,5 +505,9 @@
     iSingletonServer->SetResourceChange(aFlag);   
     }    
 
+EXPORT_C void RPeninputServer::EnablePriorityChangeOnOriChange(TBool aEnabled)
+    {
+	iSingletonServer->EnablePriorityChangeOnOriChange(aEnabled);
+	}	
 //end of class RPeninputServer
 // End of File
--- a/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutbasecontrol.cpp	Tue May 25 13:03:44 2010 +0300
+++ b/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutbasecontrol.cpp	Wed Jun 09 10:03:19 2010 +0300
@@ -699,7 +699,7 @@
 
 TBool CFepUiBaseCtrl::IsOnTopOf(CFepUiBaseCtrl* aCtrl)
     {     
-    __ASSERT_DEBUG(aCtrl,EUiNullParam);      
+    ASSERT(aCtrl);      
     return OrderPos() < aCtrl->OrderPos();
     }
     
@@ -1355,11 +1355,7 @@
 
 EXPORT_C void CFepUiBaseCtrl::SetParent(CFepUiBaseCtrl* aParent)
     {
-    //parent control must be type of control group.
-    if(aParent)
-        {
-        __ASSERT_DEBUG(aParent->IsKindOfControl(ECtrlControlGroup),EUiLayoutBadParentType);
-        } 
+    //ASSERT(aParent == NULL || aParent->IsKindOfControl(ECtrlControlGroup));
     iParentCtrl = aParent;
     }
 
--- a/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutbubblectrl.cpp	Tue May 25 13:03:44 2010 +0300
+++ b/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutbubblectrl.cpp	Wed Jun 09 10:03:19 2010 +0300
@@ -111,6 +111,7 @@
         {
         iShowing = ETrue;              
         SetHidenFlag(EFalse);   
+        /*
         if(UiLayout()->NotDrawToLayoutDevice())
             {
             struct SData
@@ -124,16 +125,19 @@
             ptr.Set(reinterpret_cast<const TUint16*>(&data),sizeof(data)/sizeof(TUint16));
         
             UiLayout()->SignalOwner(ESignalPopupArea,ptr);
-            }     
+            }  
+        */
         return;
         }
-    if(!iShowing || aRect != Rect() || iNeedRedraw)
+    if( !iShowing || iNeedRedraw )
         {
         iShowing = ETrue;  
         TRect rect = Rect();
-        SetRect(aRect);
+        //SetRect(aRect);
         SetHidenFlag(EFalse);        
         BringToTop();
+        
+        /*
         //redraw the control under bubble control
         if(aRect != rect)        
             {
@@ -160,7 +164,8 @@
 				RootControl()->ReDrawRect(rect); 
 				}
             }
-		
+            */
+		/*
         // signal server to add the pop area		
         if(UiLayout()->NotDrawToLayoutDevice())
             {
@@ -177,6 +182,7 @@
     
             UiLayout()->SignalOwner(ESignalPopupArea,ptr);
             }
+            */
         
 		// signal server to copy the background as background bitmap for its own bitmap
         if(UiLayout()->NotDrawToLayoutDevice())
@@ -582,8 +588,37 @@
 
 EXPORT_C void CBubbleCtrl::SetRect(const TRect& aRect)
     {
-    if(aRect == Rect())
+    if( aRect == Rect())
+        {
         return;
+        }
+    else
+        {
+        if( UiLayout()->NotDrawToLayoutDevice())
+            {
+            struct SData
+                {
+                TRect rr;
+                TBool flag;
+                } data;
+        
+            // Remove the original region from list
+            data.rr = Rect();
+            data.flag = EFalse;
+            TPtrC ptrForRemove;
+            ptrForRemove.Set( 
+                    reinterpret_cast<const TUint16*>(&data),sizeof(data)/sizeof(TUint16));
+            UiLayout()->SignalOwner( ESignalPopupArea, ptrForRemove );
+            
+            // Add the new region to list
+            data.rr = aRect;
+            data.flag = ETrue;
+            TPtrC ptrForAdd;
+            ptrForAdd.Set( 
+                    reinterpret_cast<const TUint16*>(&data),sizeof(data)/sizeof(TUint16));
+            UiLayout()->SignalOwner( ESignalPopupArea, ptrForAdd );
+            }
+        }
     CFepUiBaseCtrl::SetRect(aRect);
     ResizeDeviceL();
     }
--- a/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutcursor.cpp	Tue May 25 13:03:44 2010 +0300
+++ b/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutcursor.cpp	Wed Jun 09 10:03:19 2010 +0300
@@ -102,29 +102,34 @@
 EXPORT_C void CFepUiCursor::SetPosition(const TPoint& aPosition)
     {
     
-    TBool isOn = iIsOn;
-    if (isOn)
-        {
-        SetOn(EFalse);
-        }
-    iPosition=aPosition;
-    TPoint correction(KCursorPosCorrectionX,KCursorPosCorrectionY );
-    TRect rect = TRect(iPosition + correction , TSize(KCursorWidth,iHeight));
-    if(rect != iCursorRect)
-        {
-        SetRect(rect);
-        iCursorRect = rect;
-        //must update clip region again.
-        for(TInt i = 0 ; i < RootControl()->PopCtrlList().Count(); ++i)
-            {
-            UpdateValidRegion(RootControl()->PopCtrlList()[i],EFalse);
-            }
-        }
-        
-    if (isOn)
-        {
-        SetOn(ETrue);
-        }
+	if( iPosition != aPosition )
+		{
+		TBool isOn = iIsOn;
+		if (isOn)
+			{
+			SetOn(EFalse);
+
+			}
+		iPosition=aPosition;
+		TPoint correction(KCursorPosCorrectionX,KCursorPosCorrectionY );
+		TRect rect = TRect(iPosition + correction , TSize(KCursorWidth,iHeight));
+		if(rect != iCursorRect)
+			{
+			SetRect(rect);
+			iCursorRect = rect;
+			//must update clip region again.
+			for(TInt i = 0 ; i < RootControl()->PopCtrlList().Count(); ++i)
+				{
+				UpdateValidRegion(RootControl()->PopCtrlList()[i],EFalse);
+				}
+			}
+			
+		if (isOn)
+			{
+			SetOn(ETrue);
+			}
+		}
+
     }
 
 // ---------------------------------------------------------------------------
@@ -168,6 +173,7 @@
             {
             iCursorBlinkingTimer->Cancel();    
             }
+        InvalidateInsertionPoint();
         }
     else
         {
@@ -184,7 +190,7 @@
         }
         
         // Invalidate InsertionPoint's rect, so it will be removed from editarea
-    InvalidateInsertionPoint();
+    //InvalidateInsertionPoint();
     }
 
 // ---------------------------------------------------------------------------
@@ -380,7 +386,7 @@
 //
 void CFepUiCursor::InvalidateInsertionPoint()
     {    
-    //if(AbleToDraw())
+    if(AbleToDraw())
         {        
         Draw();
         //UpdateArea(iCursorRect,EFalse);
@@ -437,7 +443,7 @@
     iCursorTempDisabled = EFalse;
     iIsOn = ETrue;
     //To avoid the ugly first shown, we draw the cursor directly here.
-    InvalidateInsertionPoint();
+    //InvalidateInsertionPoint();
     SetOn(ETrue, EFalse);    
     }
     
--- a/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutmultilineicfeditor.cpp	Tue May 25 13:03:44 2010 +0300
+++ b/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutmultilineicfeditor.cpp	Wed Jun 09 10:03:19 2010 +0300
@@ -2145,7 +2145,7 @@
         {
         if ( iLastCursorPos != iCursorSel.iCursorPos ) 
             {
-            UiLayout()->DoTactileFeedback(ETouchFeedbackSensitiveInput);
+            UiLayout()->DoTactileFeedback(ETouchFeedbackEdit);
             iLastCursorPos = iCursorSel.iCursorPos;
             }
         }
--- a/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutpopupwnd.cpp	Tue May 25 13:03:44 2010 +0300
+++ b/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutpopupwnd.cpp	Wed Jun 09 10:03:19 2010 +0300
@@ -501,6 +501,7 @@
         layoutOwner->SetPosition(iPrevLayoutRect.iTl);
        	layoutOwner->LayoutSizeChanged(iPrevLayoutRect.Size());
         RootControl()->GraphicDeviceSizeChanged();
+        bRedraw = ETrue;
 	    }
 	    
     if (bRedraw)    
--- a/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutrootctrl.cpp	Tue May 25 13:03:44 2010 +0300
+++ b/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutrootctrl.cpp	Wed Jun 09 10:03:19 2010 +0300
@@ -815,7 +815,12 @@
 
 	if(!AbleToDraw())
         return;
-
+    
+    if(UiLayout()->NotDrawToLayoutDevice())
+	    {
+	    HandleResourceChange(KPenInputOwnDeviceResourceChange);
+	    }
+	    
 	Clear();	
     CControlGroup::Draw();
 
--- 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    
--- a/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutvkbkeyctrl.cpp	Tue May 25 13:03:44 2010 +0300
+++ b/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutvkbkeyctrl.cpp	Wed Jun 09 10:03:19 2010 +0300
@@ -377,11 +377,12 @@
         TBool bHasDrawn = EFalse;
         if(UiLayout()->NotDrawToLayoutDevice())
             {
-            TBool ret = iKeyboard->PrepareKeyBmp(iKeyboard->NormalKeyBmp(),
+            /*TBool ret = iKeyboard->PrepareKeyBmp(iKeyboard->NormalKeyBmp(),
                                     iKeyboard->NormalKeyDev(),
                                     rect,innerrect,
                                     iKeyboard->KeySkinId(EKeyBmpNormal), 
-                                    KAknsIIDDefault,Rect());
+                                    KAknsIIDDefault,Rect());*/
+            TBool ret = iKeyboard->PrepareNormalKeyBmp(rect,innerrect,Rect());                                    
             if(ret)
                 {
                 gc->BitBlt(rect.iTl,iKeyboard->NormalKeyBmp());
@@ -502,11 +503,12 @@
         TBool bHasDrawn = EFalse;
         if(UiLayout()->NotDrawToLayoutDevice())
             {
-            TBool ret = iKeyboard->PrepareKeyBmp(iKeyboard->HighightKeyBmp(),
+            /*TBool ret = iKeyboard->PrepareKeyBmp(iKeyboard->HighightKeyBmp(),
                                     iKeyboard->HighlightKeyDev(),
                                     rect,innerrect,
                                     iKeyboard->KeySkinId(EKeyBmpHighlight), 
-                                    KAknsIIDDefault,Rect());
+                                    KAknsIIDDefault,Rect());*/
+            TBool ret = iKeyboard->PrepareHighlightKeyBmp(rect,innerrect,Rect());                                    
             if(ret)
                 {
                 gc->BitBlt(rect.iTl,iKeyboard->HighightKeyBmp());
--- a/textinput/peninputarc/src/peninputlayoutcontrol/peninputuilayout.cpp	Tue May 25 13:03:44 2010 +0300
+++ b/textinput/peninputarc/src/peninputlayoutcontrol/peninputuilayout.cpp	Wed Jun 09 10:03:19 2010 +0300
@@ -187,6 +187,13 @@
             DisableLayoutDrawing(*(reinterpret_cast<TBool*>(aData)));
             }
             break;
+        case ECmdPeninputEnalbeLayoutReDrawWhenActive:
+            {
+            TBool enableLayoutRedraw = ETrue;
+            TPtrC data(reinterpret_cast<TUint16*>(&enableLayoutRedraw),sizeof(TBool)/2);
+            SignalOwner(ESignalEnableLayoutRedrawWhenActive,data);
+            }
+            break;
         default: 
             {
             ret = -1;
@@ -480,6 +487,9 @@
     {
     iLayoutReady = EFalse;
     iRootCtrl->OnDeActivate();
+    TBool enableLayoutRedraw = ETrue;
+    TPtrC data(reinterpret_cast<TUint16*>(&enableLayoutRedraw),sizeof(TBool)/2);
+    SignalOwner(ESignalEnableLayoutRedrawWhenActive,data);
     }    
 // ---------------------------------------------------------------------------
 // CFepUiLayout::SetLayoutPos
--- a/textinput/peninputarc/src/peninputserverapp/peninputserver.cpp	Tue May 25 13:03:44 2010 +0300
+++ b/textinput/peninputarc/src/peninputserverapp/peninputserver.cpp	Wed Jun 09 10:03:19 2010 +0300
@@ -187,6 +187,7 @@
     //iDispMode = iDispModeForMask= CCoeEnv::Static()->WsSession().GetDefModeMaxNumColors(col,grey);    
     iPreNonGloebalNotesWndGrpId = -1;
     iNoNeedClean = EFalse;
+	iEnablePriorityChangeOnOriChange = ETrue;
     }
 
 
@@ -427,6 +428,9 @@
 //
 void CPeninputServer::ActivateSpriteInGlobalNotesL()
     {
+    TBool notDraw = EFalse;
+    iUiLayout->HandleCommand( ECmdPeninputDisableLayoutDrawing, 
+    		                 (unsigned char*)&notDraw );    
     if(iActive)
         {
 	    if(iUseWindowCtrl)
@@ -591,13 +595,35 @@
 		            }
 	            }
             }
+        iIsLayoutReDrawAllowWhenActive = EFalse;    
         }
     else
         {
         //actived but dimmed by global notes
         if(iUseWindowCtrl)
             {
-            ActivatePenUiLayout(EFalse);
+            /**
+            * 1. IF THE GLOBAL NOTES HAS BEEN OPENED UP, WE NEED TO REDRAW THE LAYOUT
+            * 2. IF iIsLayoutReDrawAllowWhenActive was set to be ETrue. 
+            *    if we did not put this condition guard, the layout
+            *    redraw will be executed even if the layout is active. But if this flag is
+            *    set to be ture, layout redraw will be carried out even if the layout is active, so
+            *    it will leave this for layout to decide if it need set this flag to be ture or false
+            *    in some special cases: for example for entering and exiting the spell mode.
+            *    
+            */
+            if(iInGlobalNotesApp || iInGlobalEditorState || iIsLayoutReDrawAllowWhenActive )
+                {
+                ActivatePenUiLayout(EFalse);
+                if(iIsLayoutReDrawAllowWhenActive)
+                    {
+                    iIsLayoutReDrawAllowWhenActive = EFalse;    
+                    }
+                }
+            else
+			    {
+				ActivatePenUiLayout(EFalse,ETrue);
+				}
 
             if (iDimmed && (iInGlobalNotesApp || iInGlobalEditorState))
                 {
@@ -1132,7 +1158,12 @@
 						                 (unsigned char*)&iInputLanguage);  
 				}
     	    }
-    	    break;            
+    	    break;
+        case EPeninputEnablePriorityChangeOnOriChange:
+            {
+			TPckg<TBool> enablePriority( iEnablePriorityChangeOnOriChange );
+            aMessage.ReadL( 0, enablePriority );
+			}
         default: //Let user pluging handling the user command
             break;
         }
@@ -1204,7 +1235,10 @@
     iUILayoutReady = EFalse;    
     if(iUiLayout)
         {
-		ClearSpriteGc();
+        //if(!iUseWindowCtrl)
+        	//{
+			//ClearSpriteGc();
+        	//}
         DeactivateSprite();
         iDestroyingLayout = ETrue;
         if(iUseWindowCtrl)
@@ -1545,7 +1579,7 @@
 void CPeninputServer::DrawSprite()
     {
 
-    if(!iUiLayout)
+    if(!iUiLayout || iActive)
         return;
     ClearSpriteGc();
     
@@ -1674,7 +1708,10 @@
         }
     else
         {
-        ActivateSprite();
+        if(!iActive)
+            {
+            ActivateSprite();
+            }
         }
     }
 
@@ -1910,6 +1947,13 @@
             	    }
         	    }
         	    break;
+            case ESignalEnableLayoutRedrawWhenActive:
+                {
+				TUint16* buf = const_cast<TUint16* >( aEventData.Ptr() );    
+                TBool* retVal = reinterpret_cast< TBool* > ( buf );
+				iIsLayoutReDrawAllowWhenActive = *retVal;
+				}
+				break;	
 
         	default:
         	    if(iUseWindowCtrl)                    
@@ -2018,7 +2062,54 @@
 // ---------------------------------------------------------------------------
 //    
 void CPeninputServer::HandleResourceChange(TInt aType)
-    {   
+    {
+	#ifdef FIX_FOR_NGA 
+	// iEnablePriorityChangeOnOriChange will be set to be EFalse, if some dialog in FEP end were opened and 
+	// not close after rotation for example: Symbol Table, Writing Language list and Match Dialog on ITI
+	if(iUiLayout && iActive && iEnablePriorityChangeOnOriChange && aType == KEikDynamicLayoutVariantSwitch)
+        {
+        TPixelsTwipsAndRotation size; 
+        CCoeEnv::Static()->ScreenDevice()->GetDefaultScreenSizeAndRotation(size);
+                
+        TBool isPortrait = ( size.iPixelSize.iWidth < size.iPixelSize.iHeight );
+   
+        TBool needToLiftUp = EFalse;
+        TInt inputMode = 0; 
+        inputMode = iUiLayout->PenInputType();
+        if(inputMode == EPluginInputModeItut)
+            {
+            if(!isPortrait)
+                {
+                needToLiftUp = ETrue;
+                }
+            }
+        else if(inputMode == EPluginInputModeFSQ)
+            {
+            if(isPortrait)
+                {
+                needToLiftUp = ETrue;
+                }
+            }
+    
+        else if(inputMode == EPluginInputModeFingerHwr)
+            {
+            ClearSpriteGc();
+            //Close the UI immediately, without notify UI handler 
+            DeactivateSprite(ETrue, ETrue);
+            }
+        if(needToLiftUp)
+            {
+            if(iPenUiCtrl)
+                {
+                
+                // must lift up the wnd group priority otherwise when rotating screen, the underling application will show first and then
+                // our PEN UI, but we should keep an eye on this issue. If NGA will fix the fliker assigned on them, we will check if it will
+                // work if we remove this line of code. 
+                iPenUiCtrl->LiftUpPriority();				
+                }
+            }
+        }
+	#endif	
     if(iUiLayout && !(iUiLayout->PenInputType() & DisabledByOrientation()) )
         {
         //hide the layout if it's already shown
@@ -2135,11 +2226,31 @@
     
 	if(iActive && !iPrevActive && inputMode != EPluginInputModeFSQ && iBackgroudDefaultOri == CAknAppUiBase::EAppUiOrientationUnspecified )
         {
-        
+        #ifdef FIX_FOR_NGA
+        if(inputMode == EPluginInputModeFingerHwr)
+            {
+            iPrevActive = ETrue;
+            ClearSpriteGc();
+            //Close the UI immediately, without notify UI handler 
+            DeactivateSprite(ETrue, ETrue);
+            }
+        else
+            {// for other input mode: we are not going to cose UI, since it will cause
+             // serious fliker: which will have the mixed ui(with other app ui) on pen input ui
+            
+			if(iUiLayout)
+			    {
+				TBool notDraw = ETrue;
+	            iUiLayout->HandleCommand(ECmdPeninputDisableLayoutDrawing,(unsigned char*)&notDraw);
+	            iUiLayout->OnDeActivate();
+			    }
+            }       
+        #else
         iPrevActive = ETrue;
         ClearSpriteGc();
-	    //Close the UI immediately, without notify UI handler 
-	    DeactivateSprite(ETrue, ETrue);
+        //Close the UI immediately, without notify UI handler 
+        DeactivateSprite(ETrue, ETrue);
+        #endif
         }    
     }
     
@@ -2263,13 +2374,14 @@
     if(iActive)
         { 
         if( aEvent.Type() == TRawEvent::ENone && 
-        	aEvent.IsTip() &&
-        	iCrpService->IsDsaActive() )
+        	aEvent.IsTip() 
+        	&& iCrpService && iCrpService->IsDsaActive() )
             {
             SignalOwner( ESignalLayoutClosed, KNullDesC );    
             }
                    
-        TBool handled = iUiLayout->HandleEventL(ERawEvent,&aEvent);
+        TBool handled = iUiLayout ? iUiLayout->HandleEventL(ERawEvent,&aEvent)
+        		        : EFalse;
 
         if (TRawEvent::EButton1Down == aEvent.Type())
             {
--- a/textinput/peninputarc/src/peninputserverapp/peninputserversession.cpp	Tue May 25 13:03:44 2010 +0300
+++ b/textinput/peninputarc/src/peninputserverapp/peninputserversession.cpp	Wed Jun 09 10:03:19 2010 +0300
@@ -319,6 +319,7 @@
         case EPeninputRequestDimResChangeLayout:
         case EPeninputRequestSupportInputMode:
         case EPeninputRequestSetInputLanguage:
+		case EPeninputEnablePriorityChangeOnOriChange:
             ret = iPenInputSvr.HandleMessageL(aMessage);            
             break;
         case EPeninputRequestUpdateAppInfo:            
--- a/textinput/peninputarc/src/peninputserverapp/penuiwndctrl.cpp	Tue May 25 13:03:44 2010 +0300
+++ b/textinput/peninputarc/src/peninputserverapp/penuiwndctrl.cpp	Wed Jun 09 10:03:19 2010 +0300
@@ -110,28 +110,39 @@
 
 void CPenUiWndCtrl::Draw(const TRect& aRect) const
     {
-    if(iNotUpdating)
+    if (iNotUpdating)
         return;
-    
+
     CWindowGc& gc = SystemGc();
-        
-    if ( iShowPopup ) 
+    if (iShowPopup)
         {
         //layout is extended by popup
-        gc.SetClippingRect( iLayoutClipRect );
+        TRect rect = aRect;
+        rect.Intersection(iLayoutClipRect);
+        TPoint pos = rect.iTl - iLayoutClipRect.iTl;
+        gc.BitBlt(pos, iBitmap, rect);
+#ifdef FIX_FOR_NGA
+        //draw bubble
+        for (TInt i = 0; i < iBubblesArea.Count(); ++i)
+            {
+            gc.BitBlt(iBubblesPos[i].iTl, iBubblesArea[i]);
+            }
+#endif   
+        return;
+        //layout is extended by popup
+        //gc.SetClippingRect( iLayoutClipRect );
         }
-
-	#ifdef FIX_FOR_NGA
-	gc.BitBlt(TPoint(0,0),iBitmap,Rect());
+#ifdef FIX_FOR_NGA
+    gc.BitBlt(TPoint(0, 0), iBitmap, Rect());
+    //draw bubble
+    for (TInt i = 0; i < iBubblesArea.Count(); ++i)
+        {
+        gc.BitBlt(iBubblesPos[i].iTl, iBubblesArea[i]);
+        }
+#else    
+    gc.BitBlt(aRect.iTl,iBitmap,aRect);
+#endif     
 
-	//draw bubble
-	for(TInt i = 0 ; i < iBubblesArea.Count(); ++i)
-		{
-		gc.BitBlt(iBubblesPos[i].iTl,iBubblesArea[i]);
-		}
-	#else    
-		gc.BitBlt(aRect.iTl,iBitmap,aRect);
-	#endif            
     }
 
 void CPenUiWndCtrl::RefreshUI()
@@ -230,7 +241,6 @@
         return;
         }
     
-    iCursorBmp = const_cast<CFbsBitmap*>(aCursorBmp);
     iCursorPos = aRect.iTl;
 	
     if(iCursorRect != aRect)
@@ -335,6 +345,7 @@
     
 void CPenUiWndCtrl::ShowPenUiL(TBool /*aDimmed*/)
     {
+    iCursorWnd->SetCursorVisible(EFalse);
     if (iResourceChange)
         {
         ActivateL();
@@ -396,7 +407,6 @@
 
 void CPenUiWndCtrl::ClosePenUi(TBool aResChanging)
     {
-    iCursorBmp = NULL;
     if (aResChanging)
         {
         TRAP_IGNORE(iIncallBubble->SetIncallBubbleFlagsL( EAknStatusBubbleInputHide ));
@@ -495,8 +505,14 @@
     {
     //TBool dim = IsDimmed();
     RestoreSystemFadeStatus();
-    //have to call this, otherwise pen UI is faded
-    iWndGroup.SetNonFading(ETrue);
+	
+	// if we were opened under a global note
+	// we need to dim pen ui
+	if(aType != EGlobleNotesWithEditor && aType != EGlobleNotes)
+	   {
+	   //have to call this, otherwise pen UI is faded
+       iWndGroup.SetNonFading(ETrue);
+	   }
     
     if (iResourceChange)
         {
@@ -720,6 +736,10 @@
         case ESignalDisableUpdating:
             {
             iNotUpdating = * (reinterpret_cast<TBool*>( const_cast<TUint16*>( aEventData.Ptr() )));
+			if(iNotUpdating)
+			    {
+				UpdateCursor(EFalse,NULL,iCursorWnd?iCursorWnd->Rect():TRect(TPoint(0,0),TSize(0,0)));
+				}
             }
 			break;
         case ESignalDrawBackground:
@@ -819,7 +839,15 @@
         iAutoRefreshTimer->Cancel();
         }
     }
-
+	
+void CPenUiWndCtrl::LiftUpPriority()
+    {
+	TInt priority = GetWndPriority();
+    iPriority =  priority;
+    iWndGroup.SetOrdinalPosition( 0, iPriority);
+    DrawableWindow()->SetOrdinalPosition( 0, iPriority);
+	}
+	
 //End Of File
 // class CInternalBkCtrl
 CInternalBkCtrl::CInternalBkCtrl(RWindowGroup& aWndGroup)    
--- a/textinput/peninputcommonctrls/src/peninputbuttons/peninputbutton.cpp	Tue May 25 13:03:44 2010 +0300
+++ b/textinput/peninputcommonctrls/src/peninputbuttons/peninputbutton.cpp	Wed Jun 09 10:03:19 2010 +0300
@@ -4221,7 +4221,7 @@
     //PRINTF((_L("Set long press Timer\n")));
     if ( IsDimmed() )
         {
-        return;
+        return NULL;
         }
     
     iLongPressTimer->SetTimer(iLongPressInterval);
@@ -4239,7 +4239,7 @@
 
     if ( IsDimmed() )
         {
-        return;
+        return NULL;
         }
 
     CancelTimer();
--- a/textinput/peninputfingerhwr/src/peninputfingerhwrlayout.cpp	Tue May 25 13:03:44 2010 +0300
+++ b/textinput/peninputfingerhwr/src/peninputfingerhwrlayout.cpp	Wed Jun 09 10:03:19 2010 +0300
@@ -165,6 +165,12 @@
             break;
         case ECmdPenInputWindowOpen:
             {
+            if( !iIsOpenFingerHWR )
+                {
+                iDataStore->GetKeyboardType();
+                iDataStore->SetKeyboardToQwerty();
+                }
+            
             LayoutOwner()->Hide( EFalse );
             RootControl()->UpdateValidRegion( NULL, EFalse );
 
@@ -174,12 +180,6 @@
             iDataStore->SetScreenSize(hwrSize);
             ChangeCurStateManagerToStandby();
             
-            if( !iIsOpenFingerHWR )
-                {
-                iDataStore->GetKeyboardType();
-                iDataStore->SetKeyboardToQwerty();
-                }
-                
             iIsOpenFingerHWR = ETrue;
             ret = KErrNone;
             }
--- a/textinput/peninputfingerhwr/src/peninputfingerhwrwnd.cpp	Tue May 25 13:03:44 2010 +0300
+++ b/textinput/peninputfingerhwr/src/peninputfingerhwrwnd.cpp	Wed Jun 09 10:03:19 2010 +0300
@@ -2017,13 +2017,13 @@
    
     iWritingBox->Hide( ETrue );
     iVirtualNumpad->Hide( ETrue );
-    iVirtualSctpad->Hide( EFalse );
-    iVirtualSctpadFix->Hide( EFalse );
-    
     iArrowLeftBtn->Hide( ETrue );
     iArrowRightBtn->Hide( ETrue );
     iArrowUpBtn->Hide( ETrue );
     iArrowDownBtn->Hide( ETrue );
+    
+    iVirtualSctpad->Hide( EFalse );
+    iVirtualSctpadFix->Hide( EFalse );
     iOptionBtn->Hide( EFalse );
     iImeSwitchBtn->Hide( EFalse );  
     
--- a/textinput/peninputgenericitut/src/peninputgenericitutlayout.cpp	Tue May 25 13:03:44 2010 +0300
+++ b/textinput/peninputgenericitut/src/peninputgenericitutlayout.cpp	Wed Jun 09 10:03:19 2010 +0300
@@ -170,7 +170,6 @@
         case ECmdPenInputLanguage:
             {
             TRAP_IGNORE(SetInputLanguageL(*data));
-            
             }
             break;
         case ECmdPenInputRange:
@@ -206,10 +205,10 @@
         case ECmdPenInputFingerSpelling:
             {
 
-            if (UiMgr())
+            if ( iWesternUiMgr )
                 {
                 TInt handled = KErrNone;
-                TRAP_IGNORE(handled = UiMgr()->HandleCommandL(aCmd, aData));
+                TRAP_IGNORE( handled = iWesternUiMgr->HandleCommandL( aCmd, aData ));
                 return handled;
                 }
             }
@@ -385,14 +384,21 @@
     
 void CGenericItutUiLayout::SetInputModeL(TInt aMode)
     {
-		TBool numericOnlyChanged = iDataMgr->IsCharFlagChanged() ? ETrue : EFalse;
-		//only number mode need judge it
+	// Input mode can not be set to EnativeNumber in Thai
+    TInt inputLanguage = iDataMgr->InputLanguage();
+    if ( aMode ==  ENativeNumber && inputLanguage == ELangThai )
+        {
+        aMode = ENumber;
+        }
+    
+    TBool numericOnlyChanged = iDataMgr->IsCharFlagChanged() ? ETrue : EFalse;
+    //only number mode need judge it
 
-		//  both EStrokeFind and EStroke will be stored as Estroke  ///// 
-		if ( aMode != iDataMgr->InputMode() || 
-			 aMode == EStroke || aMode == EStrokeFind || 
-			 aMode == EZhuyin || aMode == EZhuyinFind || 
-			 numericOnlyChanged )
+    //  both EStrokeFind and EStroke will be stored as Estroke  ///// 
+    if ( aMode != iDataMgr->InputMode() || 
+        aMode == EStroke || aMode == EStrokeFind || 
+        aMode == EZhuyin || aMode == EZhuyinFind || 
+        numericOnlyChanged )
         {
         // deactivate original uimgr first
         if (iCurrentUiMgr 
--- a/textinput/peninputgenericitut/src/peninputgenericitutwindow.cpp	Tue May 25 13:03:44 2010 +0300
+++ b/textinput/peninputgenericitut/src/peninputgenericitutwindow.cpp	Wed Jun 09 10:03:19 2010 +0300
@@ -1475,6 +1475,12 @@
 
 void CGenericItutWindow::SetSpellDisplayContentL( TUint8* aData )
 	{
+	TBool isInSpell = iDataMgr->IsSpellMode();
+	if ( isInSpell )
+		{
+	    return;
+		}
+	
 	RDesReadStream readStream;
 
 	TPtr8 countPtr( aData, 3 * sizeof(TInt), 3 * sizeof(TInt));
--- a/textinput/peninputgenericvkb/src/peninputgenericvkblayout.cpp	Tue May 25 13:03:44 2010 +0300
+++ b/textinput/peninputgenericvkb/src/peninputgenericvkblayout.cpp	Wed Jun 09 10:03:19 2010 +0300
@@ -496,10 +496,10 @@
                     break;
                     }
                 }
+		    TBool bIsMirror = EFalse;
+		    bIsMirror = TranslateMirrorUnicode( inputCode, outputCode );
 
-            isDottedChar = TranslateMirrorUnicode( inputCode, outputCode );
-
-            if (isDottedChar)
+            if ( isDottedChar || bIsMirror )
                 {
                 number->Des().Append( outputCode );                    
                 data->iKeyData.Set(*number);
--- a/textinput/peninputsplititut/rom/peninputsplititut_variant.iby	Tue May 25 13:03:44 2010 +0300
+++ b/textinput/peninputsplititut/rom/peninputsplititut_variant.iby	Wed Jun 09 10:03:19 2010 +0300
@@ -27,6 +27,7 @@
 
 #ifdef RD_SCALABLE_UI_V2 
 
+#if !defined(__CHINESE) && !defined(__KOREAN)
 data = DATAZ_\RESOURCE_FILES_DIR\plugins\peninputsplititut.rsc          RESOURCE_FILES_DIR\plugins\peninputsplititut.rsc
 data = DATAZ_\RESOURCE_FILES_DIR\apps\peninputsplititut.mif             RESOURCE_FILES_DIR\apps\peninputsplititut.mif
 ECOM_PLUGIN(peninputsplititut.dll,peninputsplititut.rsc)
@@ -91,6 +92,7 @@
 data = DATAZ_\RESOURCE_FILES_DIR\plugins\peninputsplititutconfig_devanagari.rsc        RESOURCE_FILES_DIR\plugins\peninputsplititutconfig_devanagari.rsc
 #endif // hindi marathi
 
+#endif // __CHINESE
 #endif // RD_SCALABLE_UI_V2
 
 #endif //FF_VIRTUAL_ITUT_INPUT 
--- a/textinput/peninputsplititut/rom/peninputsplititutresources.iby	Tue May 25 13:03:44 2010 +0300
+++ b/textinput/peninputsplititut/rom/peninputsplititutresources.iby	Wed Jun 09 10:03:19 2010 +0300
@@ -26,9 +26,14 @@
 
 #ifdef RD_SCALABLE_UI_V2 
 
+#if !defined(__CHINESE) && !defined(__KOREAN)
+
 
 data = DATAZ_\RESOURCE_FILES_DIR\plugins\peninputsplititutnew.rsc          RESOURCE_FILES_DIR\plugins\peninputsplititutnew.rsc
 
+
+#endif // __CHINESE  __KOREAN
+
 #endif // RD_SCALABLE_UI_V2
 
 #endif //FF_VIRTUAL_ITUT_INPUT 
--- a/textinput/peninputsplitqwerty/rom/peninputsplitqwerty_variant.iby	Tue May 25 13:03:44 2010 +0300
+++ b/textinput/peninputsplitqwerty/rom/peninputsplitqwerty_variant.iby	Wed Jun 09 10:03:19 2010 +0300
@@ -26,6 +26,8 @@
 #if defined(__VIRTUAL_KEYBOARD_INPUT) || defined(FF_VIRTUAL_FULLSCR_QWERTY_INPUT)
 #ifdef RD_SCALABLE_UI_V2 
 
+#if !defined(__CHINESE) && !defined(__KOREAN)
+
 #if defined(LOCALES_SC_IBY) || defined(__LOCALES_01_IBY__)|| defined(__LOCALES_157_IBY__) || defined(__LOCALES_158_IBY__) \
 || defined(__LOCALES_159_IBY__) || defined(__LOCALES_10_IBY__) || defined(__LOCALES_161_IBY__) || defined(__LOCALES_129_IBY__) || defined(__LOCALES_186_IBY__) || defined(__LOCALES_230_IBY__)
 #define PENINPUT_VKB_GENERIC_PLUGIN
@@ -261,6 +263,8 @@
 ECOM_PLUGIN(peninputsplitqwerty.dll,peninputsplitqwerty.rsc)
 #endif //PENINPUT_VKB_GENERIC_PLUGIN
 
+
+#endif // __CHINESE __KOREAN
 #endif // RD_SCALABLE_UI_V2
 #endif //__VIRTUAL_KEYBOARD_INPUT || FF_VIRTUAL_FULLSCR_QWERTY_INPUT  
 #endif // __PEN_SUPPORT
--- a/textinput/peninputsplitqwerty/rom/peninputsplitqwertyresources.iby	Tue May 25 13:03:44 2010 +0300
+++ b/textinput/peninputsplitqwerty/rom/peninputsplitqwertyresources.iby	Wed Jun 09 10:03:19 2010 +0300
@@ -25,10 +25,11 @@
 #ifdef __PEN_SUPPORT
 #if defined(__VIRTUAL_KEYBOARD_INPUT) || defined(FF_VIRTUAL_FULLSCR_QWERTY_INPUT)
 #ifdef RD_SCALABLE_UI_V2 
-
+#if !defined(__CHINESE) && !defined(__KOREAN)
 
 data = DATAZ_\RESOURCE_FILES_DIR\plugins\peninputssqwin.rsc               RESOURCE_FILES_DIR\plugins\peninputssqwin.rsc
 
+#endif // __CHINESE __KOREAN
 #endif // RD_SCALABLE_UI_V2
 #endif //__VIRTUAL_KEYBOARD_INPUT || FF_VIRTUAL_FULLSCR_QWERTY_INPUT  
 #endif // __PEN_SUPPORT