webengine/osswebengine/WebKit/s60/webview/WebView.cpp
branchRCL_3
changeset 62 c711bdda59f4
parent 59 1f3c3f2f5b0a
child 64 ac77f89b1d9e
--- a/webengine/osswebengine/WebKit/s60/webview/WebView.cpp	Mon Mar 15 12:44:50 2010 +0200
+++ b/webengine/osswebengine/WebKit/s60/webview/WebView.cpp	Wed Mar 31 23:16:40 2010 +0300
@@ -197,7 +197,6 @@
 , m_defaultZoomLevel(KZoomLevelDefaultValue)
 , m_pageFullScreenHandler(NULL)
 , m_viewIsScrolling(false)
-, m_ptrbuffer(0)
 , m_showCursor(false)
 , m_allowRepaints(true)
 , m_prevEditMode(false)
@@ -231,7 +230,6 @@
         m_fastScrollTimer->Cancel();
     delete m_fastScrollTimer;
 
-    delete [] m_ptrbuffer;
 	delete m_pinchZoomHandler;
     delete m_repainttimer;
     delete m_webfeptexteditor;
@@ -351,7 +349,6 @@
     m_pinchZoomHandler = WebPagePinchZoomHandler::NewL(this);
     
     // Create the PointerEventHandler
-    m_ptrbuffer = new TPoint[256];
     m_webpointerEventHandler = WebPointerEventHandler::NewL(this);
 
     // Create the ScrollHandler
@@ -372,10 +369,12 @@
     MakeViewVisible(ETrue);
     m_isPluginsVisible=ETrue;
     CCoeControl::SetFocus(ETrue);
-#ifdef BRDO_MULTITOUCH_ENABLED_FF
-    //To enable advance pointer info for multi-touch
+
+#if defined(BRDO_MULTITOUCH_ENABLED_FF) && !defined (__WINSCW__)   
+    //Enable advance pointer info for multi-touch.
     Window().EnableAdvancedPointers();
 #endif 
+    
     cache()->setCapacities(0, 0, defaultCacheCapacity);
     
     m_waiter = new(ELeave) CActiveSchedulerWait();
@@ -712,13 +711,12 @@
 //-------------------------------------------------------------------------------
 void WebView::collectOffscreenbitmapL(CFbsBitmap& snapshot)
 {
-    if(   m_widgetextension && m_widgetextension->IsWidgetPublising()) {
-        if ( snapshot.Handle() == 0) {
-            // Create bitmap only once
-            (snapshot).Create(m_brctl->Size(), StaticObjectsContainer::instance()->webSurface()->displayMode());
-        }
-        CFbsBitmapDevice* device = CFbsBitmapDevice::NewL( &snapshot);
-        CleanupStack::PushL(device);
+    if ( snapshot.Handle() == 0) {
+        // Create bitmap only once
+        (snapshot).Create(m_brctl->Size(), StaticObjectsContainer::instance()->webSurface()->displayMode());
+    }
+    CFbsBitmapDevice* device = CFbsBitmapDevice::NewL( &snapshot);
+    CleanupStack::PushL(device);
 
         WebCoreGraphicsContext* gc = WebCoreGraphicsContext::NewL( device, &snapshot, mainFrame()->frameView());
         CleanupStack::PushL(gc);
@@ -733,8 +731,7 @@
         }
         mainFrame()->frameView()->draw( *gc, mainFrame()->frameView()->visibleRect() );
 
-       CleanupStack::PopAndDestroy(2);
-    }
+   CleanupStack::PopAndDestroy(2);
 
 }
 
@@ -2042,7 +2039,7 @@
     // some content that we already searched on the first pass. In the worst case, we could search the entire contents of this frame twice.
     // To fix this, we'd need to add a mechanism to specify a range in which to search.
     if (wrapFlag && lastFrame) {
-        if (frame->bridge()->searchFor(keyword, forward, false, true, false))
+        if (frame && frame->bridge() && frame->bridge()->searchFor(keyword, forward, false, true, false))
             return TBrCtlDefs::EFindMatch;
     }
 
@@ -2334,9 +2331,9 @@
     else {
         newMinZoomLevel = KZoomLevelDefaultValue;
     }
-
+#ifndef  BRDO_MULTITOUCH_ENABLED_FF
     newMinZoomLevel = (newMinZoomLevel/m_pageZoomHandler->stepSize())*m_pageZoomHandler->stepSize();
-
+#endif     
   TBool needsUpdateArray = EFalse;
   //Update the new array
   if ( m_minZoomLevel!= newMinZoomLevel)
@@ -2374,8 +2371,10 @@
     }
 
     m_zoomLevelArray.Reset();
-
+#ifndef  BRDO_MULTITOUCH_ENABLED_FF
     m_minZoomLevel = TInt(m_minZoomLevel/10) * 10;
+#endif 
+    
     m_zoomLevelArray.Append(KZoomLevelDefaultValue);
 
     //construct the zoom array from the default level
@@ -2609,11 +2608,13 @@
 #if USE(LOW_BANDWIDTH_DISPLAY)
         m_page->mainFrame()->loader()->setUseLowBandwidthDisplay(false);
 #endif
-    StaticObjectsContainer::instance()->setIconDatabaseEnabled(false);
+    if (!(m_brctl->capabilities() & TBrCtlDefs::ECapabilityAutoFormFill))    
+        StaticObjectsContainer::instance()->setIconDatabaseEnabled(false);
     }
 
     //Widgets dont need memory cache for dead objects. hence set it to 0
     cache()->setCapacities(0, 0, 0);
+    cache()->setDisabled(true);
     return m_widgetextension;
 }
 
@@ -3084,4 +3085,31 @@
     m_pinchDocDelta.iY = (float)shiftInView.iY * 100 / zoomLevel;
 }
 
+void WebView::reCreatePlugins()
+{
+      Frame* coreFrame = core(mainFrame());
+      MWebCoreObjectWidget* view = NULL;
+      for (Frame* frame = coreFrame; frame; frame = frame->tree()->traverseNext(coreFrame)) {
+           PassRefPtr<HTMLCollection> objects = frame->document()->objects();
+           for (Node* n = objects->firstItem(); n; n = objects->nextItem()) {
+               view = widget(n);
+               if (view) {
+                   PluginSkin* plg = static_cast<PluginSkin*>(view);
+                   if(plg->activeStreams() > 0)
+                      plg->reCreatePlugin();
+               }
+           }
+
+           PassRefPtr<HTMLCollection> embeds = frame->document()->embeds();
+           for (Node* n = embeds->firstItem(); n; n = embeds->nextItem()) {
+               view = widget(n);
+               if (view) {
+                   PluginSkin* plg = static_cast<PluginSkin*>(view);
+                   if(plg->activeStreams() > 0)
+                      plg->reCreatePlugin();
+               }
+           }
+      }
+}
+
 // END OF FILE