diff -r 6c2c2d3ab788 -r 857bebeecec0 textinput/peninputarc/src/peninputserverapp/peninputserver.cpp --- a/textinput/peninputarc/src/peninputserverapp/peninputserver.cpp Wed Jun 09 10:03:19 2010 +0300 +++ b/textinput/peninputarc/src/peninputserverapp/peninputserver.cpp Mon Jun 21 16:02:35 2010 +0300 @@ -429,8 +429,12 @@ void CPeninputServer::ActivateSpriteInGlobalNotesL() { TBool notDraw = EFalse; - iUiLayout->HandleCommand( ECmdPeninputDisableLayoutDrawing, - (unsigned char*)¬Draw ); + + if(iUiLayout) + { + iUiLayout->HandleCommand( ECmdPeninputDisableLayoutDrawing, + (unsigned char*)¬Draw ); + } if(iActive) { if(iUseWindowCtrl) @@ -693,14 +697,20 @@ if(aFlag) { iEventBufferQueue->Cancel(); - iUiLayout->OnDeActivate(); + if( iUiLayout ) + { + iUiLayout->OnDeActivate(); + } if(iUseWindowCtrl) iPenUiCtrl->OnDeactivate(); //disable non fading } else { iEventBufferQueue->GetEvent(); - iUiLayout->OnActivate(); + if( iUiLayout ) + { + iUiLayout->OnActivate(); + } if(iUseWindowCtrl) iPenUiCtrl->OnActivate(CPenUiWndCtrl::ENoremalEditor); //disable non fading } @@ -2114,7 +2124,18 @@ { //hide the layout if it's already shown + if ( iActive ) + { + iUiLayout->OnActivate(); + } + iUiLayout->OnResourceChange(aType); + + if(iUseWindowCtrl) + { + iPenUiCtrl->DrawNow(); + } + //show the layout if it's active } } @@ -2240,8 +2261,8 @@ if(iUiLayout) { - TBool notDraw = ETrue; - iUiLayout->HandleCommand(ECmdPeninputDisableLayoutDrawing,(unsigned char*)¬Draw); + //TBool notDraw = ETrue; + //iUiLayout->HandleCommand(ECmdPeninputDisableLayoutDrawing,(unsigned char*)¬Draw); iUiLayout->OnDeActivate(); } } @@ -2445,30 +2466,32 @@ break; } */ - if(IsGlobalNotesApp(focusApp)) - { - iInGlobalNotesState = ETrue; - // add this to enable global dim - DeactivatePenUiLayout(EFalse); - break; - } + if( IsGlobalNotesApp(focusApp) ) + { + iInGlobalNotesState = ETrue; + // add this to enable global dim + DeactivatePenUiLayout(EFalse); + break; + } /* else if (focusApp.iUid == 0x102750f0) { DeactivateSprite(); } -*/ else +*/ else { - if(iInGlobalNotesState) - { - //fix for fast swap case + if(iInGlobalNotesState) + { + //fix for fast swap case iInGlobalNotesState = EFalse; - if(iPreNonGloebalNotesWndGrpId != focusApp.iUid) + if(iPreNonGloebalNotesWndGrpId != focusApp.iUid ) { - iPreNonGloebalNotesWndGrpId = focusApp.iUid; - + iPreNonGloebalNotesWndGrpId = focusApp.iUid; DeactivateSprite(ETrue);//hide pen ui immediately if switched to another application - iForegroundSession = NULL; + // Notify FEP to close touch input window. + // Under this case, touch input window can't be closed without norifying FEP side. + // After close touch input window, FEP must change some states. + SignalOwner( ESignalDeactivateSprite, KNullDesC ); } } else @@ -2476,7 +2499,7 @@ DeactivateSprite(ETrue); } } - break; + break; } DeactivateSprite(ETrue);//hide pen ui immediately } @@ -2576,7 +2599,7 @@ } if(iForegroundUiHandler) { - TInt uiType = iUiLayout->PenInputType(); + TInt uiType = iUiLayout ? iUiLayout->PenInputType() : EPluginInputModeNone; bNeedWait = iForegroundUiHandler->SignalUiActivationObserver( aSignalCode,uiType); } @@ -2604,6 +2627,11 @@ void CPeninputServer::RecoverButtonEventState() { + if(!iUiLayout) + { + return; + } + if (TRawEvent::EButton1Down == iLastRawEvent.Type()) { iLastRawEvent.Set(TRawEvent::EButton1Up);//,iLastSimulatedKeyEvent.ScanCode()