diff -r 4bd5176e1bc8 -r a1a5d4e727e8 webengine/osswebengine/WebKit/s60/plugins/PluginWin.cpp --- 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; +}