# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1276066999 -10800 # Node ID 6c2c2d3ab78852b64ca464dbe1bc5b9ec2bc68fe # Parent 5e18d8c489d6fa564c9ec04a3f310e70b7f74967 Revision: 201021 Kit: 2010123 diff -r 5e18d8c489d6 -r 6c2c2d3ab788 fep/aknfep/group/bld.inf --- 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 diff -r 5e18d8c489d6 -r 6c2c2d3ab788 fep/aknfep/help/data/xhtml.zip Binary file fep/aknfep/help/data/xhtml.zip has changed diff -r 5e18d8c489d6 -r 6c2c2d3ab788 fep/aknfep/help/group/bld.inf --- /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 "Symbian Foundation License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - Initial contribution +* +* Contributors: +* +* +* Description: +* Export help related files. +* +*/ + +#include +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 diff -r 5e18d8c489d6 -r 6c2c2d3ab788 fep/aknfep/help/inc/hwr.vqwerty.vitu.hlp.hrh --- /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 diff -r 5e18d8c489d6 -r 6c2c2d3ab788 fep/aknfep/help/rom/fephelps_variant.iby --- /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 diff -r 5e18d8c489d6 -r 6c2c2d3ab788 fep/aknfep/inc/AknFepManager.h --- 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 diff -r 5e18d8c489d6 -r 6c2c2d3ab788 fep/aknfep/inc/AknFepPluginManager.h --- 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 }; /** diff -r 5e18d8c489d6 -r 6c2c2d3ab788 fep/aknfep/peninputplugins/peninputimeplugincn/src/pluginfepmanagerbase.cpp --- 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 ); + } } // ----------------------------------------------------------------------------- diff -r 5e18d8c489d6 -r 6c2c2d3ab788 fep/aknfep/peninputplugins/peninputimeplugingeneric/src/pluginfepmanagerbase.cpp --- 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 ); + } } // ----------------------------------------------------------------------------- diff -r 5e18d8c489d6 -r 6c2c2d3ab788 fep/aknfep/peninputplugins/peninputimepluginitut/src/pluginfepmanagerbase.cpp --- 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 ); + } } // ----------------------------------------------------------------------------- diff -r 5e18d8c489d6 -r 6c2c2d3ab788 fep/aknfep/src/AknFepHashKeyManager.cpp --- 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; } diff -r 5e18d8c489d6 -r 6c2c2d3ab788 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 )); diff -r 5e18d8c489d6 -r 6c2c2d3ab788 fep/aknfep/src/AknFepPluginManager.cpp --- 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() ) { diff -r 5e18d8c489d6 -r 6c2c2d3ab788 inputmethods_plat/aknfep_pen_support_api/inc/aknfeppeninputenums.h --- 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 }; diff -r 5e18d8c489d6 -r 6c2c2d3ab788 inputmethods_plat/pen_input_server_api/inc/peninputclient.h --- 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 diff -r 5e18d8c489d6 -r 6c2c2d3ab788 inputmethods_plat/pen_input_server_api/inc/peninputcmd.h --- 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. diff -r 5e18d8c489d6 -r 6c2c2d3ab788 textinput/peninputarc/bwins/peninputClientU.DEF --- 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) diff -r 5e18d8c489d6 -r 6c2c2d3ab788 textinput/peninputarc/eabi/peninputClientU.DEF --- 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 + diff -r 5e18d8c489d6 -r 6c2c2d3ab788 textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutbasecontrol.h --- 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 diff -r 5e18d8c489d6 -r 6c2c2d3ab788 textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutvirtualkeyctrl.h --- 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(); diff -r 5e18d8c489d6 -r 6c2c2d3ab788 textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutvkb.h --- 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; diff -r 5e18d8c489d6 -r 6c2c2d3ab788 textinput/peninputarc/inc/pensrvcliinc/peninputclientimpl.h --- 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 * diff -r 5e18d8c489d6 -r 6c2c2d3ab788 textinput/peninputarc/inc/pensrvcliinc/peninputclientserver.h --- 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 diff -r 5e18d8c489d6 -r 6c2c2d3ab788 textinput/peninputarc/inc/pensrvcliinc/peninputserver.h --- 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; }; /** diff -r 5e18d8c489d6 -r 6c2c2d3ab788 textinput/peninputarc/inc/pensrvcliinc/penuiwndctrl.h --- 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 diff -r 5e18d8c489d6 -r 6c2c2d3ab788 textinput/peninputarc/src/peninputclient/penclientimpl.cpp --- 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 msg(aEnabled); + arg.Set(KMsgSlot0,&msg); + SendReceive(EPeninputEnablePriorityChangeOnOriChange,arg); + } //end of class RPeninputServerImpl diff -r 5e18d8c489d6 -r 6c2c2d3ab788 textinput/peninputarc/src/peninputclient/peninputclient.cpp --- 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 diff -r 5e18d8c489d6 -r 6c2c2d3ab788 textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutbasecontrol.cpp --- 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; } diff -r 5e18d8c489d6 -r 6c2c2d3ab788 textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutbubblectrl.cpp --- 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(&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(&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(&data),sizeof(data)/sizeof(TUint16)); + UiLayout()->SignalOwner( ESignalPopupArea, ptrForAdd ); + } + } CFepUiBaseCtrl::SetRect(aRect); ResizeDeviceL(); } diff -r 5e18d8c489d6 -r 6c2c2d3ab788 textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutcursor.cpp --- 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); } diff -r 5e18d8c489d6 -r 6c2c2d3ab788 textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutmultilineicfeditor.cpp --- 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; } } diff -r 5e18d8c489d6 -r 6c2c2d3ab788 textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutpopupwnd.cpp --- 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) diff -r 5e18d8c489d6 -r 6c2c2d3ab788 textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutrootctrl.cpp --- 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(); diff -r 5e18d8c489d6 -r 6c2c2d3ab788 textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutvkb.cpp --- 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 diff -r 5e18d8c489d6 -r 6c2c2d3ab788 textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutvkbkeyctrl.cpp --- 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()); diff -r 5e18d8c489d6 -r 6c2c2d3ab788 textinput/peninputarc/src/peninputlayoutcontrol/peninputuilayout.cpp --- 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(aData))); } break; + case ECmdPeninputEnalbeLayoutReDrawWhenActive: + { + TBool enableLayoutRedraw = ETrue; + TPtrC data(reinterpret_cast(&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(&enableLayoutRedraw),sizeof(TBool)/2); + SignalOwner(ESignalEnableLayoutRedrawWhenActive,data); } // --------------------------------------------------------------------------- // CFepUiLayout::SetLayoutPos diff -r 5e18d8c489d6 -r 6c2c2d3ab788 textinput/peninputarc/src/peninputserverapp/peninputserver.cpp --- 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*)¬Draw ); 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 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( 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*)¬Draw); + 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()) { diff -r 5e18d8c489d6 -r 6c2c2d3ab788 textinput/peninputarc/src/peninputserverapp/peninputserversession.cpp --- 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: diff -r 5e18d8c489d6 -r 6c2c2d3ab788 textinput/peninputarc/src/peninputserverapp/penuiwndctrl.cpp --- 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(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( const_cast( 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) diff -r 5e18d8c489d6 -r 6c2c2d3ab788 textinput/peninputcommonctrls/src/peninputbuttons/peninputbutton.cpp --- 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(); diff -r 5e18d8c489d6 -r 6c2c2d3ab788 textinput/peninputfingerhwr/src/peninputfingerhwrlayout.cpp --- 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; } diff -r 5e18d8c489d6 -r 6c2c2d3ab788 textinput/peninputfingerhwr/src/peninputfingerhwrwnd.cpp --- 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 ); diff -r 5e18d8c489d6 -r 6c2c2d3ab788 textinput/peninputgenericitut/src/peninputgenericitutlayout.cpp --- 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 diff -r 5e18d8c489d6 -r 6c2c2d3ab788 textinput/peninputgenericitut/src/peninputgenericitutwindow.cpp --- 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)); diff -r 5e18d8c489d6 -r 6c2c2d3ab788 textinput/peninputgenericvkb/src/peninputgenericvkblayout.cpp --- 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); diff -r 5e18d8c489d6 -r 6c2c2d3ab788 textinput/peninputsplititut/rom/peninputsplititut_variant.iby --- 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 diff -r 5e18d8c489d6 -r 6c2c2d3ab788 textinput/peninputsplititut/rom/peninputsplititutresources.iby --- 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 diff -r 5e18d8c489d6 -r 6c2c2d3ab788 textinput/peninputsplitqwerty/rom/peninputsplitqwerty_variant.iby --- 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 diff -r 5e18d8c489d6 -r 6c2c2d3ab788 textinput/peninputsplitqwerty/rom/peninputsplitqwertyresources.iby --- 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