--- 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;
+}