Title: [126034] releases/WebKitGTK/webkit-1.8
Revision
126034
Author
[email protected]
Date
2012-08-20 09:18:18 -0700 (Mon, 20 Aug 2012)

Log Message

Merge 120956 - [GTK] Fix NPAPI plugins on Windows
https://bugs.webkit.org/show_bug.cgi?id=54531

Patch by Kalev Lember <[email protected]> on 2012-06-21
Reviewed by Martin Robinson.

.:

Define XP_WIN on Windows for plugin support.

* GNUmakefile.am:

Source/WebCore:

Switch to using PluginPackageWin.cpp and PluginViewWin.cpp on Windows
platform, and leave plugins/gtk/ only for XP_UNIX platforms. With this
we can share a lot of code with other ports and don't have to
reimplement all the Windows-specific code in plugins/gtk/.

* GNUmakefile.am:
* GNUmakefile.list.am:
* platform/FileSystem.h:
(WebCore):
* platform/graphics/GraphicsContext.h:
(GraphicsContext):
* platform/graphics/cairo/GraphicsContextPlatformPrivateCairo.h:
(WebCore::GraphicsContextPlatformPrivate::GraphicsContextPlatformPrivate):
(GraphicsContextPlatformPrivate):
* platform/graphics/transforms/TransformationMatrix.h:
(TransformationMatrix):
* platform/graphics/win/GraphicsContextCairoWin.cpp:
(WebCore):
* platform/graphics/win/GraphicsContextWin.cpp:
(WebCore):
* platform/gtk/FileSystemGtk.cpp:
(WebCore::unloadModule):
* plugins/PluginView.h:
(PluginView):
* plugins/win/PluginViewWin.cpp:
(windowHandleForPageClient):
(WebCore::registerPluginView):
(WebCore::PluginView::paint):
(WebCore::PluginView::handleMouseEvent):
(WebCore::PluginView::platformStart):
(WebCore::PluginView::snapshot):

Source/WTF:

Define ENABLE_PLUGIN_PACKAGE_SIMPLE_HASH for the GTK+ port, and
include OwnPtrWin.cpp in the list of files built on Windows.

* GNUmakefile.am:
* GNUmakefile.list.am:
* wtf/Platform.h:

Modified Paths

Diff

Modified: releases/WebKitGTK/webkit-1.8/ChangeLog (126033 => 126034)


--- releases/WebKitGTK/webkit-1.8/ChangeLog	2012-08-20 16:18:03 UTC (rev 126033)
+++ releases/WebKitGTK/webkit-1.8/ChangeLog	2012-08-20 16:18:18 UTC (rev 126034)
@@ -1,3 +1,14 @@
+2012-06-21  Kalev Lember  <[email protected]>
+
+        [GTK] Fix NPAPI plugins on Windows
+        https://bugs.webkit.org/show_bug.cgi?id=54531
+
+        Reviewed by Martin Robinson.
+
+        Define XP_WIN on Windows for plugin support.
+
+        * GNUmakefile.am:
+
 2012-08-01  Martin Robinson  <[email protected]>
 
         Update the NEWS file and configure.ac in preparation for the 1.8.2 release

Modified: releases/WebKitGTK/webkit-1.8/GNUmakefile.am (126033 => 126034)


--- releases/WebKitGTK/webkit-1.8/GNUmakefile.am	2012-08-20 16:18:03 UTC (rev 126033)
+++ releases/WebKitGTK/webkit-1.8/GNUmakefile.am	2012-08-20 16:18:18 UTC (rev 126034)
@@ -147,8 +147,11 @@
 	-DWTF_CHANGES
 
 # For the Gtk port we want to use XP_UNIX both in X11 and Mac
-if !TARGET_WIN32
+if TARGET_WIN32
 global_cppflags += \
+	-DXP_WIN
+else
+global_cppflags += \
 	-DXP_UNIX
 endif
 

Modified: releases/WebKitGTK/webkit-1.8/Source/_javascript_Core/GNUmakefile.list.am (126033 => 126034)


