From: hausmann@webkit.org Date: Mon, 7 Jan 2008 10:46:23 +0000 (+0000) Subject: * Move the QWebPagePrivate methods up to the other private ones X-Git-Url: https://git.webkit.org/?p=WebKit-https.git;a=commitdiff_plain;h=fdc305b5bccf9abdebce042a96e56c00b7911b21;ds=sidebyside * Move the QWebPagePrivate methods up to the other private ones Signed-off-by: Simon git-svn-id: https://svn.webkit.org/repository/webkit/trunk@29220 268f45cc-cd09-0410-ab3c-d52691b4dbfc --- diff --git a/WebKit/qt/Api/qwebpage.cpp b/WebKit/qt/Api/qwebpage.cpp index f3954967ff80..a52304475475 100644 --- a/WebKit/qt/Api/qwebpage.cpp +++ b/WebKit/qt/Api/qwebpage.cpp @@ -76,6 +76,30 @@ using namespace WebCore; +static inline DragOperation dropActionToDragOp(Qt::DropActions actions) +{ + unsigned result = 0; + if (actions & Qt::CopyAction) + result |= DragOperationCopy; + if (actions & Qt::MoveAction) + result |= DragOperationMove; + if (actions & Qt::LinkAction) + result |= DragOperationLink; + return (DragOperation)result; +} + +static inline Qt::DropAction dragOpToDropAction(unsigned actions) +{ + Qt::DropAction result = Qt::IgnoreAction; + if (actions & DragOperationCopy) + result = Qt::CopyAction; + else if (actions & DragOperationMove) + result = Qt::MoveAction; + else if (actions & DragOperationLink) + result = Qt::LinkAction; + return result; +} + QWebPagePrivate::QWebPagePrivate(QWebPage *qq) : q(qq) , view(0) @@ -283,890 +307,866 @@ void QWebPagePrivate::updateEditorActions() updateAction(QWebPage::Paste); } -QWebPage::QWebPage(QObject *parent) - : QObject(parent) - , d(new QWebPagePrivate(this)) +void QWebPagePrivate::mouseMoveEvent(QMouseEvent *ev) { - setView(qobject_cast(parent)); + QWebFrame *f = currentFrame(ev->pos()); + if (!f) + return; - connect(this, SIGNAL(loadProgressChanged(int)), this, SLOT(_q_onLoadProgressChanged(int))); -} + QWebFramePrivate *frame = f->d; + if (!frame->frameView) + return; -QWebPage::~QWebPage() -{ - FrameLoader *loader = d->mainFrame->d->frame->loader(); - if (loader) - loader->detachFromParent(); - delete d; + frame->eventHandler->handleMouseMoveEvent(PlatformMouseEvent(ev, 0)); + const int xOffset = + frame->horizontalScrollBar() ? frame->horizontalScrollBar()->value() : 0; + const int yOffset = + frame->verticalScrollBar() ? frame->verticalScrollBar()->value() : 0; + IntPoint pt(ev->x() + xOffset, ev->y() + yOffset); + WebCore::HitTestResult result = frame->eventHandler->hitTestResultAtPoint(pt, false); + WebCore::Element *link = result.URLElement(); + if (link != frame->lastHoverElement) { + frame->lastHoverElement = link; + emit q->hoveringOverLink(result.absoluteLinkURL().prettyURL(), result.title(), result.textContent()); + } } -QWebFrame *QWebPage::mainFrame() const +void QWebPagePrivate::mousePressEvent(QMouseEvent *ev) { - d->createMainFrame(); - return d->mainFrame; -} + frameUnderMouse = frameAt(ev->pos()); + if (!frameUnderMouse) + return; -QWebFrame *QWebPage::currentFrame() const -{ - return static_cast(d->page->focusController()->focusedOrMainFrame()->loader()->client())->webFrame(); -} + QWebFramePrivate *frame = frameUnderMouse->d; + if (!frame->eventHandler) + return; -QWebPageHistory *QWebPage::history() const -{ - return &d->history; + frame->eventHandler->handleMousePressEvent(PlatformMouseEvent(ev, 1)); } -void QWebPage::setView(QWidget *view) +void QWebPagePrivate::mouseDoubleClickEvent(QMouseEvent *ev) { - d->view = view; - setViewportSize(view ? view->size() : QSize(0, 0)); + QWebFrame *f = currentFrame(ev->pos()); + if (!f) + return; + + QWebFramePrivate *frame = f->d; + if (!frame->eventHandler) + return; + + frame->eventHandler->handleMousePressEvent(PlatformMouseEvent(ev, 2)); } -QWidget *QWebPage::view() const +void QWebPagePrivate::mouseReleaseEvent(QMouseEvent *ev) { - return d->view; -} + QWebFrame *f = currentFrame(ev->pos()); + if (!f) + return; + QWebFramePrivate *frame = f->d; + if (!frame->frameView) + return; -void QWebPage::javaScriptConsoleMessage(const QString& message, unsigned int lineNumber, const QString& sourceID) -{ -} + frame->eventHandler->handleMouseReleaseEvent(PlatformMouseEvent(ev, 0)); -void QWebPage::javaScriptAlert(QWebFrame *frame, const QString& msg) -{ - //FIXME frame pos... - QMessageBox::information(d->view, mainFrame()->title(), msg, QMessageBox::Ok); + frameUnderMouse = 0; } -bool QWebPage::javaScriptConfirm(QWebFrame *frame, const QString& msg) +void QWebPagePrivate::contextMenuEvent(QContextMenuEvent *ev) { - //FIXME frame pos... - return 0 == QMessageBox::information(d->view, mainFrame()->title(), msg, QMessageBox::Yes, QMessageBox::No); -} + QWebFrame *f = currentFrame(ev->pos()); + if (!f) + return; -bool QWebPage::javaScriptPrompt(QWebFrame *frame, const QString& msg, const QString& defaultValue, QString* result) -{ - //FIXME frame pos... - bool ok = false; -#ifndef QT_NO_INPUTDIALOG - QString x = QInputDialog::getText(d->view, mainFrame()->title(), msg, QLineEdit::Normal, defaultValue, &ok); - if (ok && result) { - *result = x; - } -#endif - return ok; -} + QWebFramePrivate *frame = f->d; + if (!frame->eventHandler) + return; -QWebPage *QWebPage::createWindow() -{ - return 0; -} + page->contextMenuController()->clearContextMenu(); + frame->eventHandler->sendContextMenuEvent(PlatformMouseEvent(ev, 1)); + ContextMenu *menu = page->contextMenuController()->contextMenu(); -QWebPage *QWebPage::createModalDialog() -{ - return 0; -} + QWebPageContext oldContext = currentContext; + currentContext = QWebPageContext(menu->hitTestResult()); -QObject *QWebPage::createPlugin(const QString &classid, const QUrl &url, const QStringList ¶mNames, const QStringList ¶mValues) -{ - Q_UNUSED(classid) - Q_UNUSED(url) - Q_UNUSED(paramNames) - Q_UNUSED(paramValues) - return 0; + const QList *items = menu->platformDescription(); + QMenu *qmenu = createContextMenu(menu, items); + if (qmenu) { + qmenu->exec(ev->globalPos()); + delete qmenu; + } + currentContext = oldContext; } -static WebCore::FrameLoadRequest frameLoadRequest(const QUrl &url, WebCore::Frame *frame) +void QWebPagePrivate::wheelEvent(QWheelEvent *ev) { - WebCore::ResourceRequest rr(WebCore::KURL(url.toString()), - frame->loader()->outgoingReferrer()); - return WebCore::FrameLoadRequest(rr); -} + QWebFramePrivate *frame = currentFrame(ev->pos())->d; -static void openNewWindow(const QUrl& url, WebCore::Frame* frame) -{ - if (Page* oldPage = frame->page()) { - WindowFeatures features; - if (Page* newPage = oldPage->chrome()->createWindow(frame, - frameLoadRequest(url, frame), features)) - newPage->chrome()->show(); + bool accepted = false; + if (frame->eventHandler) { + WebCore::PlatformWheelEvent pev(ev); + accepted = frame->eventHandler->handleWheelEvent(pev); } + + ev->setAccepted(accepted); } -void QWebPage::triggerAction(WebAction action, bool checked) +void QWebPagePrivate::keyPressEvent(QKeyEvent *ev) { - WebCore::Frame *frame = d->page->focusController()->focusedOrMainFrame(); - WebCore::Editor *editor = frame->editor(); - const char *command = 0; - - switch (action) { - case OpenLink: - if (QWebFrame *targetFrame = d->currentContext.targetFrame()) { - WTF::RefPtr wcFrame = targetFrame->d->frame; - targetFrame->d->frame->loader()->load(frameLoadRequest(d->currentContext.linkUrl(), wcFrame.get()), - /*lockHistory*/ false, - /*userGesture*/ true, - /*event*/ 0, - /*HTMLFormElement*/ 0, - /*formValues*/ - WTF::HashMap()); - break; - } else { - } - // fall through - case OpenLinkInNewWindow: - openNewWindow(d->currentContext.linkUrl(), frame); - break; - case OpenFrameInNewWindow: - break; - case DownloadLinkToDisk: - case CopyLinkToClipboard: - editor->copyURL(WebCore::KURL(d->currentContext.linkUrl().toString()), d->currentContext.text()); - break; - case OpenImageInNewWindow: - openNewWindow(d->currentContext.imageUrl(), frame); - break; - case DownloadImageToDisk: - case CopyImageToClipboard: - break; - case GoBack: - d->page->goBack(); - break; - case GoForward: - d->page->goForward(); - break; - case Stop: - mainFrame()->d->frame->loader()->stopForUserCancel(); - break; - case Reload: - mainFrame()->d->frame->loader()->reload(); - break; - case Cut: - command = "Cut"; - break; - case Copy: - command = "Copy"; - break; - case Paste: - command = "Paste"; - break; - - case Undo: - command = "Undo"; - break; - case Redo: - command = "Redo"; - break; + if (!mainFrame->d->eventHandler) + return; - case MoveToNextChar: - command = "MoveForward"; - break; - case MoveToPreviousChar: - command = "MoveBackward"; - break; - case MoveToNextWord: - command = "MoveWordForward"; - break; - case MoveToPreviousWord: - command = "MoveWordBackward"; - break; - case MoveToNextLine: - command = "MoveDown"; - break; - case MoveToPreviousLine: - command = "MoveUp"; - break; - case MoveToStartOfLine: - command = "MoveToBeginningOfLine"; - break; - case MoveToEndOfLine: - command = "MoveToEndOfLine"; - break; - case MoveToStartOfBlock: - command = "MoveToBeginningOfParagraph"; - break; - case MoveToEndOfBlock: - command = "MoveToEndOfParagraph"; - break; - case MoveToStartOfDocument: - command = "MoveToBeginningOfDocument"; - break; - case MoveToEndOfDocument: - command = "MoveToEndOfDocument"; - break; - case SelectNextChar: - command = "MoveForwardAndModifySelection"; - break; - case SelectPreviousChar: - command = "MoveBackwardAndModifySelection"; - break; - case SelectNextWord: - command = "MoveWordForwardAndModifySelection"; - break; - case SelectPreviousWord: - command = "MoveWordBackwardAndModifySelection"; - break; - case SelectNextLine: - command = "MoveDownAndModifySelection"; - break; - case SelectPreviousLine: - command = "MoveUpAndModifySelection"; - break; - case SelectStartOfLine: - command = "MoveToBeginningOfLineAndModifySelection"; - break; - case SelectEndOfLine: - command = "MoveToEndOfLineAndModifySelection"; - break; - case SelectStartOfBlock: - command = "MoveToBeginningOfParagraphAndModifySelection"; - break; - case SelectEndOfBlock: - command = "MoveToEndOfParagraphAndModifySelection"; - break; - case SelectStartOfDocument: - command = "MoveToBeginningOfDocumentAndModifySelection"; - break; - case SelectEndOfDocument: - command = "MoveToEndOfDocumentAndModifySelection"; - break; - case DeleteStartOfWord: - command = "DeleteWordBackward"; - break; - case DeleteEndOfWord: - command = "DeleteWordForward"; - break; + bool handled = false; + QWebFrame *frame = mainFrame; + WebCore::Editor *editor = frame->d->frame->editor(); + if (editor->canEdit()) { + if (ev == QKeySequence::Cut) { + q->triggerAction(QWebPage::Cut); + handled = true; + } else if (ev == QKeySequence::Copy) { + q->triggerAction(QWebPage::Copy); + handled = true; + } else if (ev == QKeySequence::Paste) { + q->triggerAction(QWebPage::Paste); + handled = true; + } else if (ev == QKeySequence::Undo) { + q->triggerAction(QWebPage::Undo); + handled = true; + } else if (ev == QKeySequence::Redo) { + q->triggerAction(QWebPage::Redo); + handled = true; + } else if(ev == QKeySequence::MoveToNextChar) { + q->triggerAction(QWebPage::MoveToNextChar); + handled = true; + } else if(ev == QKeySequence::MoveToPreviousChar) { + q->triggerAction(QWebPage::MoveToPreviousChar); + handled = true; + } else if(ev == QKeySequence::MoveToNextWord) { + q->triggerAction(QWebPage::MoveToNextWord); + handled = true; + } else if(ev == QKeySequence::MoveToPreviousWord) { + q->triggerAction(QWebPage::MoveToPreviousWord); + handled = true; + } else if(ev == QKeySequence::MoveToNextLine) { + q->triggerAction(QWebPage::MoveToNextLine); + handled = true; + } else if(ev == QKeySequence::MoveToPreviousLine) { + q->triggerAction(QWebPage::MoveToPreviousLine); + handled = true; +// } else if(ev == QKeySequence::MoveToNextPage) { +// } else if(ev == QKeySequence::MoveToPreviousPage) { + } else if(ev == QKeySequence::MoveToStartOfLine) { + q->triggerAction(QWebPage::MoveToStartOfLine); + handled = true; + } else if(ev == QKeySequence::MoveToEndOfLine) { + q->triggerAction(QWebPage::MoveToEndOfLine); + handled = true; + } else if(ev == QKeySequence::MoveToStartOfBlock) { + q->triggerAction(QWebPage::MoveToStartOfBlock); + handled = true; + } else if(ev == QKeySequence::MoveToEndOfBlock) { + q->triggerAction(QWebPage::MoveToEndOfBlock); + handled = true; + } else if(ev == QKeySequence::MoveToStartOfDocument) { + q->triggerAction(QWebPage::MoveToStartOfDocument); + handled = true; + } else if(ev == QKeySequence::MoveToEndOfDocument) { + q->triggerAction(QWebPage::MoveToEndOfDocument); + handled = true; + } else if(ev == QKeySequence::SelectNextChar) { + q->triggerAction(QWebPage::SelectNextChar); + handled = true; + } else if(ev == QKeySequence::SelectPreviousChar) { + q->triggerAction(QWebPage::SelectPreviousChar); + handled = true; + } else if(ev == QKeySequence::SelectNextWord) { + q->triggerAction(QWebPage::SelectNextWord); + handled = true; + } else if(ev == QKeySequence::SelectPreviousWord) { + q->triggerAction(QWebPage::SelectPreviousWord); + handled = true; + } else if(ev == QKeySequence::SelectNextLine) { + q->triggerAction(QWebPage::SelectNextLine); + handled = true; + } else if(ev == QKeySequence::SelectPreviousLine) { + q->triggerAction(QWebPage::SelectPreviousLine); + handled = true; +// } else if(ev == QKeySequence::SelectNextPage) { +// } else if(ev == QKeySequence::SelectPreviousPage) { + } else if(ev == QKeySequence::SelectStartOfLine) { + q->triggerAction(QWebPage::SelectStartOfLine); + handled = true; + } else if(ev == QKeySequence::SelectEndOfLine) { + q->triggerAction(QWebPage::SelectEndOfLine); + handled = true; + } else if(ev == QKeySequence::SelectStartOfBlock) { + q->triggerAction(QWebPage::SelectStartOfBlock); + handled = true; + } else if(ev == QKeySequence::SelectEndOfBlock) { + q->triggerAction(QWebPage::SelectEndOfBlock); + handled = true; + } else if(ev == QKeySequence::SelectStartOfDocument) { + q->triggerAction(QWebPage::SelectStartOfDocument); + handled = true; + } else if(ev == QKeySequence::SelectEndOfDocument) { + q->triggerAction(QWebPage::SelectEndOfDocument); + handled = true; + } else if(ev == QKeySequence::DeleteStartOfWord) { + q->triggerAction(QWebPage::DeleteStartOfWord); + handled = true; + } else if(ev == QKeySequence::DeleteEndOfWord) { + q->triggerAction(QWebPage::DeleteEndOfWord); + handled = true; +// } else if(ev == QKeySequence::DeleteEndOfLine) { + } + } + if (!handled) + handled = frame->d->eventHandler->keyEvent(ev); + if (!handled) { + handled = true; + PlatformScrollbar *h, *v; + h = mainFrame->d->horizontalScrollBar(); + v = mainFrame->d->verticalScrollBar(); - case SetTextDirectionDefault: - editor->setBaseWritingDirection("inherit"); - break; - case SetTextDirectionLeftToRight: - editor->setBaseWritingDirection("ltr"); - break; - case SetTextDirectionRightToLeft: - editor->setBaseWritingDirection("rtl"); - break; + if (ev == QKeySequence::MoveToNextPage) { + if (v) + v->setValue(v->value() + q->viewportSize().height()); + } else if (ev == QKeySequence::MoveToPreviousPage) { + if (v) + v->setValue(v->value() - q->viewportSize().height()); + } else { + switch (ev->key()) { + case Qt::Key_Up: + if (v) + v->setValue(v->value() - 10); + break; + case Qt::Key_Down: + if (v) + v->setValue(v->value() + 10); + break; + case Qt::Key_Left: + if (h) + h->setValue(h->value() - 10); + break; + case Qt::Key_Right: + if (h) + h->setValue(h->value() + 10); + break; + default: + handled = false; + break; + } + } + } - case ToggleBold: - command = "ToggleBold"; - break; - case ToggleItalic: - command = "ToggleItalic"; - break; - case ToggleUnderline: - editor->toggleUnderline(); + ev->setAccepted(handled); +} - case InspectElement: - d->page->inspectorController()->inspect(d->currentContext.d->innerNonSharedNode.get()); - break; +void QWebPagePrivate::keyReleaseEvent(QKeyEvent *ev) +{ + if (ev->isAutoRepeat()) { + ev->setAccepted(true); + return; + } - default: break; + if (!mainFrame->d->eventHandler) + return; + + bool handled = mainFrame->d->eventHandler->keyEvent(ev); + ev->setAccepted(handled); +} + +void QWebPagePrivate::focusInEvent(QFocusEvent *ev) +{ + if (ev->reason() != Qt::PopupFocusReason) + mainFrame->d->frame->page()->focusController()->setFocusedFrame(mainFrame->d->frame); +} + +void QWebPagePrivate::focusOutEvent(QFocusEvent *ev) +{ + if (ev->reason() != Qt::PopupFocusReason) { + mainFrame->d->frame->selectionController()->clear(); + mainFrame->d->frame->setIsActive(false); } +} - if (command) - editor->command(command).execute(); +void QWebPagePrivate::dragEnterEvent(QDragEnterEvent *ev) +{ +#ifndef QT_NO_DRAGANDDROP + DragData dragData(ev->mimeData(), ev->pos(), QCursor::pos(), + dropActionToDragOp(ev->possibleActions())); + Qt::DropAction action = dragOpToDropAction(page->dragController()->dragEntered(&dragData)); + ev->setDropAction(action); + ev->accept(); +#endif } -QSize QWebPage::viewportSize() const +void QWebPagePrivate::dragLeaveEvent(QDragLeaveEvent *ev) { - QWebFrame *frame = mainFrame(); - if (frame->d->frame && frame->d->frameView) - return frame->d->frameView->frameGeometry().size(); - return QSize(0, 0); +#ifndef QT_NO_DRAGANDDROP + DragData dragData(0, IntPoint(), QCursor::pos(), DragOperationNone); + page->dragController()->dragExited(&dragData); + ev->accept(); +#endif } -void QWebPage::setViewportSize(const QSize &size) const +void QWebPagePrivate::dragMoveEvent(QDragMoveEvent *ev) { - QWebFrame *frame = mainFrame(); - if (frame->d->frame && frame->d->frameView) { - frame->d->frameView->setFrameGeometry(QRect(QPoint(0, 0), size)); - frame->d->frame->forceLayout(); - frame->d->frame->view()->adjustViewSize(); +#ifndef QT_NO_DRAGANDDROP + DragData dragData(ev->mimeData(), ev->pos(), QCursor::pos(), + dropActionToDragOp(ev->possibleActions())); + Qt::DropAction action = dragOpToDropAction(page->dragController()->dragUpdated(&dragData)); + ev->setDropAction(action); + ev->accept(); +#endif +} + +void QWebPagePrivate::dropEvent(QDropEvent *ev) +{ +#ifndef QT_NO_DRAGANDDROP + DragData dragData(ev->mimeData(), ev->pos(), QCursor::pos(), + dropActionToDragOp(ev->possibleActions())); + Qt::DropAction action = dragOpToDropAction(page->dragController()->performDrag(&dragData)); + ev->accept(); +#endif +} + +QWebPage::QWebPage(QObject *parent) + : QObject(parent) + , d(new QWebPagePrivate(this)) +{ + setView(qobject_cast(parent)); + + connect(this, SIGNAL(loadProgressChanged(int)), this, SLOT(_q_onLoadProgressChanged(int))); +} + +QWebPage::~QWebPage() +{ + FrameLoader *loader = d->mainFrame->d->frame->loader(); + if (loader) + loader->detachFromParent(); + delete d; +} + +QWebFrame *QWebPage::mainFrame() const +{ + d->createMainFrame(); + return d->mainFrame; +} + +QWebFrame *QWebPage::currentFrame() const +{ + return static_cast(d->page->focusController()->focusedOrMainFrame()->loader()->client())->webFrame(); +} + +QWebPageHistory *QWebPage::history() const +{ + return &d->history; +} + +void QWebPage::setView(QWidget *view) +{ + d->view = view; + setViewportSize(view ? view->size() : QSize(0, 0)); +} + +QWidget *QWebPage::view() const +{ + return d->view; +} + + +void QWebPage::javaScriptConsoleMessage(const QString& message, unsigned int lineNumber, const QString& sourceID) +{ +} + +void QWebPage::javaScriptAlert(QWebFrame *frame, const QString& msg) +{ + //FIXME frame pos... + QMessageBox::information(d->view, mainFrame()->title(), msg, QMessageBox::Ok); +} + +bool QWebPage::javaScriptConfirm(QWebFrame *frame, const QString& msg) +{ + //FIXME frame pos... + return 0 == QMessageBox::information(d->view, mainFrame()->title(), msg, QMessageBox::Yes, QMessageBox::No); +} + +bool QWebPage::javaScriptPrompt(QWebFrame *frame, const QString& msg, const QString& defaultValue, QString* result) +{ + //FIXME frame pos... + bool ok = false; +#ifndef QT_NO_INPUTDIALOG + QString x = QInputDialog::getText(d->view, mainFrame()->title(), msg, QLineEdit::Normal, defaultValue, &ok); + if (ok && result) { + *result = x; } +#endif + return ok; } +QWebPage *QWebPage::createWindow() +{ + return 0; +} -QWebPage::NavigationRequestResponse QWebPage::navigationRequested(QWebFrame *frame, const QWebNetworkRequest &request, QWebPage::NavigationType type) +QWebPage *QWebPage::createModalDialog() { - Q_UNUSED(request) - return AcceptNavigationRequest; + return 0; } -QString QWebPage::selectedText() const +QObject *QWebPage::createPlugin(const QString &classid, const QUrl &url, const QStringList ¶mNames, const QStringList ¶mValues) { - return d->page->focusController()->focusedOrMainFrame()->selectedText(); + Q_UNUSED(classid) + Q_UNUSED(url) + Q_UNUSED(paramNames) + Q_UNUSED(paramValues) + return 0; } -QAction *QWebPage::action(WebAction action) const +static WebCore::FrameLoadRequest frameLoadRequest(const QUrl &url, WebCore::Frame *frame) { - if (action == QWebPage::NoWebAction) return 0; - if (d->actions[action]) - return d->actions[action]; + WebCore::ResourceRequest rr(WebCore::KURL(url.toString()), + frame->loader()->outgoingReferrer()); + return WebCore::FrameLoadRequest(rr); +} - QString text; - bool checkable = false; +static void openNewWindow(const QUrl& url, WebCore::Frame* frame) +{ + if (Page* oldPage = frame->page()) { + WindowFeatures features; + if (Page* newPage = oldPage->chrome()->createWindow(frame, + frameLoadRequest(url, frame), features)) + newPage->chrome()->show(); + } +} + +void QWebPage::triggerAction(WebAction action, bool checked) +{ + WebCore::Frame *frame = d->page->focusController()->focusedOrMainFrame(); + WebCore::Editor *editor = frame->editor(); + const char *command = 0; switch (action) { case OpenLink: - text = contextMenuItemTagOpenLink(); - break; + if (QWebFrame *targetFrame = d->currentContext.targetFrame()) { + WTF::RefPtr wcFrame = targetFrame->d->frame; + targetFrame->d->frame->loader()->load(frameLoadRequest(d->currentContext.linkUrl(), wcFrame.get()), + /*lockHistory*/ false, + /*userGesture*/ true, + /*event*/ 0, + /*HTMLFormElement*/ 0, + /*formValues*/ + WTF::HashMap()); + break; + } else { + } + // fall through case OpenLinkInNewWindow: - text = contextMenuItemTagOpenLinkInNewWindow(); + openNewWindow(d->currentContext.linkUrl(), frame); break; case OpenFrameInNewWindow: - text = contextMenuItemTagOpenFrameInNewWindow(); break; - case DownloadLinkToDisk: - text = contextMenuItemTagDownloadLinkToDisk(); - break; case CopyLinkToClipboard: - text = contextMenuItemTagCopyLinkToClipboard(); + editor->copyURL(WebCore::KURL(d->currentContext.linkUrl().toString()), d->currentContext.text()); break; - case OpenImageInNewWindow: - text = contextMenuItemTagOpenImageInNewWindow(); + openNewWindow(d->currentContext.imageUrl(), frame); break; case DownloadImageToDisk: - text = contextMenuItemTagDownloadImageToDisk(); - break; case CopyImageToClipboard: - text = contextMenuItemTagCopyImageToClipboard(); break; - case GoBack: - text = contextMenuItemTagGoBack(); + d->page->goBack(); break; case GoForward: - text = contextMenuItemTagGoForward(); + d->page->goForward(); break; case Stop: - text = contextMenuItemTagStop(); + mainFrame()->d->frame->loader()->stopForUserCancel(); break; case Reload: - text = contextMenuItemTagReload(); + mainFrame()->d->frame->loader()->reload(); break; - case Cut: - text = contextMenuItemTagCut(); + command = "Cut"; break; case Copy: - text = contextMenuItemTagCopy(); + command = "Copy"; break; case Paste: - text = contextMenuItemTagPaste(); + command = "Paste"; + break; + + case Undo: + command = "Undo"; + break; + case Redo: + command = "Redo"; break; - case Undo: { - QAction *a = undoStack()->createUndoAction(d->q); - d->actions[action] = a; - return a; - } - case Redo: { - QAction *a = undoStack()->createRedoAction(d->q); - d->actions[action] = a; - return a; - } case MoveToNextChar: + command = "MoveForward"; + break; case MoveToPreviousChar: + command = "MoveBackward"; + break; case MoveToNextWord: + command = "MoveWordForward"; + break; case MoveToPreviousWord: + command = "MoveWordBackward"; + break; case MoveToNextLine: + command = "MoveDown"; + break; case MoveToPreviousLine: + command = "MoveUp"; + break; case MoveToStartOfLine: + command = "MoveToBeginningOfLine"; + break; case MoveToEndOfLine: + command = "MoveToEndOfLine"; + break; case MoveToStartOfBlock: + command = "MoveToBeginningOfParagraph"; + break; case MoveToEndOfBlock: + command = "MoveToEndOfParagraph"; + break; case MoveToStartOfDocument: + command = "MoveToBeginningOfDocument"; + break; case MoveToEndOfDocument: + command = "MoveToEndOfDocument"; + break; case SelectNextChar: + command = "MoveForwardAndModifySelection"; + break; case SelectPreviousChar: + command = "MoveBackwardAndModifySelection"; + break; case SelectNextWord: + command = "MoveWordForwardAndModifySelection"; + break; case SelectPreviousWord: + command = "MoveWordBackwardAndModifySelection"; + break; case SelectNextLine: + command = "MoveDownAndModifySelection"; + break; case SelectPreviousLine: + command = "MoveUpAndModifySelection"; + break; case SelectStartOfLine: + command = "MoveToBeginningOfLineAndModifySelection"; + break; case SelectEndOfLine: + command = "MoveToEndOfLineAndModifySelection"; + break; case SelectStartOfBlock: + command = "MoveToBeginningOfParagraphAndModifySelection"; + break; case SelectEndOfBlock: + command = "MoveToEndOfParagraphAndModifySelection"; + break; case SelectStartOfDocument: + command = "MoveToBeginningOfDocumentAndModifySelection"; + break; case SelectEndOfDocument: + command = "MoveToEndOfDocumentAndModifySelection"; + break; case DeleteStartOfWord: + command = "DeleteWordBackward"; + break; case DeleteEndOfWord: - break; // #### + command = "DeleteWordForward"; + break; case SetTextDirectionDefault: - text = contextMenuItemTagDefaultDirection(); + editor->setBaseWritingDirection("inherit"); break; case SetTextDirectionLeftToRight: - text = contextMenuItemTagLeftToRight(); - checkable = true; + editor->setBaseWritingDirection("ltr"); break; case SetTextDirectionRightToLeft: - text = contextMenuItemTagRightToLeft(); - checkable = true; - break; - - case ToggleBold: - text = contextMenuItemTagBold(); - checkable = true; - break; - case ToggleItalic: - text = contextMenuItemTagItalic(); - checkable = true; - break; - case ToggleUnderline: - text = contextMenuItemTagUnderline(); - checkable = true; - break; - - case InspectElement: - text = contextMenuItemTagInspectElement(); + editor->setBaseWritingDirection("rtl"); break; - case NoWebAction: - return 0; - } - - if (text.isEmpty()) - return 0; - - QAction *a = new QAction(d->q); - a->setText(text); - a->setData(action); - a->setCheckable(checkable); - - connect(a, SIGNAL(triggered(bool)), - this, SLOT(_q_webActionTriggered(bool))); - - d->actions[action] = a; - d->updateAction(action); - return a; -} - -/*! - Returns true if the page contains unsubmitted form data. -*/ -bool QWebPage::isModified() const -{ - return d->modified; -} - - -QUndoStack *QWebPage::undoStack() const -{ - if (!d->undoStack) - d->undoStack = new QUndoStack(const_cast(this)); - - return d->undoStack; -} - -static inline DragOperation dropActionToDragOp(Qt::DropActions actions) -{ - unsigned result = 0; - if (actions & Qt::CopyAction) - result |= DragOperationCopy; - if (actions & Qt::MoveAction) - result |= DragOperationMove; - if (actions & Qt::LinkAction) - result |= DragOperationLink; - return (DragOperation)result; -} - -static inline Qt::DropAction dragOpToDropAction(unsigned actions) -{ - Qt::DropAction result = Qt::IgnoreAction; - if (actions & DragOperationCopy) - result = Qt::CopyAction; - else if (actions & DragOperationMove) - result = Qt::MoveAction; - else if (actions & DragOperationLink) - result = Qt::LinkAction; - return result; -} - -/*! \reimp -*/ -bool QWebPage::event(QEvent *ev) -{ - switch (ev->type()) { - case QEvent::MouseMove: - d->mouseMoveEvent(static_cast(ev)); - break; - case QEvent::MouseButtonPress: - d->mousePressEvent(static_cast(ev)); - break; - case QEvent::MouseButtonDblClick: - d->mouseDoubleClickEvent(static_cast(ev)); - break; - case QEvent::MouseButtonRelease: - d->mouseReleaseEvent(static_cast(ev)); - break; - case QEvent::ContextMenu: - d->contextMenuEvent(static_cast(ev)); - break; - case QEvent::Wheel: - d->wheelEvent(static_cast(ev)); - break; - case QEvent::KeyPress: - d->keyPressEvent(static_cast(ev)); - break; - case QEvent::KeyRelease: - d->keyReleaseEvent(static_cast(ev)); - break; - case QEvent::FocusIn: - d->focusInEvent(static_cast(ev)); - break; - case QEvent::FocusOut: - d->focusOutEvent(static_cast(ev)); - break; - case QEvent::DragEnter: - d->dragEnterEvent(static_cast(ev)); - break; - case QEvent::DragLeave: - d->dragLeaveEvent(static_cast(ev)); - break; - case QEvent::DragMove: - d->dragMoveEvent(static_cast(ev)); - break; - case QEvent::Drop: - d->dropEvent(static_cast(ev)); - break; - default: - return QObject::event(ev); - } - - return true; -} - -void QWebPagePrivate::mouseMoveEvent(QMouseEvent *ev) -{ - QWebFrame *f = currentFrame(ev->pos()); - if (!f) - return; + case ToggleBold: + command = "ToggleBold"; + break; + case ToggleItalic: + command = "ToggleItalic"; + break; + case ToggleUnderline: + editor->toggleUnderline(); - QWebFramePrivate *frame = f->d; - if (!frame->frameView) - return; + case InspectElement: + d->page->inspectorController()->inspect(d->currentContext.d->innerNonSharedNode.get()); + break; - frame->eventHandler->handleMouseMoveEvent(PlatformMouseEvent(ev, 0)); - const int xOffset = - frame->horizontalScrollBar() ? frame->horizontalScrollBar()->value() : 0; - const int yOffset = - frame->verticalScrollBar() ? frame->verticalScrollBar()->value() : 0; - IntPoint pt(ev->x() + xOffset, ev->y() + yOffset); - WebCore::HitTestResult result = frame->eventHandler->hitTestResultAtPoint(pt, false); - WebCore::Element *link = result.URLElement(); - if (link != frame->lastHoverElement) { - frame->lastHoverElement = link; - emit q->hoveringOverLink(result.absoluteLinkURL().prettyURL(), result.title(), result.textContent()); + default: break; } -} -void QWebPagePrivate::mousePressEvent(QMouseEvent *ev) -{ - frameUnderMouse = frameAt(ev->pos()); - if (!frameUnderMouse) - return; - - QWebFramePrivate *frame = frameUnderMouse->d; - if (!frame->eventHandler) - return; - - frame->eventHandler->handleMousePressEvent(PlatformMouseEvent(ev, 1)); + if (command) + editor->command(command).execute(); } -void QWebPagePrivate::mouseDoubleClickEvent(QMouseEvent *ev) +QSize QWebPage::viewportSize() const { - QWebFrame *f = currentFrame(ev->pos()); - if (!f) - return; - - QWebFramePrivate *frame = f->d; - if (!frame->eventHandler) - return; - - frame->eventHandler->handleMousePressEvent(PlatformMouseEvent(ev, 2)); + QWebFrame *frame = mainFrame(); + if (frame->d->frame && frame->d->frameView) + return frame->d->frameView->frameGeometry().size(); + return QSize(0, 0); } -void QWebPagePrivate::mouseReleaseEvent(QMouseEvent *ev) +void QWebPage::setViewportSize(const QSize &size) const { - QWebFrame *f = currentFrame(ev->pos()); - if (!f) - return; - - QWebFramePrivate *frame = f->d; - if (!frame->frameView) - return; + QWebFrame *frame = mainFrame(); + if (frame->d->frame && frame->d->frameView) { + frame->d->frameView->setFrameGeometry(QRect(QPoint(0, 0), size)); + frame->d->frame->forceLayout(); + frame->d->frame->view()->adjustViewSize(); + } +} - frame->eventHandler->handleMouseReleaseEvent(PlatformMouseEvent(ev, 0)); - frameUnderMouse = 0; +QWebPage::NavigationRequestResponse QWebPage::navigationRequested(QWebFrame *frame, const QWebNetworkRequest &request, QWebPage::NavigationType type) +{ + Q_UNUSED(request) + return AcceptNavigationRequest; } -void QWebPagePrivate::contextMenuEvent(QContextMenuEvent *ev) +QString QWebPage::selectedText() const { - QWebFrame *f = currentFrame(ev->pos()); - if (!f) - return; - - QWebFramePrivate *frame = f->d; - if (!frame->eventHandler) - return; - - page->contextMenuController()->clearContextMenu(); - frame->eventHandler->sendContextMenuEvent(PlatformMouseEvent(ev, 1)); - ContextMenu *menu = page->contextMenuController()->contextMenu(); - - QWebPageContext oldContext = currentContext; - currentContext = QWebPageContext(menu->hitTestResult()); - - const QList *items = menu->platformDescription(); - QMenu *qmenu = createContextMenu(menu, items); - if (qmenu) { - qmenu->exec(ev->globalPos()); - delete qmenu; - } - currentContext = oldContext; + return d->page->focusController()->focusedOrMainFrame()->selectedText(); } -void QWebPagePrivate::wheelEvent(QWheelEvent *ev) +QAction *QWebPage::action(WebAction action) const { - QWebFramePrivate *frame = currentFrame(ev->pos())->d; + if (action == QWebPage::NoWebAction) return 0; + if (d->actions[action]) + return d->actions[action]; - bool accepted = false; - if (frame->eventHandler) { - WebCore::PlatformWheelEvent pev(ev); - accepted = frame->eventHandler->handleWheelEvent(pev); - } + QString text; + bool checkable = false; - ev->setAccepted(accepted); -} + switch (action) { + case OpenLink: + text = contextMenuItemTagOpenLink(); + break; + case OpenLinkInNewWindow: + text = contextMenuItemTagOpenLinkInNewWindow(); + break; + case OpenFrameInNewWindow: + text = contextMenuItemTagOpenFrameInNewWindow(); + break; -void QWebPagePrivate::keyPressEvent(QKeyEvent *ev) -{ - if (!mainFrame->d->eventHandler) - return; + case DownloadLinkToDisk: + text = contextMenuItemTagDownloadLinkToDisk(); + break; + case CopyLinkToClipboard: + text = contextMenuItemTagCopyLinkToClipboard(); + break; - bool handled = false; - QWebFrame *frame = mainFrame; - WebCore::Editor *editor = frame->d->frame->editor(); - if (editor->canEdit()) { - if (ev == QKeySequence::Cut) { - q->triggerAction(QWebPage::Cut); - handled = true; - } else if (ev == QKeySequence::Copy) { - q->triggerAction(QWebPage::Copy); - handled = true; - } else if (ev == QKeySequence::Paste) { - q->triggerAction(QWebPage::Paste); - handled = true; - } else if (ev == QKeySequence::Undo) { - q->triggerAction(QWebPage::Undo); - handled = true; - } else if (ev == QKeySequence::Redo) { - q->triggerAction(QWebPage::Redo); - handled = true; - } else if(ev == QKeySequence::MoveToNextChar) { - q->triggerAction(QWebPage::MoveToNextChar); - handled = true; - } else if(ev == QKeySequence::MoveToPreviousChar) { - q->triggerAction(QWebPage::MoveToPreviousChar); - handled = true; - } else if(ev == QKeySequence::MoveToNextWord) { - q->triggerAction(QWebPage::MoveToNextWord); - handled = true; - } else if(ev == QKeySequence::MoveToPreviousWord) { - q->triggerAction(QWebPage::MoveToPreviousWord); - handled = true; - } else if(ev == QKeySequence::MoveToNextLine) { - q->triggerAction(QWebPage::MoveToNextLine); - handled = true; - } else if(ev == QKeySequence::MoveToPreviousLine) { - q->triggerAction(QWebPage::MoveToPreviousLine); - handled = true; -// } else if(ev == QKeySequence::MoveToNextPage) { -// } else if(ev == QKeySequence::MoveToPreviousPage) { - } else if(ev == QKeySequence::MoveToStartOfLine) { - q->triggerAction(QWebPage::MoveToStartOfLine); - handled = true; - } else if(ev == QKeySequence::MoveToEndOfLine) { - q->triggerAction(QWebPage::MoveToEndOfLine); - handled = true; - } else if(ev == QKeySequence::MoveToStartOfBlock) { - q->triggerAction(QWebPage::MoveToStartOfBlock); - handled = true; - } else if(ev == QKeySequence::MoveToEndOfBlock) { - q->triggerAction(QWebPage::MoveToEndOfBlock); - handled = true; - } else if(ev == QKeySequence::MoveToStartOfDocument) { - q->triggerAction(QWebPage::MoveToStartOfDocument); - handled = true; - } else if(ev == QKeySequence::MoveToEndOfDocument) { - q->triggerAction(QWebPage::MoveToEndOfDocument); - handled = true; - } else if(ev == QKeySequence::SelectNextChar) { - q->triggerAction(QWebPage::SelectNextChar); - handled = true; - } else if(ev == QKeySequence::SelectPreviousChar) { - q->triggerAction(QWebPage::SelectPreviousChar); - handled = true; - } else if(ev == QKeySequence::SelectNextWord) { - q->triggerAction(QWebPage::SelectNextWord); - handled = true; - } else if(ev == QKeySequence::SelectPreviousWord) { - q->triggerAction(QWebPage::SelectPreviousWord); - handled = true; - } else if(ev == QKeySequence::SelectNextLine) { - q->triggerAction(QWebPage::SelectNextLine); - handled = true; - } else if(ev == QKeySequence::SelectPreviousLine) { - q->triggerAction(QWebPage::SelectPreviousLine); - handled = true; -// } else if(ev == QKeySequence::SelectNextPage) { -// } else if(ev == QKeySequence::SelectPreviousPage) { - } else if(ev == QKeySequence::SelectStartOfLine) { - q->triggerAction(QWebPage::SelectStartOfLine); - handled = true; - } else if(ev == QKeySequence::SelectEndOfLine) { - q->triggerAction(QWebPage::SelectEndOfLine); - handled = true; - } else if(ev == QKeySequence::SelectStartOfBlock) { - q->triggerAction(QWebPage::SelectStartOfBlock); - handled = true; - } else if(ev == QKeySequence::SelectEndOfBlock) { - q->triggerAction(QWebPage::SelectEndOfBlock); - handled = true; - } else if(ev == QKeySequence::SelectStartOfDocument) { - q->triggerAction(QWebPage::SelectStartOfDocument); - handled = true; - } else if(ev == QKeySequence::SelectEndOfDocument) { - q->triggerAction(QWebPage::SelectEndOfDocument); - handled = true; - } else if(ev == QKeySequence::DeleteStartOfWord) { - q->triggerAction(QWebPage::DeleteStartOfWord); - handled = true; - } else if(ev == QKeySequence::DeleteEndOfWord) { - q->triggerAction(QWebPage::DeleteEndOfWord); - handled = true; -// } else if(ev == QKeySequence::DeleteEndOfLine) { - } - } - if (!handled) - handled = frame->d->eventHandler->keyEvent(ev); - if (!handled) { - handled = true; - PlatformScrollbar *h, *v; - h = mainFrame->d->horizontalScrollBar(); - v = mainFrame->d->verticalScrollBar(); + case OpenImageInNewWindow: + text = contextMenuItemTagOpenImageInNewWindow(); + break; + case DownloadImageToDisk: + text = contextMenuItemTagDownloadImageToDisk(); + break; + case CopyImageToClipboard: + text = contextMenuItemTagCopyImageToClipboard(); + break; - if (ev == QKeySequence::MoveToNextPage) { - if (v) - v->setValue(v->value() + q->viewportSize().height()); - } else if (ev == QKeySequence::MoveToPreviousPage) { - if (v) - v->setValue(v->value() - q->viewportSize().height()); - } else { - switch (ev->key()) { - case Qt::Key_Up: - if (v) - v->setValue(v->value() - 10); - break; - case Qt::Key_Down: - if (v) - v->setValue(v->value() + 10); - break; - case Qt::Key_Left: - if (h) - h->setValue(h->value() - 10); - break; - case Qt::Key_Right: - if (h) - h->setValue(h->value() + 10); - break; - default: - handled = false; - break; - } + case GoBack: + text = contextMenuItemTagGoBack(); + break; + case GoForward: + text = contextMenuItemTagGoForward(); + break; + case Stop: + text = contextMenuItemTagStop(); + break; + case Reload: + text = contextMenuItemTagReload(); + break; + + case Cut: + text = contextMenuItemTagCut(); + break; + case Copy: + text = contextMenuItemTagCopy(); + break; + case Paste: + text = contextMenuItemTagPaste(); + break; + + case Undo: { + QAction *a = undoStack()->createUndoAction(d->q); + d->actions[action] = a; + return a; } - } + case Redo: { + QAction *a = undoStack()->createRedoAction(d->q); + d->actions[action] = a; + return a; + } + case MoveToNextChar: + case MoveToPreviousChar: + case MoveToNextWord: + case MoveToPreviousWord: + case MoveToNextLine: + case MoveToPreviousLine: + case MoveToStartOfLine: + case MoveToEndOfLine: + case MoveToStartOfBlock: + case MoveToEndOfBlock: + case MoveToStartOfDocument: + case MoveToEndOfDocument: + case SelectNextChar: + case SelectPreviousChar: + case SelectNextWord: + case SelectPreviousWord: + case SelectNextLine: + case SelectPreviousLine: + case SelectStartOfLine: + case SelectEndOfLine: + case SelectStartOfBlock: + case SelectEndOfBlock: + case SelectStartOfDocument: + case SelectEndOfDocument: + case DeleteStartOfWord: + case DeleteEndOfWord: + break; // #### - ev->setAccepted(handled); -} + case SetTextDirectionDefault: + text = contextMenuItemTagDefaultDirection(); + break; + case SetTextDirectionLeftToRight: + text = contextMenuItemTagLeftToRight(); + checkable = true; + break; + case SetTextDirectionRightToLeft: + text = contextMenuItemTagRightToLeft(); + checkable = true; + break; -void QWebPagePrivate::keyReleaseEvent(QKeyEvent *ev) -{ - if (ev->isAutoRepeat()) { - ev->setAccepted(true); - return; + case ToggleBold: + text = contextMenuItemTagBold(); + checkable = true; + break; + case ToggleItalic: + text = contextMenuItemTagItalic(); + checkable = true; + break; + case ToggleUnderline: + text = contextMenuItemTagUnderline(); + checkable = true; + break; + + case InspectElement: + text = contextMenuItemTagInspectElement(); + break; + + case NoWebAction: + return 0; } - if (!mainFrame->d->eventHandler) - return; + if (text.isEmpty()) + return 0; - bool handled = mainFrame->d->eventHandler->keyEvent(ev); - ev->setAccepted(handled); -} + QAction *a = new QAction(d->q); + a->setText(text); + a->setData(action); + a->setCheckable(checkable); -void QWebPagePrivate::focusInEvent(QFocusEvent *ev) -{ - if (ev->reason() != Qt::PopupFocusReason) - mainFrame->d->frame->page()->focusController()->setFocusedFrame(mainFrame->d->frame); -} + connect(a, SIGNAL(triggered(bool)), + this, SLOT(_q_webActionTriggered(bool))); -void QWebPagePrivate::focusOutEvent(QFocusEvent *ev) -{ - if (ev->reason() != Qt::PopupFocusReason) { - mainFrame->d->frame->selectionController()->clear(); - mainFrame->d->frame->setIsActive(false); - } + d->actions[action] = a; + d->updateAction(action); + return a; } -bool QWebPage::focusNextPrevChild(bool next) +/*! + Returns true if the page contains unsubmitted form data. +*/ +bool QWebPage::isModified() const { - Q_UNUSED(next) - return false; + return d->modified; } -void QWebPagePrivate::dragEnterEvent(QDragEnterEvent *ev) -{ -#ifndef QT_NO_DRAGANDDROP - DragData dragData(ev->mimeData(), ev->pos(), QCursor::pos(), - dropActionToDragOp(ev->possibleActions())); - Qt::DropAction action = dragOpToDropAction(page->dragController()->dragEntered(&dragData)); - ev->setDropAction(action); - ev->accept(); -#endif -} -void QWebPagePrivate::dragLeaveEvent(QDragLeaveEvent *ev) +QUndoStack *QWebPage::undoStack() const { -#ifndef QT_NO_DRAGANDDROP - DragData dragData(0, IntPoint(), QCursor::pos(), DragOperationNone); - page->dragController()->dragExited(&dragData); - ev->accept(); -#endif + if (!d->undoStack) + d->undoStack = new QUndoStack(const_cast(this)); + + return d->undoStack; } -void QWebPagePrivate::dragMoveEvent(QDragMoveEvent *ev) +/*! \reimp +*/ +bool QWebPage::event(QEvent *ev) { -#ifndef QT_NO_DRAGANDDROP - DragData dragData(ev->mimeData(), ev->pos(), QCursor::pos(), - dropActionToDragOp(ev->possibleActions())); - Qt::DropAction action = dragOpToDropAction(page->dragController()->dragUpdated(&dragData)); - ev->setDropAction(action); - ev->accept(); -#endif + switch (ev->type()) { + case QEvent::MouseMove: + d->mouseMoveEvent(static_cast(ev)); + break; + case QEvent::MouseButtonPress: + d->mousePressEvent(static_cast(ev)); + break; + case QEvent::MouseButtonDblClick: + d->mouseDoubleClickEvent(static_cast(ev)); + break; + case QEvent::MouseButtonRelease: + d->mouseReleaseEvent(static_cast(ev)); + break; + case QEvent::ContextMenu: + d->contextMenuEvent(static_cast(ev)); + break; + case QEvent::Wheel: + d->wheelEvent(static_cast(ev)); + break; + case QEvent::KeyPress: + d->keyPressEvent(static_cast(ev)); + break; + case QEvent::KeyRelease: + d->keyReleaseEvent(static_cast(ev)); + break; + case QEvent::FocusIn: + d->focusInEvent(static_cast(ev)); + break; + case QEvent::FocusOut: + d->focusOutEvent(static_cast(ev)); + break; + case QEvent::DragEnter: + d->dragEnterEvent(static_cast(ev)); + break; + case QEvent::DragLeave: + d->dragLeaveEvent(static_cast(ev)); + break; + case QEvent::DragMove: + d->dragMoveEvent(static_cast(ev)); + break; + case QEvent::Drop: + d->dropEvent(static_cast(ev)); + break; + default: + return QObject::event(ev); + } + + return true; } -void QWebPagePrivate::dropEvent(QDropEvent *ev) +bool QWebPage::focusNextPrevChild(bool next) { -#ifndef QT_NO_DRAGANDDROP - DragData dragData(ev->mimeData(), ev->pos(), QCursor::pos(), - dropActionToDragOp(ev->possibleActions())); - Qt::DropAction action = dragOpToDropAction(page->dragController()->performDrag(&dragData)); - ev->accept(); -#endif + Q_UNUSED(next) + return false; } void QWebPage::setNetworkInterface(QWebNetworkInterface *interface) diff --git a/WebKit/qt/ChangeLog b/WebKit/qt/ChangeLog index 5e42c1e91be5..23281036262b 100644 --- a/WebKit/qt/ChangeLog +++ b/WebKit/qt/ChangeLog @@ -1,3 +1,28 @@ +2008-01-07 Holger Hans Peter Freyther + + Reviewed by Simon. + + * Move the QWebPagePrivate methods up to the other private ones + + * Api/qwebpage.cpp: + (dropActionToDragOp): + (dragOpToDropAction): + (QWebPagePrivate::mouseMoveEvent): + (QWebPagePrivate::mousePressEvent): + (QWebPagePrivate::mouseDoubleClickEvent): + (QWebPagePrivate::mouseReleaseEvent): + (QWebPagePrivate::contextMenuEvent): + (QWebPagePrivate::wheelEvent): + (QWebPagePrivate::keyPressEvent): + (QWebPagePrivate::keyReleaseEvent): + (QWebPagePrivate::focusInEvent): + (QWebPagePrivate::focusOutEvent): + (QWebPagePrivate::dragEnterEvent): + (QWebPagePrivate::dragLeaveEvent): + (QWebPagePrivate::dragMoveEvent): + (QWebPagePrivate::dropEvent): + (QWebPage::focusNextPrevChild): + 2008-01-07 Holger Hans Peter Freyther Reviewed by Simon.