fep/aknfep/src/AknFepManager.cpp
branchRCL_3
changeset 13 1bbdde98cc2d
parent 12 5e18d8c489d6
child 16 857bebeecec0
--- 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 ));