--- releases/WebKitGTK/webkit-1.8/Source/_javascript_Core/GNUmakefile.list.am	2012-08-20 16:18:03 UTC (rev 126033)
+++ releases/WebKitGTK/webkit-1.8/Source/_javascript_Core/GNUmakefile.list.am	2012-08-20 16:18:18 UTC (rev 126034)
@@ -780,7 +780,8 @@
 	Source/_javascript_Core/wtf/OSAllocatorWin.cpp \
 	Source/_javascript_Core/wtf/ThreadFunctionInvocation.h \
 	Source/_javascript_Core/wtf/ThreadingWin.cpp \
-	Source/_javascript_Core/wtf/ThreadSpecificWin.cpp
+	Source/_javascript_Core/wtf/ThreadSpecificWin.cpp \
+	Source/_javascript_Core/wtf/win/OwnPtrWin.cpp
 else
 _javascript_core_sources += \
 	Source/_javascript_Core/jit/ExecutableAllocatorFixedVMPool.cpp \

Modified: releases/WebKitGTK/webkit-1.8/Source/_javascript_Core/wtf/Platform.h (126033 => 126034)


--- releases/WebKitGTK/webkit-1.8/Source/_javascript_Core/wtf/Platform.h	2012-08-20 16:18:03 UTC (rev 126033)
+++ releases/WebKitGTK/webkit-1.8/Source/_javascript_Core/wtf/Platform.h	2012-08-20 16:18:18 UTC (rev 126034)
@@ -1072,7 +1072,7 @@
 #define WTF_USE_PROTECTION_SPACE_AUTH_CALLBACK 1
 #endif
 
-#if !ENABLE(NETSCAPE_PLUGIN_API) || (ENABLE(NETSCAPE_PLUGIN_API) && ((OS(UNIX) && (PLATFORM(QT) || PLATFORM(WX))) || PLATFORM(GTK) || PLATFORM(EFL)))
+#if !ENABLE(NETSCAPE_PLUGIN_API) || (ENABLE(NETSCAPE_PLUGIN_API) && ((OS(UNIX) && (PLATFORM(GTK) || PLATFORM(QT) || PLATFORM(WX))) || PLATFORM(EFL)))
 #define ENABLE_PLUGIN_PACKAGE_SIMPLE_HASH 1
 #endif
 

Modified: releases/WebKitGTK/webkit-1.8/Source/WTF/ChangeLog (126033 => 126034)


--- releases/WebKitGTK/webkit-1.8/Source/WTF/ChangeLog	2012-08-20 16:18:03 UTC (rev 126033)
+++ releases/WebKitGTK/webkit-1.8/Source/WTF/ChangeLog	2012-08-20 16:18:18 UTC (rev 126034)
@@ -1,3 +1,17 @@
+2012-06-21  Kalev Lember  <[email protected]>
+
+        [GTK] Fix NPAPI plugins on Windows
+        https://bugs.webkit.org/show_bug.cgi?id=54531
+
+        Reviewed by Martin Robinson.
+
+        Define ENABLE_PLUGIN_PACKAGE_SIMPLE_HASH for the GTK+ port, and
+        include OwnPtrWin.cpp in the list of files built on Windows.
+
+        * GNUmakefile.am:
+        * GNUmakefile.list.am:
+        * wtf/Platform.h:
+
 2012-06-18  Gustavo Noronha Silva  <[email protected]>
 
         Causes crashes in LLVMPipe

Modified: releases/WebKitGTK/webkit-1.8/Source/WTF/GNUmakefile.am (126033 => 126034)


--- releases/WebKitGTK/webkit-1.8/Source/WTF/GNUmakefile.am	2012-08-20 16:18:03 UTC (rev 126033)
+++ releases/WebKitGTK/webkit-1.8/Source/WTF/GNUmakefile.am	2012-08-20 16:18:18 UTC (rev 126034)
@@ -15,6 +15,11 @@
 	$(WINMM_LIBS) \
 	-lpthread
 
+if TARGET_WIN32
+# OwnPtrWin.cpp needs the symbols from gdi32 dll
+libWTF_la_LIBADD += -lgdi32
+endif
+
 libWTF_la_CXXFLAGS = \
 	$(global_cxxflags) \
 	$(libWTF_la_CFLAGS)

Modified: releases/WebKitGTK/webkit-1.8/Source/WebCore/ChangeLog (126033 => 126034)


