diff options
Diffstat (limited to 'src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.cpp')
-rw-r--r-- | src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.cpp | 78 |
1 files changed, 53 insertions, 25 deletions
diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.cpp index b11890d..7e485a0 100644 --- a/src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.cpp +++ b/src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.cpp @@ -1,5 +1,6 @@ /* Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies) + Copyright (C) 2009 Girish Ramakrishnan <girish@forwardbias.in> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -49,11 +50,16 @@ public: virtual void setInputMethodHint(Qt::InputMethodHint hint, bool enable); #endif +#ifndef QT_NO_CURSOR virtual QCursor cursor() const; virtual void updateCursor(const QCursor& cursor); +#endif + virtual QPalette palette() const; virtual int screenNumber() const; - virtual WId winId() const; + virtual QWidget* ownerWidget() const; + + virtual QObject* pluginParent() const; void _q_doLoadProgress(int progress); void _q_doLoadFinished(bool success); @@ -83,10 +89,7 @@ void QGraphicsWebViewPrivate::_q_doLoadFinished(bool success) if (q->title().isEmpty()) emit q->urlChanged(q->url()); - if (success) - emit q->loadFinished(); - else - emit q->loadFailed(); + emit q->loadFinished(success); } void QGraphicsWebViewPrivate::scroll(int dx, int dy, const QRect& rectToScroll) @@ -99,11 +102,11 @@ void QGraphicsWebViewPrivate::update(const QRect & dirtyRect) q->update(QRectF(dirtyRect)); } + void QGraphicsWebViewPrivate::setInputMethodEnabled(bool enable) { q->setAttribute(Qt::WA_InputMethodEnabled, enable); } - #if QT_VERSION >= 0x040600 void QGraphicsWebViewPrivate::setInputMethodHint(Qt::InputMethodHint hint, bool enable) { @@ -113,7 +116,7 @@ void QGraphicsWebViewPrivate::setInputMethodHint(Qt::InputMethodHint hint, bool q->setInputMethodHints(q->inputMethodHints() & ~hint); } #endif - +#ifndef QT_NO_CURSOR QCursor QGraphicsWebViewPrivate::cursor() const { return q->cursor(); @@ -123,6 +126,12 @@ void QGraphicsWebViewPrivate::updateCursor(const QCursor& cursor) { q->setCursor(cursor); } +#endif + +QPalette QGraphicsWebViewPrivate::palette() const +{ + return q->palette(); +} int QGraphicsWebViewPrivate::screenNumber() const { @@ -136,14 +145,15 @@ int QGraphicsWebViewPrivate::screenNumber() const return 0; } -WId QGraphicsWebViewPrivate::winId() const +QWidget* QGraphicsWebViewPrivate::ownerWidget() const { const QList<QGraphicsView*> views = q->scene()->views(); + return views.value(0); +} - if (!views.isEmpty()) - return views.at(0)->winId(); - - return 0; +QObject* QGraphicsWebViewPrivate::pluginParent() const +{ + return q; } void QGraphicsWebViewPrivate::_q_setStatusBarMessage(const QString& s) @@ -185,8 +195,10 @@ QGraphicsWebView::QGraphicsWebView(QGraphicsItem* parent) */ QGraphicsWebView::~QGraphicsWebView() { - if (d->page) + if (d->page) { d->page->d->view = 0; + d->page->d->client = 0; // unset the page client + } if (d->page && d->page->parent() == this) delete d->page; @@ -239,21 +251,38 @@ bool QGraphicsWebView::event(QEvent* event) // Re-implemented in order to allows fixing event-related bugs in patch releases. if (d->page) { +#ifndef QT_NO_CONTEXTMENU + if (event->type() == QEvent::GraphicsSceneContextMenu) { + if (!isEnabled()) + return false; + + QGraphicsSceneContextMenuEvent* ev = static_cast<QGraphicsSceneContextMenuEvent*>(event); + QContextMenuEvent fakeEvent(QContextMenuEvent::Reason(ev->reason()), ev->pos().toPoint()); + if (d->page->swallowContextMenuEvent(&fakeEvent)) { + event->accept(); + return true; + } + d->page->updatePositionDependentActions(fakeEvent.pos()); + } else +#endif // QT_NO_CONTEXTMENU + { #ifndef QT_NO_CURSOR #if QT_VERSION >= 0x040400 - } else if (event->type() == QEvent::CursorChange) { - // An unsetCursor will set the cursor to Qt::ArrowCursor. - // Thus this cursor change might be a QWidget::unsetCursor() - // If this is not the case and it came from WebCore, the - // QWebPageClient already has set its cursor internally - // to Qt::ArrowCursor, so updating the cursor is always - // right, as it falls back to the last cursor set by - // WebCore. - // FIXME: Add a QEvent::CursorUnset or similar to Qt. - if (cursor().shape() == Qt::ArrowCursor) - d->resetCursor(); + if (event->type() == QEvent::CursorChange) { + // An unsetCursor will set the cursor to Qt::ArrowCursor. + // Thus this cursor change might be a QWidget::unsetCursor() + // If this is not the case and it came from WebCore, the + // QWebPageClient already has set its cursor internally + // to Qt::ArrowCursor, so updating the cursor is always + // right, as it falls back to the last cursor set by + // WebCore. + // FIXME: Add a QEvent::CursorUnset or similar to Qt. + if (cursor().shape() == Qt::ArrowCursor) + d->resetCursor(); + } #endif #endif + } } return QGraphicsWidget::event(event); } @@ -608,7 +637,6 @@ void QGraphicsWebView::hoverMoveEvent(QGraphicsSceneHoverEvent* ev) QMouseEvent me = QMouseEvent(QEvent::MouseMove, ev->pos().toPoint(), Qt::NoButton, Qt::NoButton, Qt::NoModifier); - d->page->setView(ev->widget()); d->page->event(&me); ev->setAccepted(accepted); } |