diff -r 5e18d8c489d6 -r 1bbdde98cc2d fep/aknfep/src/AknFepManager.cpp --- 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 ));