--- releases/WebKitGTK/webkit-1.8/Source/WebCore/ChangeLog	2012-08-20 16:18:03 UTC (rev 126033)
+++ releases/WebKitGTK/webkit-1.8/Source/WebCore/ChangeLog	2012-08-20 16:18:18 UTC (rev 126034)
@@ -1,3 +1,42 @@
+2012-06-21  Kalev Lember  <[email protected]>
+
+        [GTK] Fix NPAPI plugins on Windows
+        https://bugs.webkit.org/show_bug.cgi?id=54531
+
+        Reviewed by Martin Robinson.
+
+        Switch to using PluginPackageWin.cpp and PluginViewWin.cpp on Windows
+        platform, and leave plugins/gtk/ only for XP_UNIX platforms. With this
+        we can share a lot of code with other ports and don't have to
+        reimplement all the Windows-specific code in plugins/gtk/.
+
+        * GNUmakefile.am:
+        * GNUmakefile.list.am:
+        * platform/FileSystem.h:
+        (WebCore):
+        * platform/graphics/GraphicsContext.h:
+        (GraphicsContext):
+        * platform/graphics/cairo/GraphicsContextPlatformPrivateCairo.h:
+        (WebCore::GraphicsContextPlatformPrivate::GraphicsContextPlatformPrivate):
+        (GraphicsContextPlatformPrivate):
+        * platform/graphics/transforms/TransformationMatrix.h:
+        (TransformationMatrix):
+        * platform/graphics/win/GraphicsContextCairoWin.cpp:
+        (WebCore):
+        * platform/graphics/win/GraphicsContextWin.cpp:
+        (WebCore):
+        * platform/gtk/FileSystemGtk.cpp:
+        (WebCore::unloadModule):
+        * plugins/PluginView.h:
+        (PluginView):
+        * plugins/win/PluginViewWin.cpp:
+        (windowHandleForPageClient):
+        (WebCore::registerPluginView):
+        (WebCore::PluginView::paint):
+        (WebCore::PluginView::handleMouseEvent):
+        (WebCore::PluginView::platformStart):
+        (WebCore::PluginView::snapshot):
+
 2012-06-28  Kalev Lember  <[email protected]>
 
         [GTK][Win]: Fix plugin drawing to an offscreen buffer

Modified: releases/WebKitGTK/webkit-1.8/Source/WebCore/GNUmakefile.am (126033 => 126034)


--- releases/WebKitGTK/webkit-1.8/Source/WebCore/GNUmakefile.am	2012-08-20 16:18:03 UTC (rev 126033)
+++ releases/WebKitGTK/webkit-1.8/Source/WebCore/GNUmakefile.am	2012-08-20 16:18:18 UTC (rev 126034)
@@ -142,6 +142,14 @@
 	-I$(srcdir)/Source/WebCore/platform/graphics/pango
 endif # END USE_PANGO
 
+# ---
+# Windows plugin support
+# ---
+if TARGET_WIN32
+webcoregtk_cppflags += \
+	-I$(srcdir)/Source/WebCore/platform/graphics/win
+endif # END TARGET_WIN32
+
 # ----
 # HTML Details Element
 # ----
@@ -852,6 +860,11 @@
 	$(XRENDER_CFLAGS) \
 	$(XT_CFLAGS)
 
+if TARGET_WIN32
+# PluginPackageWin.cpp needs the symbols from version dll
+libWebCore_la_LIBADD = -lversion
+endif
+
 # We have a different library with only the files that require GTK+. It allows us
 # to build a common WebCore lib and two different gtk WebCore libs depending on
 # the gtk version. In WeKit2 gtk2 is not supported, but the plugin process needs to

Modified: releases/WebKitGTK/webkit-1.8/Source/WebCore/GNUmakefile.list.am (126033 => 126034)


--- releases/WebKitGTK/webkit-1.8/Source/WebCore/GNUmakefile.list.am	2012-08-20 16:18:03 UTC (rev 126033)
+++ releases/WebKitGTK/webkit-1.8/Source/WebCore/GNUmakefile.list.am	2012-08-20 16:18:18 UTC (rev 126034)
@@ -4581,9 +4581,7 @@
 	Source/WebCore/platform/gtk/SoundGtk.cpp \
 	Source/WebCore/platform/gtk/WidgetGtk.cpp \
 	Source/WebCore/platform/gtk/WidgetRenderingContext.cpp \
