diff -r ecbabf52600f -r bd83ceabce89 fep/aknfep/src/AknFepPluginManager.cpp --- a/fep/aknfep/src/AknFepPluginManager.cpp Wed Sep 01 12:23:33 2010 +0100 +++ b/fep/aknfep/src/AknFepPluginManager.cpp Tue Sep 14 21:59:06 2010 +0300 @@ -153,6 +153,17 @@ return ETrue; return EFalse; } + +// ----------------------------------------------------------------------------- +// Check if the app specified by aUid is avkon notify server +// ----------------------------------------------------------------------------- +// +TBool IsAknNotifyServerApp( const TUid& aUid ) + { + const TInt KAknNotifySrvUid = 0x10281EF2; + return aUid.iUid == KAknNotifySrvUid; + } + #ifdef RD_SCALABLE_UI_V2 inline TBool IsAbleTouseCallBubble() { @@ -305,7 +316,10 @@ if( !iPenInputSvrConnected || !iPenInputServer.IsVisible() || iPenInputServer.IsDimmed() ) { if( iFepMan.FepAwareTextEditor() ) - { + { + // Enable transition effect when close pen ui + // by pressing close button. + iPenInputServer.EnableGfxTransEffect( ETrue ); iPreferredUiMode = ETrue; TryChangePluginInputModeByModeL((TPluginInputMode)(iSharedData.PluginInputMode()), EPenInputOpenManually, @@ -563,6 +577,8 @@ } break; case ESignalLayoutClosed: + // Enable transition effect when close pen ui by pressing close button. + iPenInputServer.EnableGfxTransEffect( ETrue ); if(iPluginInputMode == EPluginInputModeItut) { iFepMan.PtiEngine()->CancelTimerActivity(); @@ -1013,9 +1029,24 @@ break; case EPluginResourceChanged: { - iOrientationChangedfromUI = ETrue; - OnResourceChangedL( aEventData ); - iOrientationChangedfromUI = EFalse; + iOrientationChangedfromUI = ETrue; + + TUid uid = GetCurAppUid(); + if ( IsAknNotifyServerApp( uid ) ) + { + //turn off AutoForeground feature of global query temporarily during layout switching + //if not, global query may be shown on top of virtual input by unexpected tap events. + CCoeEnv::Static()->RootWin().AutoForeground( EFalse ); + TRAPD( err, OnResourceChangedL( aEventData ) ); + CCoeEnv::Static()->RootWin().AutoForeground( ETrue ); + User::LeaveIfError( err ); + } + else + { + OnResourceChangedL( aEventData ); + } + + iOrientationChangedfromUI = EFalse; } break; case EPluginFaseSwap: @@ -2824,7 +2855,11 @@ { iCurrentPluginInputFepUI->HandleCommandL (ECmdPenInputSendEditorTextAndCurPos, reinterpret_cast(&icfData)); - iFepMan.TryPopExactWordInICFL(); + if ( icfData.iMidPos >= 0 ) + { + // icfData.iMidPos >= 0 means the text which will be sent to ICF is inline text. + iFepMan.TryPopExactWordInICFL(); + } } if ( secretEditor ) @@ -5949,7 +5984,8 @@ } TInt flags = editorState->Flags(); - return ( flags & EEikEdwinAvkonDisableCursor ) == EEikEdwinAvkonDisableCursor; + return ( flags & EAknEditorFlagAvkonSecretEditor ) == EAknEditorFlagAvkonSecretEditor; + } // --------------------------------------------------------------------------- @@ -6102,6 +6138,16 @@ TPtiTextCase caseCalculated = EPtiCaseLower; TBuf mappedCharacters; TBool isMappingFound = EFalse; + TPtiEngineInputMode oldInputMode = iFepMan.PtiEngine()->InputMode(); + if ( oldInputMode != EPtiEngineQwertyPredictive ) + { + // if current input mode isn't EPtiEngineQwertyPredictive, + // change it to EPtiEngineQwertyPredictive temporarily, + // so that during the process of searching in qwerty keymapping afterward, + // qwerty keymapping can be gained. + iFepMan.PtiEngine()->SetInputMode( EPtiEngineQwertyPredictive ); + } + TPtiKey key = iFepMan.PtiEngine()->CharacterToKey( aCharacter ); //It loops through all the key mappings to find the character in the key mappings and @@ -6124,6 +6170,15 @@ break; } } + + if ( oldInputMode != EPtiEngineQwertyPredictive ) + { + // if current input mode isn't EPtiEngineQwertyPredictive, + // current input mode has been set to EPtiEngineQwertyPredictive temporarily before, + // now we need to restore it, + // because state machine is responsible for changing it practically. + iFepMan.PtiEngine()->SetInputMode( oldInputMode ); + } //Now if there is no key mapping found for the character, then use the default TChar //APIs to find the case of the character. if( !isMappingFound )