diff options
author | Jocelyn Turcotte <jocelyn.turcotte@digia.com> | 2013-05-27 12:33:03 +0000 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-06-04 20:34:15 +0200 |
commit | 0376f73239d78abcd99fcb2dec82e8d1b5132296 (patch) | |
tree | 5818d4b98d4b1c9f0b843edc9ff8c0a08f37b2db /Source/JavaScriptCore/disassembler/Disassembler.h | |
parent | ac00a345b23686aa458539dde0cb3711bed84de3 (diff) | |
download | qtwebkit-0376f73239d78abcd99fcb2dec82e8d1b5132296.tar.gz |
[Qt][Win] Input events aren't mapped properly with windowless plugins.
https://bugs.webkit.org/show_bug.cgi?id=116094
Reviewed by Tor Arne Vestbø.
Source/WebCore:
The events are first sent properly but Flash then immediately repaints
and this causes flickering painting.
The issue is that Flash seems to be doing some input event tracking of
its own internally, using the HWND returned through NPN_GetValue(NPNVnetscapeWindow).
We are currently using two coordinate systems for windowless plugins on Windows with Qt:
- FrameView coordinates: Used for input events and ajusted with the WM_WINDOWPOSCHANGED message
- Drawable coordinates: Used by WM_PAINT and adjusted with NPP_SetWindow
This patch fixes the bug by mapping input events to the native window returned
as NPNVnetscapeWindow instead of the FrameView to ensure that those coordinates will match
the ones used by Flash internally.
With this we shouldn't be using FrameView coordinates anywhere for windowless plugins
on Windows with Qt.
* platform/qt/QWebPageClient.h:
(QWebPageClient):
Added mapToOwnerWindow to the interface, mapping from the FrameView up to the wrapping nativeParentWidget.
* plugins/win/PluginViewWin.cpp:
(WebCore::contentsToNativeWindow):
(WebCore::PluginView::paintIntoTransformedContext):
(WebCore::PluginView::handleMouseEvent):
Source/WebKit/qt:
* WidgetSupport/PageClientQt.cpp:
(WebCore::PageClientQWidget::mapToOwnerWindow):
(WebCore::PageClientQGraphicsWidget::makeOpenGLContextCurrentIfAvailable):
(WebCore::PageClientQGraphicsWidget::screenNumber):
(WebCore::PageClientQGraphicsWidget::geometryRelativeToOwnerWidget):
(WebCore::PageClientQGraphicsWidget::mapToOwnerWindow):
(WebCore::PageClientQGraphicsWidget::graphicsItemVisibleRect):
(WebCore::PageClientQGraphicsWidget::firstGraphicsView):
Extracted this common logic from makeOpenGLContextCurrentIfAvailable,
screenNumber, geometryRelativeToOwnerWidget and graphicsItemVisibleRect
to be able to use it in mapToOwnerWindow.
* WidgetSupport/PageClientQt.h:
(PageClientQWidget):
(PageClientQGraphicsWidget):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@150749 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Conflicts:
Source/WebCore/plugins/win/PluginViewWin.cpp
Change-Id: I11ec6b6a9377c3e09b775d24fffb8572decbd0a5
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
Diffstat (limited to 'Source/JavaScriptCore/disassembler/Disassembler.h')
0 files changed, 0 insertions, 0 deletions