-	Source/WebCore/platform/gtk/WidgetRenderingContext.h \
-	Source/WebCore/plugins/gtk/PluginPackageGtk.cpp \
-	Source/WebCore/plugins/gtk/PluginViewGtk.cpp
+	Source/WebCore/platform/gtk/WidgetRenderingContext.h
 
 if TARGET_X11
 webcoregtk_sources += \
@@ -4595,13 +4593,29 @@
 
 if TARGET_WIN32
 webcore_sources += \
+	Source/WebCore/platform/graphics/win/DIBPixelData.cpp \
+	Source/WebCore/platform/graphics/win/DIBPixelData.h \
+	Source/WebCore/platform/graphics/win/GraphicsContextCairoWin.cpp \
+	Source/WebCore/platform/graphics/win/GraphicsContextWin.cpp \
+	Source/WebCore/platform/graphics/win/LocalWindowsContext.h \
+	Source/WebCore/platform/graphics/win/TransformationMatrixWin.cpp \
+	Source/WebCore/platform/win/BitmapInfo.cpp \
+	Source/WebCore/platform/win/BitmapInfo.h \
 	Source/WebCore/platform/win/SystemInfo.cpp \
 	Source/WebCore/platform/win/SystemInfo.h \
+	Source/WebCore/platform/win/WebCoreInstanceHandle.cpp \
+	Source/WebCore/platform/win/WebCoreInstanceHandle.h \
 	Source/WebCore/plugins/win/PluginDatabaseWin.cpp \
 	Source/WebCore/plugins/win/PluginMessageThrottlerWin.cpp \
-	Source/WebCore/plugins/win/PluginMessageThrottlerWin.h
+	Source/WebCore/plugins/win/PluginMessageThrottlerWin.h \
+	Source/WebCore/plugins/win/PluginPackageWin.cpp
 webcoregtk_sources += \
-	Source/WebCore/platform/cairo/WidgetBackingStoreCairo.cpp
+	Source/WebCore/platform/cairo/WidgetBackingStoreCairo.cpp \
+	Source/WebCore/plugins/win/PluginViewWin.cpp
+else
+webcoregtk_sources += \
+	Source/WebCore/plugins/gtk/PluginPackageGtk.cpp \
+	Source/WebCore/plugins/gtk/PluginViewGtk.cpp
 endif
 
 # ----

Modified: releases/WebKitGTK/webkit-1.8/Source/WebCore/platform/FileSystem.h (126033 => 126034)


