Changeset 56546 in webkit
- Timestamp:
- Mar 25, 2010 8:06:10 AM (14 years ago)
- Location:
- trunk/WebCore
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r56543 r56546 1 2010-03-25 yael aharon <yael.aharon@nokia.com> 2 3 Reviewed by Laszlo Gombos. 4 5 [Qt] Windowed netscape plugins don't work with QGraphicsWebView on Symbian 6 https://bugs.webkit.org/show_bug.cgi?id=35112 7 8 Add a proxy widget when loading a QWidget based plugin in a QGraphicsWebView. 9 10 * plugins/symbian/PluginContainerSymbian.cpp: 11 (PluginContainerSymbian::PluginContainerSymbian): 12 (PluginContainerSymbian::focusInEvent): 13 * plugins/symbian/PluginContainerSymbian.h: 14 (WebCore::PluginContainerSymbian::proxy): 15 * plugins/symbian/PluginViewSymbian.cpp: 16 (WebCore::PluginView::updatePluginWidget): 17 (WebCore::PluginView::platformStart): 18 (WebCore::PluginView::platformDestroy): 19 1 20 2010-03-25 Simon Fraser <simon.fraser@apple.com> 2 21 -
trunk/WebCore/plugins/symbian/PluginContainerSymbian.cpp
r49574 r56546 33 33 using namespace WebCore; 34 34 35 PluginContainerSymbian::PluginContainerSymbian(PluginView* view, QWidget* parent )36 : m_parent(parent)35 PluginContainerSymbian::PluginContainerSymbian(PluginView* view, QWidget* parent, QGraphicsProxyWidget* proxy) 36 : QWidget(parent) 37 37 , m_pluginView(view) 38 , m_proxy(proxy) 38 39 , m_hasPendingGeometryChange(false) 39 40 { 40 setParent(m_parent);41 41 } 42 42 … … 63 63 } 64 64 65 void PluginContainerSymbian::focusInEvent(QFocusEvent* event)65 void PluginContainerSymbian::focusInEvent(QFocusEvent*) 66 66 { 67 67 if (Page* page = m_pluginView->parentFrame()->page()) -
trunk/WebCore/plugins/symbian/PluginContainerSymbian.h
r49574 r56546 23 23 #include <QWidget> 24 24 25 class QGraphicsProxyWidget; 26 25 27 namespace WebCore { 26 28 … … 30 32 Q_OBJECT 31 33 public: 32 PluginContainerSymbian(PluginView*, QWidget* parent );34 PluginContainerSymbian(PluginView*, QWidget* parent, QGraphicsProxyWidget* proxy = 0); 33 35 ~PluginContainerSymbian(); 34 36 35 37 void requestGeometry(const QRect&, const QRegion& clip = QRegion()); 36 38 void adjustGeometry(); 39 QGraphicsProxyWidget* proxy() { return m_proxy; } 37 40 38 41 protected: … … 41 44 private: 42 45 PluginView* m_pluginView; 43 Q Widget* m_parent;46 QGraphicsProxyWidget* m_proxy; 44 47 QRect m_windowRect; 45 48 QRegion m_clipRegion; -
trunk/WebCore/plugins/symbian/PluginViewSymbian.cpp
r55432 r56546 53 53 #include "npinterface.h" 54 54 #include "npruntime_impl.h" 55 #include "qgraphicswebview.h" 55 56 #include "runtime_root.h" 57 #include <QGraphicsProxyWidget> 56 58 #include <QKeyEvent> 57 59 #include <QPixmap> … … 86 88 87 89 m_windowRect = IntRect(frameView->contentsToWindow(frameRect().location()), frameRect().size()); 90 88 91 m_clipRect = windowClipRect(); 89 92 m_clipRect.move(-m_windowRect.x(), -m_windowRect.y()); … … 388 391 if (m_isWindowed) { 389 392 QWebPageClient* client = m_parentFrame->view()->hostWindow()->platformPageClient(); 390 // FIXME this will not work for QGraphicsView. 391 // But we cannot use winId because it will create a window and on S60, 392 // QWidgets should not create a window. 393 Q_ASSERT(qobject_cast<QWidget*>(client->pluginParent())); 394 setPlatformWidget(new PluginContainerSymbian(this, 395 qobject_cast<QWidget*>(client->pluginParent()))); 393 QGraphicsProxyWidget* proxy = 0; 394 if (QGraphicsWebView *webView = qobject_cast<QGraphicsWebView*>(client->pluginParent())) 395 proxy = new QGraphicsProxyWidget(webView); 396 397 PluginContainerSymbian* container = new PluginContainerSymbian(this, proxy ? 0 : client->ownerWidget(), proxy); 398 setPlatformWidget(container); 399 if (proxy) 400 proxy->setWidget(container); 401 396 402 m_npWindow.type = NPWindowTypeWindow; 397 403 m_npWindow.window = (void*)platformPluginWidget(); … … 409 415 void PluginView::platformDestroy() 410 416 { 411 delete platformPluginWidget(); 417 QWebPageClient* client = m_parentFrame->view()->hostWindow()->platformPageClient(); 418 if (QGraphicsWebView *webView = qobject_cast<QGraphicsWebView*>(client->pluginParent())) 419 delete static_cast<PluginContainerSymbian*>(platformPluginWidget())->proxy(); 420 else 421 delete platformPluginWidget(); 412 422 } 413 423
Note: See TracChangeset
for help on using the changeset viewer.