diff -r 4eb1ae11334f -r e6a39382bb9c textinput/peninputarc/src/peninputserverapp/penuiwndctrl.cpp --- a/textinput/peninputarc/src/peninputserverapp/penuiwndctrl.cpp Wed Apr 14 16:18:34 2010 +0300 +++ b/textinput/peninputarc/src/peninputserverapp/penuiwndctrl.cpp Tue Apr 27 16:59:43 2010 +0300 @@ -30,10 +30,24 @@ #include #endif +#ifndef FIX_FOR_NGA +#define FIX_FOR_NGA +#endif const TInt KAknCapServerUid = 0x10207218; const TInt KAknNotifySrvUid = 0x10281EF2; - + +const TInt KAutoRefreshTimer = 10; //ms +const TInt KAutoRefreshLongTimer = 1000; //ms + +TInt AutoRefreshTimerCallback( TAny* aObject ) + { + CPenUiWndCtrl* wnd = static_cast( aObject ); + wnd->RefreshUI(); + + return 0; + } + CPenUiWndCtrl::CPenUiWndCtrl(RWindowGroup& aWndGroup,CFbsBitmap * aBitmap) :iWndGroup(aWndGroup), iBitmap(aBitmap), @@ -54,8 +68,13 @@ // if aknnote gets destroyed without user interaction or timers GfxTransEffect::NotifyExternalState( ENotifyGlobalAbort ); GfxTransEffect::Deregister(this); //Always deregister in destructor. + } +#endif + if ( iAutoRefreshTimer && iAutoRefreshTimer->IsActive() ) + { + iAutoRefreshTimer->Cancel(); } -#endif + delete iAutoRefreshTimer; } void CPenUiWndCtrl::ConstructL() @@ -75,6 +94,8 @@ #endif // ActivateL(); iPopupWnd = CPenUiPopWnd::NewL(iWndGroup,iBitmap,this); + + iAutoRefreshTimer = CPeriodic::NewL( CActive::EPriorityStandard ); } @@ -95,6 +116,23 @@ gc.BitBlt(aRect.iTl,iBitmap,aRect); } +void CPenUiWndCtrl::RefreshUI() + { + StopRefreshTimer(); + + if ( iShowPopup ) + { + iPopupWnd->DrawNow(); + } + else + { + DrawNow(); + } + CCoeEnv::Static()->WsSession().Flush(); + CCoeEnv::Static()->WsSession().Finish(); + + } + TInt CPenUiWndCtrl::WndPriority() { return iPriority; @@ -280,17 +318,15 @@ iPopupWnd->Invalidate(aRect); iPopupWnd->MakeVisible(ETrue);//This is a temproary fix due to pop up UI not updated. iPopupWnd->Invalidate(aRect); - iPopupWnd->DrawNow(); } else - //DrawNow(aRect); { iInvalidateRect = aRect; Window().Invalidate(aRect); - DrawNow(aRect); } - CCoeEnv::Static()->WsSession().Flush(); - CCoeEnv::Static()->WsSession().Finish(); +#ifdef FIX_FOR_NGA + RestartRefreshTimer(); +#endif } void CPenUiWndCtrl::OnActivate(EditorType aType) @@ -429,6 +465,24 @@ iResourceChange = aResourceChange; } + +void CPenUiWndCtrl::RestartRefreshTimer() + { + StopRefreshTimer(); + + TTimeIntervalMicroSeconds32 t1 = KAutoRefreshTimer * 1000; + TTimeIntervalMicroSeconds32 t2 = KAutoRefreshLongTimer * 1000; + iAutoRefreshTimer->Start( t1, t2, TCallBack(AutoRefreshTimerCallback, this) ); + } + +void CPenUiWndCtrl::StopRefreshTimer() + { + if ( iAutoRefreshTimer->IsActive() ) + { + iAutoRefreshTimer->Cancel(); + } + } + //End Of File // class CInternalBkCtrl CInternalBkCtrl::CInternalBkCtrl(RWindowGroup& aWndGroup)