+2006-03-02 Eric Seidel <eseidel@apple.com>
+
+ Reviewed by ggaren.
+
+ Add (partially stubbed out) mouse event handling for Win32.
+
+ * WebCore.vcproj/WebCore/WebCore.vcproj:
+ * platform/IntPoint.h:
+ * platform/MouseEvent.h:
+ * platform/win/IntPointWin.cpp: Added.
+ (WebCore::IntPoint::IntPoint):
+ (WebCore::IntPoint::operator POINT):
+ * platform/win/MouseEventWin.cpp: Added.
+ (WebCore::MouseEvent::MouseEvent):
+ * platform/win/TemporaryLinkStubs.cpp:
+ (QLineEdit::setMaxLength):
+ (ScrollView::scrollBy):
+ (WebCore::Widget::setFocus):
+ (FrameWin::respondToChangedSelection):
+ (FrameWin::runJavaScriptPrompt):
+ (FrameWin::recordFormValue):
+ (FrameWin::registerCommandForRedo):
+ (FrameWin::runJavaScriptAlert):
+ (FrameWin::runJavaScriptConfirm):
+ (FrameWin::openURL):
+ (FrameWin::registerCommandForUndo):
+ (FrameWin::addMessageToConsole):
+ (FrameWin::mimeTypeForFileName):
+ (FrameWin::shouldChangeSelection):
+ (FrameWin::markMisspellingsInAdjacentWords):
+ (FrameWin::markMisspellings):
+ (FrameWin::personalbarVisible):
+ (FrameWin::objectContentType):
+ (FrameWin::createFrame):
+ (FrameWin::createPlugin):
+ (BrowserExtensionWin::setTypedIconURL):
+ (BrowserExtensionWin::getHistoryLength):
+ (BrowserExtensionWin::canRunModal):
+ (BrowserExtensionWin::openURLNotify):
+ (BrowserExtensionWin::createNewWindow):
+ (BrowserExtensionWin::canRunModalNow):
+ (BrowserExtensionWin::runModal):
+ (BrowserExtensionWin::goBackOrForward):
+ (BrowserExtensionWin::setIconURL):
+ (FrameWin::passSubframeEventToSubframe):
+ (FrameWin::lastEventIsMouseUp):
+ (BrowserExtensionWin::BrowserExtensionWin):
+ (Widget::setCursor):
+ (ScrollView::visibleHeight):
+ (ScrollView::visibleWidth):
+ (ScrollView::setContentsPos):
+ (ScrollView::contentsX):
+ (ScrollView::contentsY):
+ (ScrollView::contentsHeight):
+ (ScrollView::contentsWidth):
+ (ScrollView::viewportToContents):
+ (TransferJob::TransferJob):
+ (TransferJob::addMetaData):
+
2006-03-02 Justin Garcia <justin.garcia@apple.com>
Reviewed by mjs
--- /dev/null
+/*
+ * Copyright (C) 2006 Apple Computer, Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "MouseEvent.h"
+
+#include <windows.h>
+
+namespace WebCore {
+
+#define HIGH_BIT_MASK_SHORT 0x8000;
+
+MouseEvent::MouseEvent(HWND hWnd, WPARAM wParam, LPARAM lParam, int clkCount)
+ : m_position(LOWORD(lParam), HIWORD(lParam))
+ , m_clickCount(clkCount)
+ , m_shiftKey(wParam & MK_SHIFT)
+ , m_ctrlKey(wParam & MK_CONTROL)
+ , m_altKey(GetAsyncKeyState(VK_MENU) & HIGH_BIT_MASK_SHORT)
+ , m_metaKey(m_altKey) // FIXME: We'll have to test other browsers
+{
+ POINT globalPosition = {m_position.x(), m_position.y()};
+ ClientToScreen(hWnd, &globalPosition);
+ m_globalPosition = globalPosition;
+
+ if (wParam & MK_LBUTTON)
+ m_button = LeftButton;
+ else if (wParam & MK_RBUTTON)
+ m_button = RightButton;
+ else if (wParam & MK_MBUTTON)
+ m_button = MiddleButton;
+}
+
+}
bool FrameView::isFrameView() const { notImplemented(); return 0; }\r
void QScrollBar::setSteps(int,int) { notImplemented(); }\r
void QLineEdit::setMaxLength(int) { notImplemented(); }\r
-void Widget::setCursor(Cursor const&) { notImplemented(); }\r
void QLineEdit::setAutoSaveName(String const&) { notImplemented(); }\r
int QComboBox::baselinePosition(int) const { notImplemented(); return 0; }\r
void QComboBox::appendItem(QString const&,KWQListBoxItemType,bool) { notImplemented(); }\r
void KWQKCookieJar::setCookie(KURL const&,KURL const&,QString const&) { notImplemented(); }\r
QString KWQKCookieJar::cookie(KURL const&) { notImplemented(); return QString(); }\r
IntRect WebCore::screenRect(Widget*) { notImplemented(); return IntRect(); }\r
-void WebCore::ScrollView::scrollBy(int,int) { notImplemented(); }\r
+void ScrollView::scrollBy(int,int) { notImplemented(); }\r
void WebCore::Widget::clearFocus() { notImplemented(); }\r
int KWQFindNextSentenceFromIndex(QChar const*,int,int,bool) { notImplemented(); return 0; }\r
void KWQFindSentenceBoundary(QChar const*,int,int,int*,int*) { notImplemented(); }\r
void KWQFindWordBoundary(QChar const*,int,int,int*,int*) { notImplemented(); }\r
bool KWQKCookieJar::cookieEnabled() { notImplemented(); return false; }\r
void WebCore::Widget::setFocus() { notImplemented(); }\r
-void WebCore::ScrollView::viewportToContents(int,int,int&,int&) { notImplemented(); }\r
void WebCore::TransferJob::kill() { notImplemented(); }\r
void WebCore::TransferJob::addMetaData(KXMLCore::HashMap<String,String> const&) { notImplemented(); }\r
QString WebCore::TransferJob::queryMetaData(QString const&) const { notImplemented(); return QString(); }\r
void FrameWin::respondToChangedContents(void) { notImplemented(); }\r
void FrameWin::unfocusWindow(void) { notImplemented(); }\r
bool FrameWin::locationbarVisible(void) { notImplemented(); return 0; }\r
-void FrameWin::respondToChangedSelection(WebCore::SelectionController const &,bool) { notImplemented(); }\r
+void FrameWin::respondToChangedSelection(WebCore::SelectionController const&,bool) { notImplemented(); }\r
void FrameWin::clearUndoRedoOperations(void) { notImplemented(); }\r
void FrameWin::issueRedoCommand(void) { notImplemented(); }\r
KJS::Bindings::Instance * FrameWin::getObjectInstanceForWidget(WebCore::Widget *) { notImplemented(); return 0; }\r
KJS::Bindings::Instance * FrameWin::getEmbedInstanceForWidget(WebCore::Widget *) { notImplemented(); return 0; }\r
bool FrameWin::canRedo(void)const { notImplemented(); return 0; }\r
bool FrameWin::canUndo(void)const { notImplemented(); return 0; }\r
-bool FrameWin::runJavaScriptPrompt(String const &,String const &,String &) { notImplemented(); return 0; }\r
-void FrameWin::recordFormValue(QString const &,QString const &,WebCore::HTMLFormElementImpl *) { notImplemented(); }\r
-void FrameWin::registerCommandForRedo(WebCore::EditCommandPtr const &) { notImplemented(); }\r
-void FrameWin::runJavaScriptAlert(String const &) { notImplemented(); }\r
-bool FrameWin::runJavaScriptConfirm(String const &) { notImplemented(); return 0; }\r
-bool FrameWin::openURL(KURL const &) { notImplemented(); return 0; }\r
-void FrameWin::urlSelected(KURL const &,struct WebCore::URLArgs const &) { notImplemented(); }\r
+bool FrameWin::runJavaScriptPrompt(String const&,String const&,String &) { notImplemented(); return 0; }\r
+void FrameWin::recordFormValue(QString const&,QString const&,WebCore::HTMLFormElementImpl *) { notImplemented(); }\r
+void FrameWin::registerCommandForRedo(WebCore::EditCommandPtr const&) { notImplemented(); }\r
+void FrameWin::runJavaScriptAlert(String const&) { notImplemented(); }\r
+bool FrameWin::runJavaScriptConfirm(String const&) { notImplemented(); return 0; }\r
+bool FrameWin::openURL(KURL const&) { notImplemented(); return 0; }\r
+void FrameWin::urlSelected(KURL const&,struct WebCore::URLArgs const&) { notImplemented(); }\r
void FrameWin::saveDocumentState(void) { notImplemented(); }\r
void FrameWin::print(void) { notImplemented(); }\r
KJS::Bindings::Instance * FrameWin::getAppletInstanceForWidget(WebCore::Widget *) { notImplemented(); return 0; }\r
bool FrameWin::passMouseDownEventToWidget(WebCore::Widget *) { notImplemented(); return 0; }\r
-void FrameWin::registerCommandForUndo(WebCore::EditCommandPtr const &) { notImplemented(); }\r
+void FrameWin::registerCommandForUndo(WebCore::EditCommandPtr const&) { notImplemented(); }\r
void FrameWin::issueCutCommand(void) { notImplemented(); }\r
void FrameWin::issueCopyCommand(void) { notImplemented(); }\r
-void FrameWin::openURLRequest(KURL const &,struct WebCore::URLArgs const &) { notImplemented(); }\r
-void FrameWin::addMessageToConsole(String const &,unsigned int,String const &) { notImplemented(); }\r
+void FrameWin::openURLRequest(KURL const&,struct WebCore::URLArgs const&) { notImplemented(); }\r
+void FrameWin::addMessageToConsole(String const&,unsigned int,String const&) { notImplemented(); }\r
bool FrameWin::passWheelEventToChildWidget(WebCore::NodeImpl *) { notImplemented(); return 0; }\r
void FrameWin::issueUndoCommand(void) { notImplemented(); }\r
-QString FrameWin::mimeTypeForFileName(QString const &)const { notImplemented(); return QString(); }\r
+QString FrameWin::mimeTypeForFileName(QString const&)const { notImplemented(); return QString(); }\r
void FrameWin::clearRecordedFormValues(void) { notImplemented(); }\r
void FrameWin::issuePasteCommand(void) { notImplemented(); }\r
-bool FrameWin::shouldChangeSelection(WebCore::SelectionController const &,WebCore::SelectionController const &,WebCore::EAffinity,bool)const { notImplemented(); return 0; }\r
+bool FrameWin::shouldChangeSelection(WebCore::SelectionController const&,WebCore::SelectionController const&,WebCore::EAffinity,bool)const { notImplemented(); return 0; }\r
void FrameWin::scheduleClose(void) { notImplemented(); }\r
-void FrameWin::markMisspellingsInAdjacentWords(WebCore::VisiblePosition const &) { notImplemented(); }\r
-void FrameWin::markMisspellings(WebCore::SelectionController const &) { notImplemented(); }\r
+void FrameWin::markMisspellingsInAdjacentWords(WebCore::VisiblePosition const&) { notImplemented(); }\r
+void FrameWin::markMisspellings(WebCore::SelectionController const&) { notImplemented(); }\r
bool FrameWin::menubarVisible(void) { notImplemented(); return 0; }\r
bool FrameWin::personalbarVisible(void) { notImplemented(); return 0; }\r
-bool FrameWin::lastEventIsMouseUp(void)const { notImplemented(); return 0; }\r
bool FrameWin::statusbarVisible(void) { notImplemented(); return 0; }\r
bool FrameWin::toolbarVisible(void) { notImplemented(); return 0; }\r
void FrameWin::issueTransposeCommand(void) { notImplemented(); }\r
QString FrameWin::userAgent(void)const { notImplemented(); return QString(); }\r
-void FrameWin::submitForm(KURL const &,struct WebCore::URLArgs const &) { notImplemented(); }\r
+void FrameWin::submitForm(KURL const&,struct WebCore::URLArgs const&) { notImplemented(); }\r
bool FrameWin::canPaste(void)const { notImplemented(); return 0; }\r
QString FrameWin::incomingReferrer(void)const { notImplemented(); return QString(); }\r
-enum WebCore::ObjectContentType FrameWin::objectContentType(KURL const &,QString const &) { notImplemented(); return (ObjectContentType)0; }\r
-bool FrameWin::passSubframeEventToSubframe(WebCore::MouseEventWithHitTestResults &) { notImplemented(); return 0; }\r
-WebCore::Frame * FrameWin::createFrame(KURL const &,QString const &,WebCore::RenderPart *,String const &) { notImplemented(); return 0; }\r
+enum WebCore::ObjectContentType FrameWin::objectContentType(KURL const&,QString const&) { notImplemented(); return (ObjectContentType)0; }\r
+WebCore::Frame * FrameWin::createFrame(KURL const&,QString const&,WebCore::RenderPart *,String const&) { notImplemented(); return 0; }\r
bool FrameWin::canGoBackOrForward(int)const { notImplemented(); return 0; }\r
void FrameWin::issuePasteAndMatchStyleCommand(void) { notImplemented(); }\r
-WebCore::Plugin * FrameWin::createPlugin(KURL const &,QStringList const &,QStringList const &,QString const &) { notImplemented(); return 0; }\r
+WebCore::Plugin * FrameWin::createPlugin(KURL const&,QStringList const&,QStringList const&,QString const&) { notImplemented(); return 0; }\r
String FrameWin::generateFrameName(void) { notImplemented(); return String(); }\r
-void WebCore::BrowserExtensionWin::setTypedIconURL(KURL const &,QString const &) { notImplemented(); }\r
-void WebCore::BrowserExtensionWin::openURLRequest(KURL const &,struct WebCore::URLArgs const &) { notImplemented(); }\r
-int WebCore::BrowserExtensionWin::getHistoryLength(void) { notImplemented(); return 0; }\r
-bool WebCore::BrowserExtensionWin::canRunModal(void) { notImplemented(); return 0; }\r
-void WebCore::BrowserExtensionWin::openURLNotify(void) { notImplemented(); }\r
-void WebCore::BrowserExtensionWin::createNewWindow(KURL const &,struct WebCore::URLArgs const &,struct WebCore::WindowArgs const &,WebCore::Frame * &) { notImplemented(); }\r
-bool WebCore::BrowserExtensionWin::canRunModalNow(void) { notImplemented(); return 0; }\r
-void WebCore::BrowserExtensionWin::runModal(void) { notImplemented(); }\r
-void WebCore::BrowserExtensionWin::goBackOrForward(int) { notImplemented(); }\r
-void WebCore::BrowserExtensionWin::setIconURL(KURL const &) { notImplemented(); }\r
-void WebCore::BrowserExtensionWin::createNewWindow(KURL const &,struct WebCore::URLArgs const &) { notImplemented(); }\r
-void QSlider::setFont(class WebCore::Font const &) { notImplemented(); }\r
-void QLineEdit::setFont(class WebCore::Font const &) { notImplemented(); }\r
+void BrowserExtensionWin::setTypedIconURL(KURL const&,QString const&) { notImplemented(); }\r
+void BrowserExtensionWin::openURLRequest(KURL const&,struct WebCore::URLArgs const&) { notImplemented(); }\r
+int BrowserExtensionWin::getHistoryLength(void) { notImplemented(); return 0; }\r
+bool BrowserExtensionWin::canRunModal(void) { notImplemented(); return 0; }\r
+void BrowserExtensionWin::openURLNotify(void) { notImplemented(); }\r
+void BrowserExtensionWin::createNewWindow(KURL const&,struct WebCore::URLArgs const&,struct WebCore::WindowArgs const&,WebCore::Frame * &) { notImplemented(); }\r
+bool BrowserExtensionWin::canRunModalNow(void) { notImplemented(); return 0; }\r
+void BrowserExtensionWin::runModal(void) { notImplemented(); }\r
+void BrowserExtensionWin::goBackOrForward(int) { notImplemented(); }\r
+void BrowserExtensionWin::setIconURL(KURL const&) { notImplemented(); }\r
+void BrowserExtensionWin::createNewWindow(KURL const&,struct WebCore::URLArgs const&) { notImplemented(); }\r
+void QSlider::setFont(class WebCore::Font const&) { notImplemented(); }\r
+void QLineEdit::setFont(class WebCore::Font const&) { notImplemented(); }\r
static WebCore::Font localFont;\r
-void QListBox::setFont(class WebCore::Font const &) { notImplemented(); }\r
-QFontMetrics::QFontMetrics(class WebCore::FontDescription const &) { notImplemented(); }\r
-void WebCore::Widget::setFont(class WebCore::Font const &) { notImplemented(); }\r
-void QComboBox::setFont(class WebCore::Font const &) { notImplemented(); }\r
-void QTextEdit::setFont(class WebCore::Font const &) { notImplemented(); }\r
+void QListBox::setFont(class WebCore::Font const&) { notImplemented(); }\r
+QFontMetrics::QFontMetrics(class WebCore::FontDescription const&) { notImplemented(); }\r
+void WebCore::Widget::setFont(class WebCore::Font const&) { notImplemented(); }\r
+void QComboBox::setFont(class WebCore::Font const&) { notImplemented(); }\r
+void QTextEdit::setFont(class WebCore::Font const&) { notImplemented(); }\r
void QTextEdit::setWritingDirection(enum WebCore::TextDirection) { notImplemented(); }\r
int QFontMetrics::checkSelectionPoint(class QChar const *,int,int,int,int,int,int,int,int,bool,int,bool,bool,bool)const { notImplemented(); return 0; }\r
GraphicsContext::GraphicsContext() { notImplemented(); }\r
int QFontMetrics::ascent() const { return 10; }\r
int QFontMetrics::height() const { return 10; }\r
int QFontMetrics::descent() const { return 10; }\r
-void QFontMetrics::setFontDescription(class WebCore::FontDescription const &) { }\r
+void QFontMetrics::setFontDescription(class WebCore::FontDescription const&) { }\r
bool QFontMetrics::isFixedPitch(void)const { return 0; }\r
\r
void FrameWin::restoreDocumentState() { }\r
void FrameWin::setTitle(String const&) { }\r
void FrameWin::handledOnloadEvents() { }\r
RangeImpl* FrameWin::markedTextRange() const { return 0; }\r
+bool FrameWin::passSubframeEventToSubframe(WebCore::MouseEventWithHitTestResults&) { return false; }\r
+bool FrameWin::lastEventIsMouseUp() const { return false; }\r
\r
-WebCore::BrowserExtensionWin::BrowserExtensionWin(WebCore::Frame*) { }\r
+BrowserExtensionWin::BrowserExtensionWin(WebCore::Frame*) { }\r
\r
bool KWQServeRequest(Loader*,Request*, TransferJob*) { return false; } // false may not be "right" as a stub.\r
bool KWQCheckIfReloading(WebCore::DocLoader*) { return false; }\r
\r
Widget::Widget() { }\r
void Widget::show() { }\r
+void Widget::setCursor(Cursor const&) { }\r
\r
void ScrollView::resizeContents(int,int) { }\r
WebCore::ScrollBarMode ScrollView::hScrollBarMode() const { return ScrollBarAlwaysOff; }\r
void ScrollView::setHScrollBarMode(ScrollBarMode) { }\r
void ScrollView::setVScrollBarMode(ScrollBarMode) { }\r
void ScrollView::setScrollBarsMode(ScrollBarMode) { }\r
-int WebCore::ScrollView::visibleHeight() const { return 600; }\r
-int WebCore::ScrollView::visibleWidth() const { return 800; }\r
-void WebCore::ScrollView::setContentsPos(int,int) { }\r
-int WebCore::ScrollView::contentsX() const { return 0; }\r
-int WebCore::ScrollView::contentsY() const { return 0; }\r
-int WebCore::ScrollView::contentsHeight() const { return 600; }\r
-int WebCore::ScrollView::contentsWidth() const { return 800; }\r
+int ScrollView::visibleHeight() const { return 600; }\r
+int ScrollView::visibleWidth() const { return 800; }\r
+void ScrollView::setContentsPos(int,int) { }\r
+int ScrollView::contentsX() const { return 0; }\r
+int ScrollView::contentsY() const { return 0; }\r
+int ScrollView::contentsHeight() const { return 600; }\r
+int ScrollView::contentsWidth() const { return 800; }\r
+void ScrollView::viewportToContents(int x1, int y1, int& x2, int& y2) { x2 = x1; y2 = y2; }\r
+\r
void ScrollView::updateContents(const IntRect&,bool) { }\r
void ScrollView::setStaticBackground(bool) { }\r
\r
-WebCore::TransferJob::TransferJob(WebCore::TransferJobClient*,const String&,KURL const&) { }\r
-void WebCore::TransferJob::addMetaData(QString const&,QString const&) { }\r
+TransferJob::TransferJob(WebCore::TransferJobClient*,const String&,KURL const&) { }\r
+void TransferJob::addMetaData(QString const&,QString const&) { }\r
\r
Font const& GraphicsContext::font() const { return localFont; }\r
void GraphicsContext::setFont(Font const&) { }\r