Bug 545899 - Qt XEmbedding must be updated according to QWidget->QGraphicsWidget change. r=dougt

This commit is contained in:
Oleg Romashin
2010-03-01 21:05:48 +02:00
parent 9f0ec7eff7
commit 2f5407323b
2 changed files with 32 additions and 10 deletions

View File

@@ -101,6 +101,8 @@
#ifdef MOZ_WIDGET_QT
#include <QtGui/QX11EmbedWidget>
#include <QGraphicsWidget>
#include <QGraphicsProxyWidget>
#endif
#ifdef MOZ_WIDGET_GTK2
@@ -689,12 +691,22 @@ nsFrameLoader::ShowRemoteFrame(nsIFrameFrame* frame, nsIView* view)
GdkNativeWindow id = gtk_socket_get_id(GTK_SOCKET(mRemoteSocket));
mChildProcess->SendcreateWidget(id);
#elif defined(MOZ_WIDGET_QT)
QWidget* parent_win = static_cast<QWidget*>(w->GetNativeData(NS_NATIVE_WINDOW));
mRemoteSocket = new QX11EmbedContainer(parent_win);
NS_ENSURE_TRUE(mRemoteSocket, false);
mRemoteSocket->show();
mRemoteSocket->resize(size.width, size.height);
mChildProcess->SendcreateWidget(mRemoteSocket->winId());
if (getenv("USE_XEMBED_PROXY")) {
// Very bad idea to use Xembedding for IPC, but test-ipc.xul still rendering with XEmbed
QGraphicsWidget *widget = static_cast<QGraphicsWidget*>(w->GetNativeData(NS_NATIVE_WINDOW));
NS_ENSURE_TRUE(widget, false);
QGraphicsProxyWidget *proxy = new QGraphicsProxyWidget(widget);
NS_ENSURE_TRUE(proxy, false);
mRemoteSocket = new QX11EmbedContainer();
NS_ENSURE_TRUE(mRemoteSocket, false);
proxy->setWidget(mRemoteSocket);
mRemoteSocket->show();
mRemoteSocket->resize(size.width, size.height);
mChildProcess->SendcreateWidget(0);
} else {
// Don't create any parent/child XEmbed, because we are painting with shared memory
mChildProcess->SendcreateWidget(0);
}
#elif defined(XP_MACOSX)
# warning IMPLEMENT ME