[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc
aroben at apple.com
aroben at apple.com
Wed Dec 22 12:21:21 UTC 2010
The following commit has been merged in the debian/experimental branch:
commit baa8e64504608f06130dbd7ea2668a02308c9cc3
Author: aroben at apple.com <aroben at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Thu Aug 19 21:23:12 2010 +0000
Send mouse events to windowless plugins on Windows
This seems to have been the last issue blocking us from playing videos
on vimeo.com.
Fixes <http://webkit.org/b/44276> <rdar://problem/8330398> Can't click
play button in vimeo.com Flash video player in WebKit2 on Windows
Reviewed by Sam Weinig.
* WebProcess/Plugins/Netscape/win/NetscapePluginWin.cpp:
(WebKit::toNP): Added. Converts a WebMouseEvent to an NPEvent. Code
was adapted from WebCore's PluginViewWin.cpp.
(WebKit::NetscapePlugin::platformHandleMouseEvent):
(WebKit::NetscapePlugin::platformHandleMouseEnterEvent):
(WebKit::NetscapePlugin::platformHandleMouseLeaveEvent):
Convert the WebMouseEvent to an NPEvent and send it to the plugin.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@65706 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebKit2/ChangeLog b/WebKit2/ChangeLog
index c61934f..ce564ae 100644
--- a/WebKit2/ChangeLog
+++ b/WebKit2/ChangeLog
@@ -1,5 +1,26 @@
2010-08-19 Adam Roben <aroben at apple.com>
+ Send mouse events to windowless plugins on Windows
+
+ This seems to have been the last issue blocking us from playing videos
+ on vimeo.com.
+
+ Fixes <http://webkit.org/b/44276> <rdar://problem/8330398> Can't click
+ play button in vimeo.com Flash video player in WebKit2 on Windows
+
+ Reviewed by Sam Weinig.
+
+ * WebProcess/Plugins/Netscape/win/NetscapePluginWin.cpp:
+ (WebKit::toNP): Added. Converts a WebMouseEvent to an NPEvent. Code
+ was adapted from WebCore's PluginViewWin.cpp.
+
+ (WebKit::NetscapePlugin::platformHandleMouseEvent):
+ (WebKit::NetscapePlugin::platformHandleMouseEnterEvent):
+ (WebKit::NetscapePlugin::platformHandleMouseLeaveEvent):
+ Convert the WebMouseEvent to an NPEvent and send it to the plugin.
+
+2010-08-19 Adam Roben <aroben at apple.com>
+
Add support for painting windowless plugins on Windows
This gets the video on the front page of vimeo.com painting (though
diff --git a/WebKit2/WebProcess/Plugins/Netscape/win/NetscapePluginWin.cpp b/WebKit2/WebProcess/Plugins/Netscape/win/NetscapePluginWin.cpp
index 28423d5..61a34b5 100644
--- a/WebKit2/WebProcess/Plugins/Netscape/win/NetscapePluginWin.cpp
+++ b/WebKit2/WebProcess/Plugins/Netscape/win/NetscapePluginWin.cpp
@@ -26,6 +26,7 @@
#include "NetscapePlugin.h"
#include "NotImplemented.h"
+#include "WebEvent.h"
#include <WebCore/GraphicsContext.h>
using namespace WebCore;
@@ -81,10 +82,83 @@ void NetscapePlugin::platformPaint(GraphicsContext* context, const IntRect& dirt
context->releaseWindowsContext(hdc, dirtyRect, false);
}
-bool NetscapePlugin::platformHandleMouseEvent(const WebMouseEvent&)
+NPEvent toNP(const WebMouseEvent& event)
{
- notImplemented();
- return false;
+ NPEvent npEvent;
+
+ npEvent.wParam = 0;
+ if (event.controlKey())
+ npEvent.wParam |= MK_CONTROL;
+ if (event.shiftKey())
+ npEvent.wParam |= MK_SHIFT;
+
+ npEvent.lParam = MAKELPARAM(event.positionX(), event.positionY());
+
+ switch (event.type()) {
+ case WebEvent::MouseMove:
+ npEvent.event = WM_MOUSEMOVE;
+ switch (event.button()) {
+ case WebMouseEvent::LeftButton:
+ npEvent.wParam |= MK_LBUTTON;
+ break;
+ case WebMouseEvent::MiddleButton:
+ npEvent.wParam |= MK_MBUTTON;
+ break;
+ case WebMouseEvent::RightButton:
+ npEvent.wParam |= MK_RBUTTON;
+ break;
+ case WebMouseEvent::NoButton:
+ break;
+ }
+ break;
+ case WebEvent::MouseDown:
+ switch (event.button()) {
+ case WebMouseEvent::LeftButton:
+ npEvent.event = WM_LBUTTONDOWN;
+ break;
+ case WebMouseEvent::MiddleButton:
+ npEvent.event = WM_MBUTTONDOWN;
+ break;
+ case WebMouseEvent::RightButton:
+ npEvent.event = WM_RBUTTONDOWN;
+ break;
+ case WebMouseEvent::NoButton:
+ ASSERT_NOT_REACHED();
+ break;
+ }
+ break;
+ case WebEvent::MouseUp:
+ switch (event.button()) {
+ case WebMouseEvent::LeftButton:
+ npEvent.event = WM_LBUTTONUP;
+ break;
+ case WebMouseEvent::MiddleButton:
+ npEvent.event = WM_MBUTTONUP;
+ break;
+ case WebMouseEvent::RightButton:
+ npEvent.event = WM_RBUTTONUP;
+ break;
+ case WebMouseEvent::NoButton:
+ ASSERT_NOT_REACHED();
+ break;
+ }
+ break;
+ default:
+ ASSERT_NOT_REACHED();
+ break;
+ }
+
+ return npEvent;
+}
+
+bool NetscapePlugin::platformHandleMouseEvent(const WebMouseEvent& event)
+{
+ if (m_isWindowed)
+ return false;
+
+ NPEvent npEvent = toNP(event);
+ NPP_HandleEvent(&npEvent);
+ return true;
}
bool NetscapePlugin::platformHandleWheelEvent(const WebWheelEvent&)
@@ -98,16 +172,24 @@ void NetscapePlugin::platformSetFocus(bool)
notImplemented();
}
-bool NetscapePlugin::platformHandleMouseEnterEvent(const WebMouseEvent&)
+bool NetscapePlugin::platformHandleMouseEnterEvent(const WebMouseEvent& event)
{
- notImplemented();
- return false;
+ if (m_isWindowed)
+ return false;
+
+ NPEvent npEvent = toNP(event);
+ NPP_HandleEvent(&npEvent);
+ return true;
}
-bool NetscapePlugin::platformHandleMouseLeaveEvent(const WebMouseEvent&)
+bool NetscapePlugin::platformHandleMouseLeaveEvent(const WebMouseEvent& event)
{
- notImplemented();
- return false;
+ if (m_isWindowed)
+ return false;
+
+ NPEvent npEvent = toNP(event);
+ NPP_HandleEvent(&npEvent);
+ return true;
}
} // namespace WebKit
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list