--- releases/WebKitGTK/webkit-1.8/Source/WebCore/platform/FileSystem.h	2012-08-20 16:18:03 UTC (rev 126033)
+++ releases/WebKitGTK/webkit-1.8/Source/WebCore/platform/FileSystem.h	2012-08-20 16:18:18 UTC (rev 126034)
@@ -73,10 +73,10 @@
 namespace WebCore {
 
 // PlatformModule
-#if PLATFORM(GTK)
+#if OS(WINDOWS)
+typedef HMODULE PlatformModule;
+#elif PLATFORM(GTK)
 typedef GModule* PlatformModule;
-#elif OS(WINDOWS)
-typedef HMODULE PlatformModule;
 #elif PLATFORM(QT)
 #if defined(Q_WS_MAC)
 typedef CFBundleRef PlatformModule;

Modified: releases/WebKitGTK/webkit-1.8/Source/WebCore/platform/graphics/GraphicsContext.h (126033 => 126034)


--- releases/WebKitGTK/webkit-1.8/Source/WebCore/platform/graphics/GraphicsContext.h	2012-08-20 16:18:03 UTC (rev 126033)
+++ releases/WebKitGTK/webkit-1.8/Source/WebCore/platform/graphics/GraphicsContext.h	2012-08-20 16:18:18 UTC (rev 126034)
@@ -482,7 +482,7 @@
         void drawWindowsBitmap(WindowsBitmap*, const IntPoint&);
 #endif
 
-#if (PLATFORM(QT) && defined(Q_WS_WIN)) || (PLATFORM(WX) && OS(WINDOWS))
+#if (PLATFORM(QT) && defined(Q_WS_WIN)) || (PLATFORM(WX) && OS(WINDOWS)) || (PLATFORM(GTK) && OS(WINDOWS))
         HDC getWindowsContext(const IntRect&, bool supportAlphaBlend = true, bool mayCreateBitmap = true);
         void releaseWindowsContext(HDC, const IntRect&, bool supportAlphaBlend = true, bool mayCreateBitmap = true);
         bool shouldIncludeChildWindows() const { return false; }

Modified: releases/WebKitGTK/webkit-1.8/Source/WebCore/platform/graphics/cairo/GraphicsContextPlatformPrivateCairo.h (126033 => 126034)


--- releases/WebKitGTK/webkit-1.8/Source/WebCore/platform/graphics/cairo/GraphicsContextPlatformPrivateCairo.h	2012-08-20 16:18:03 UTC (rev 126033)
+++ releases/WebKitGTK/webkit-1.8/Source/WebCore/platform/graphics/cairo/GraphicsContextPlatformPrivateCairo.h	2012-08-20 16:18:18 UTC (rev 126034)
@@ -52,7 +52,8 @@
         : platformContext(newPlatformContext)
 #if PLATFORM(GTK)
         , expose(0)
-#elif PLATFORM(WIN)
+#endif
+#if PLATFORM(WIN) || (PLATFORM(GTK) && OS(WINDOWS))
         // NOTE:  These may note be needed: review and remove once Cairo implementation is complete
         , m_hdc(0)
         , m_shouldIncludeChildWindows(false)
@@ -98,7 +99,8 @@
 
 #if PLATFORM(GTK)
     GdkEventExpose* expose;
-#elif PLATFORM(WIN)
+#endif
+#if PLATFORM(WIN) || (PLATFORM(GTK) && OS(WINDOWS))
     HDC m_hdc;
     bool m_shouldIncludeChildWindows;
 #endif

Modified: releases/WebKitGTK/webkit-1.8/Source/WebCore/platform/graphics/transforms/TransformationMatrix.h (126033 => 126034)


--- releases/WebKitGTK/webkit-1.8/Source/WebCore/platform/graphics/transforms/TransformationMatrix.h	2012-08-20 16:18:03 UTC (rev 126033)
+++ releases/WebKitGTK/webkit-1.8/Source/WebCore/platform/graphics/transforms/TransformationMatrix.h	2012-08-20 16:18:18 UTC (rev 126034)
@@ -48,7 +48,7 @@
 #include <wx/graphics.h>
 #endif
 
-#if PLATFORM(WIN) || (PLATFORM(QT) && OS(WINDOWS)) || (PLATFORM(WX) && OS(WINDOWS))
+#if PLATFORM(WIN) || (PLATFORM(GTK) && OS(WINDOWS)) || (PLATFORM(QT) && OS(WINDOWS)) || (PLATFORM(WX) && OS(WINDOWS))
 #if COMPILER(MINGW) && !COMPILER(MINGW64)
 typedef struct _XFORM XFORM;
 #else
@@ -334,7 +334,7 @@
     operator wxGraphicsMatrix() const;
 #endif
 
-#if PLATFORM(WIN) || (PLATFORM(QT) && OS(WINDOWS)) || (PLATFORM(WX) && OS(WINDOWS))
+#if PLATFORM(WIN) || (PLATFORM(GTK) && OS(WINDOWS)) || (PLATFORM(QT) && OS(WINDOWS)) || (PLATFORM(WX) && OS(WINDOWS))
     operator XFORM() const;
 #endif
 

Modified: releases/WebKitGTK/webkit-1.8/Source/WebCore/platform/graphics/win/GraphicsContextCairoWin.cpp (126033 => 126034)


--- releases/WebKitGTK/webkit-1.8/Source/WebCore/platform/graphics/win/GraphicsContextCairoWin.cpp	2012-08-20 16:18:03 UTC (rev 126033)
+++ releases/WebKitGTK/webkit-1.8/Source/WebCore/platform/graphics/win/GraphicsContextCairoWin.cpp	2012-08-20 16:18:18 UTC (rev 126034)
@@ -27,6 +27,7 @@
 #include "GraphicsContext.h"
 
 #include "AffineTransform.h"
+#include "DIBPixelData.h"
 #include "Path.h"
 
 #include <cairo-win32.h>
@@ -36,6 +37,7 @@
 
 namespace WebCore {
 
+#if PLATFORM(WIN)
 static cairo_t* createCairoContextWithHDC(HDC hdc, bool hasAlpha)
 {
     // Put the HDC In advanced mode so it will honor affine transforms.
@@ -87,6 +89,7 @@
         setPlatformStrokeColor(strokeColor(), strokeColorSpace());
     }
 }
+#endif
 
 static void setRGBABitmapAlpha(unsigned char* bytes, size_t length, unsigned char level)
 {
@@ -149,6 +152,7 @@
     ::DeleteDC(hdc);
 }
 
+#if PLATFORM(WIN)
 void GraphicsContext::drawWindowsBitmap(WindowsBitmap* bitmap, const IntPoint& point)
 {
     drawBitmapToContext(m_data, platformContext()->cr(), bitmap->windowsDIB(), IntSize(point.x(), bitmap->size().height() + point.y()));
@@ -171,5 +175,6 @@
     cairo_surface_flush(surface);
     cairo_surface_destroy(surface);
 }
+#endif
 
 }

