diff -r 4917f9bf7995 -r 8bfb9186a8b8 webengine/osswebengine/WebKit/s60/webview/BrCtl.cpp --- a/webengine/osswebengine/WebKit/s60/webview/BrCtl.cpp Tue Apr 27 17:46:17 2010 +0300 +++ b/webengine/osswebengine/WebKit/s60/webview/BrCtl.cpp Tue May 11 17:13:44 2010 +0300 @@ -420,6 +420,7 @@ , m_wmlEngineInterface(NULL) , m_brCtlDownloadObserver(aBrCtlDownloadObserver) , m_windoCloseTimer(NULL) + , m_didFirstLayout(false) { m_documentHeight = 0; m_displayHeight = 0; @@ -594,12 +595,15 @@ m_webView->formFillPopup()->handleCommandL(TBrCtlDefs::ECommandCancel); break; case TBrCtlDefs::EEventNewContentDisplayed: - if(m_brCtlLayoutObserver && m_webView) + if(m_brCtlLayoutObserver && m_webView && !m_didFirstLayout) { m_brCtlLayoutObserver->NotifyLayoutChange( (webView()->mainFrame()->bridge()->m_rtl ? EOriginTopRight : EOriginTopLeft)); + m_didFirstLayout = true; + } break; case TBrCtlDefs::EEventContentFinished: case TBrCtlDefs::EEventUploadFinished: m_pageLoadFinished = true; + m_didFirstLayout= false; if (m_suspendTimers) { m_suspendTimers = false; setDeferringTimers(true); @@ -664,6 +668,7 @@ if (coreFrame) coreFrame->eventHandler()->deactivatedEvent(); } + m_webView->setEditable(EFalse); break; } case TBrCtlDefs::ECommandCancelFetch: @@ -777,7 +782,7 @@ setDeferringTimers(false); m_suspendTimers = false; #endif - + m_webView->resumeJsTimers(); break; } case TBrCtlDefs::ECommandAppBackground: @@ -801,6 +806,7 @@ //Disable the zooming bar when it goes to background m_webView->hideZoomSliderL(); + m_webView->pauseJsTimers(); break; } case TBrCtlDefs::ECommandClearAutoFormFillData: @@ -956,6 +962,7 @@ case TBrCtlDefs::ECommandEnterFullscreenBrowsing: { + m_webView->resumeJsTimers(); m_webView->EnterFullscreenBrowsingL(); break; } @@ -1005,7 +1012,24 @@ } break; } - + case TBrCtlDefs::ECommandLoseFocus: + case TBrCtlDefs::ECommandPauseScriptTimers: + { + m_webView->pauseJsTimers(); + break; + } + + case TBrCtlDefs::ECommandGainFocus: + case TBrCtlDefs::ECommandResumeScriptTimers: + { + m_webView->resumeJsTimers(); + break; + } + case TBrCtlDefs::ECommandCancelQueuedTransactions: + { + StaticObjectsContainer::instance()->resourceLoaderDelegate()->httpSessionManager()->cancelQueuedTransactions(); + break; + } default: { if ( m_wmlEngineInterface && @@ -1717,6 +1741,9 @@ User::Leave(KErrArgument); // convert to 8 + // reset timers ptr, if paused from last page + m_webView->resetJsTimers(); + _LIT(KJs, "javascript:"); if (url.Length() > KJs().Length()) { if (url.Left(KJs().Length()).FindF(KJs) == 0) { @@ -2531,3 +2558,4 @@ +