webengine/osswebengine/WebKit/s60/webview/WebFrame.cpp
branchRCL_3
changeset 47 e1bea15f9a39
parent 44 800203832575
child 48 79859ed3eea9
--- a/webengine/osswebengine/WebKit/s60/webview/WebFrame.cpp	Thu Jul 15 19:53:20 2010 +0300
+++ b/webengine/osswebengine/WebKit/s60/webview/WebFrame.cpp	Thu Aug 19 10:58:56 2010 +0300
@@ -285,7 +285,15 @@
     PluginHandler* plghandler = StaticObjectsContainer::instance()->pluginHandler();
     WTF::HashSet<PluginSkin*> pluginObjs = plghandler->pluginObjects();
     for(WTF::HashSet<PluginSkin*>::iterator it = pluginObjs.begin() ;  it != pluginObjs.end() ; ++it ) {
-        notifyPluginOfPositionChange(static_cast<PluginSkin*> (*it));
+        PluginSkin* plg = static_cast<PluginSkin*> (*it);
+        WebFrame* plgWebFrame = plg->getWebFrame();
+        CBrCtl*   plbrCtl = control(plg->frame());
+        CBrCtl*   pgbrCtl = control(this);
+
+        if(plbrCtl == pgbrCtl)
+            {
+            notifyPluginOfPositionChange(static_cast<PluginSkin*> (*it));   
+            }
     }
 }
 
@@ -436,7 +444,9 @@
 
 WebFrame* kit(Frame* frame)
 {
-    return frame ? ((WebFrameBridge *)frame->bridge())->webFrame(): NULL;
+    if( frame && frame->bridge() )    
+    	return  ((WebFrameBridge *)frame->bridge())->webFrame();
+    return NULL;	
 }
 
 WebView *kit(Page* page)
@@ -603,6 +613,38 @@
 
 }
 
+void WebFrame::notifyPluginFocusChangeEvent(TBool visible)
+{
+    MWebCoreObjectWidget* view = NULL;  
+    Frame* coreFrame = core(this); 
+    
+    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 && static_cast<PluginSkin*>(view)->isFlashPlugin()) { 
+                if(visible)
+                    static_cast<PluginSkin*>(view)->HandleGainingForeground();
+                else
+                    static_cast<PluginSkin*>(view)->HandleLosingForeground();
+            } 
+        } 
+        
+        PassRefPtr<HTMLCollection> embeds = frame->document()->embeds();        
+        for (Node* n = embeds->firstItem(); n; n = embeds->nextItem()) { 
+            view = widget(n); 
+            if (view && static_cast<PluginSkin*>(view)->isFlashPlugin()) { 
+                if(visible)
+                    static_cast<PluginSkin*>(view)->HandleGainingForeground();
+                else
+                    static_cast<PluginSkin*>(view)->HandleLosingForeground();
+            } 
+        }
+    }
+        
+}
+
 void WebFrame::reCreatePlugins()
 {
     MWebCoreObjectWidget* view = NULL;  
@@ -615,8 +657,7 @@
             view = widget(n);  
             if (view) { 
                 plg = static_cast<PluginSkin*>(view); 
-                if (plg->activeStreams() > 0)
-                    plg->reCreatePlugin(); 
+                plg->reCreatePlugin(); 
             } 
         } 
         PassRefPtr<HTMLCollection> embeds = frame->document()->embeds();        
@@ -624,8 +665,7 @@
             view = widget(n); 
             if (view) { 
                 plg = static_cast<PluginSkin*>(view); 
-                if (plg->activeStreams() > 0)
-                    plg->reCreatePlugin(); 
+                plg->reCreatePlugin(); 
             } 
         }
     }