webengine/osswebengine/WebKit/s60/plugins/PluginWin.cpp
branchRCL_3
changeset 73 a1a5d4e727e8
parent 70 8bfb9186a8b8
child 84 800203832575
--- a/webengine/osswebengine/WebKit/s60/plugins/PluginWin.cpp	Tue May 25 13:52:38 2010 +0300
+++ b/webengine/osswebengine/WebKit/s60/plugins/PluginWin.cpp	Wed Jun 09 10:52:50 2010 +0300
@@ -67,7 +67,7 @@
 //
 PluginWin::PluginWin(PluginSkin* pluginskin)
     : m_pluginskin(pluginskin)
-    , m_windowedPlugin(true), m_fullscreen(false), m_windowCreated(false)
+    , m_windowedPlugin(true), m_fullscreen(false), m_windowCreated(false), m_visibilty(false)
 {
 }
 
@@ -98,6 +98,15 @@
 //
 PluginWin::~PluginWin()
 {
+    CBrCtl* brCtl = control(m_pluginskin->frame());
+    if (brCtl) {
+        WebView*  view = brCtl->webView();
+        if (view) {
+            int index = view->getVisiblePlugins().Find(m_pluginskin);
+            if (index != KErrNotFound)
+                view->getVisiblePlugins().Remove(index);
+        }
+    }
 
     TRAP_IGNORE( setPluginFocusL( EFalse ) );
 
@@ -384,6 +393,18 @@
         else
             HandleLosingForeground();
     }
+    
+    WebView* view = control(m_pluginskin->frame())->webView();
+    int index = view->getVisiblePlugins().Find(m_pluginskin);
+    if (visible && (m_visibilty != visible) && (index == KErrNotFound)) {
+        view->getVisiblePlugins().AppendL(m_pluginskin);
+        m_visibilty = visible;
+    }
+    else if (!visible && (index != KErrNotFound)) {
+        view->getVisiblePlugins().Remove(index);
+        m_visibilty = visible;
+    }
+    
     NotifyPluginVisible(visible);
     if (!m_windowedPlugin && m_pluginskin->getNPPluginFucs() && m_pluginskin->getNPPluginFucs()->event) {
         NPEvent event;
@@ -833,3 +854,21 @@
     return ret;
 
 }
+
+bool PluginWin::containsPoint(WebView& view, const TPoint& pt)
+{
+    if (m_control) {
+        if (StaticObjectsContainer::instance()->isPluginFullscreen()) {
+            return true;
+        }
+        else {
+            TPoint point = pt;
+            TPoint viewPos = view.PositionRelativeToScreen();
+            TPoint ctrlPos = m_control->PositionRelativeToScreen();
+            point += viewPos;
+            return m_control->Rect().Contains(point - ctrlPos);
+        }
+    }
+    else 
+        return false;   
+}