Modified: releases/WebKitGTK/webkit-1.8/Source/WebCore/platform/graphics/win/GraphicsContextWin.cpp (126033 => 126034)


--- releases/WebKitGTK/webkit-1.8/Source/WebCore/platform/graphics/win/GraphicsContextWin.cpp	2012-08-20 16:18:03 UTC (rev 126033)
+++ releases/WebKitGTK/webkit-1.8/Source/WebCore/platform/graphics/win/GraphicsContextWin.cpp	2012-08-20 16:18:18 UTC (rev 126034)
@@ -51,6 +51,7 @@
     memset(bmpInfo.bmBits, 0, bufferSize);
 }
 
+#if PLATFORM(WIN)
 void GraphicsContext::setShouldIncludeChildWindows(bool include)
 {
     m_data->m_shouldIncludeChildWindows = include;
@@ -94,6 +95,7 @@
 {
     return adoptPtr(new WindowsBitmap(m_data->m_hdc, size));
 }
+#endif
 
 HDC GraphicsContext::getWindowsContext(const IntRect& dstRect, bool supportAlphaBlend, bool mayCreateBitmap)
 {
@@ -133,6 +135,7 @@
     return m_data->m_hdc;
 }
 
+#if PLATFORM(WIN)
 void GraphicsContextPlatformPrivate::save()
 {
     if (!m_hdc)
@@ -202,5 +205,6 @@
     XFORM xform = transform.toTransformationMatrix();
     SetWorldTransform(m_hdc, &xform);
 }
+#endif
 
 }

Modified: releases/WebKitGTK/webkit-1.8/Source/WebCore/platform/gtk/FileSystemGtk.cpp (126033 => 126034)


--- releases/WebKitGTK/webkit-1.8/Source/WebCore/platform/gtk/FileSystemGtk.cpp	2012-08-20 16:18:03 UTC (rev 126033)
+++ releases/WebKitGTK/webkit-1.8/Source/WebCore/platform/gtk/FileSystemGtk.cpp	2012-08-20 16:18:18 UTC (rev 126034)
@@ -337,6 +337,10 @@
 
 bool unloadModule(PlatformModule module)
 {
+#if OS(WINDOWS)
+    return ::FreeLibrary(module);
+#else
     return g_module_close(module);
+#endif
 }
 }

Modified: releases/WebKitGTK/webkit-1.8/Source/WebCore/plugins/PluginView.h (126033 => 126034)


--- releases/WebKitGTK/webkit-1.8/Source/WebCore/plugins/PluginView.h	2012-08-20 16:18:03 UTC (rev 126033)
+++ releases/WebKitGTK/webkit-1.8/Source/WebCore/plugins/PluginView.h	2012-08-20 16:18:18 UTC (rev 126034)
@@ -47,7 +47,7 @@
 #include "npruntime_internal.h"
 #endif
 
-#if OS(WINDOWS) && (PLATFORM(QT) || PLATFORM(WX))
+#if OS(WINDOWS) && (PLATFORM(GTK) || PLATFORM(QT) || PLATFORM(WX))
 typedef struct HWND__* HWND;
 typedef HWND PlatformPluginWidget;
 #else
@@ -376,7 +376,7 @@
         bool m_haveUpdatedPluginWidget;
 #endif
 
-#if ((PLATFORM(QT) || PLATFORM(WX)) && OS(WINDOWS)) || defined(XP_MACOSX) || PLATFORM(EFL)
+#if ((PLATFORM(GTK) || PLATFORM(QT) || PLATFORM(WX)) && OS(WINDOWS)) || defined(XP_MACOSX) || PLATFORM(EFL)
         // On Mac OSX and Qt/Windows the plugin does not have its own native widget,
         // but is using the containing window as its reference for positioning/painting.
         PlatformPluginWidget m_window;

Modified: releases/WebKitGTK/webkit-1.8/Source/WebCore/plugins/win/PluginViewWin.cpp (126033 => 126034)


--- releases/WebKitGTK/webkit-1.8/Source/WebCore/plugins/win/PluginViewWin.cpp	2012-08-20 16:18:03 UTC (rev 126033)
+++ releases/WebKitGTK/webkit-1.8/Source/WebCore/plugins/win/PluginViewWin.cpp	2012-08-20 16:18:18 UTC (rev 126034)
@@ -86,6 +86,11 @@
 #include <cairo-win32.h>
 #endif
 
+#if PLATFORM(GTK)
+#include <gdk/gdkwin32.h>
+#include <gtk/gtk.h>
+#endif
+
 #if PLATFORM(QT)
 #include "QWebPageClient.h"
 #include <QWidget>
@@ -98,9 +103,15 @@
 
 static inline HWND windowHandleForPageClient(PlatformPageClient client)
 {
-#if PLATFORM(QT)
+#if PLATFORM(GTK)
     if (!client)
         return 0;
+    if (GdkWindow* window = gtk_widget_get_window(client))
+        return static_cast<HWND>(GDK_WINDOW_HWND(window));
+    return 0;
+#elif PLATFORM(QT)
+    if (!client)
+        return 0;
     if (QWidget* pluginParent = qobject_cast<QWidget*>(client->pluginParent()))
         return pluginParent->winId();
     return 0;
@@ -291,8 +302,8 @@
 
     haveRegisteredWindowClass = true;
 
-#if PLATFORM(QT)
-    WebCore::setInstanceHandle((HINSTANCE)(qWinAppInst()));
+#if PLATFORM(GTK) || PLATFORM(QT)
+    WebCore::setInstanceHandle((HINSTANCE)(GetModuleHandle(0)));
 #endif
 
     ASSERT(WebCore::instanceHandle());
@@ -641,9 +652,9 @@
 
     // On Safari/Windows without transparency layers the GraphicsContext returns the HDC
     // of the window and the plugin expects that the passed in DC has window coordinates.
-    // In the Qt port we always draw in an offscreen buffer and therefore need to preserve
-    // the translation set in getWindowsContext.
-#if !PLATFORM(QT) && !OS(WINCE)
+    // In the GTK and Qt ports we always draw in an offscreen buffer and therefore need
+    // to preserve the translation set in getWindowsContext.
+#if !PLATFORM(GTK) && !PLATFORM(QT) && !OS(WINCE)
     if (!context->isInTransparencyLayer()) {
         XFORM transform;
         GetWorldTransform(windowsContext.hdc(), &transform);
@@ -751,7 +762,7 @@
     if (dispatchNPEvent(npEvent))
         event->setDefaultHandled();
 
-#if !PLATFORM(QT) && !PLATFORM(WX) && !OS(WINCE)
+#if !PLATFORM(GTK) && !PLATFORM(QT) && !PLATFORM(WX) && !OS(WINCE)
     // Currently, Widget::setCursor is always called after this function in EventHandler.cpp
     // and since we don't want that we set ignoreNextSetCursor to true here to prevent that.
     ignoreNextSetCursor = true;
@@ -1002,7 +1013,7 @@
         HWND window = ::CreateWindowEx(0, kWebPluginViewdowClassName, 0, flags,
                                        0, 0, 0, 0, parentWindowHandle, 0, WebCore::instanceHandle(), 0);
 
-#if OS(WINDOWS) && (PLATFORM(QT) || PLATFORM(WX))
+#if OS(WINDOWS) && (PLATFORM(GTK) || PLATFORM(QT) || PLATFORM(WX))
         m_window = window;
 #else
         setPlatformWidget(window);
@@ -1045,7 +1056,7 @@
 
 PassRefPtr<Image> PluginView::snapshot()
 {
-#if !PLATFORM(WX) && !OS(WINCE)
+#if !PLATFORM(GTK) && !PLATFORM(WX) && !OS(WINCE)
     OwnPtr<HDC> hdc = adoptPtr(CreateCompatibleDC(0));
 
     if (!m_isWindowed) {
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to