summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/webkit/WebKit/qt
diff options
context:
space:
mode:
Diffstat (limited to 'src/3rdparty/webkit/WebKit/qt')
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.cpp9
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.h1
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebframe.cpp36
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp4
-rw-r--r--src/3rdparty/webkit/WebKit/qt/ChangeLog84
-rw-r--r--src/3rdparty/webkit/WebKit/qt/symbian/eabi/QtWebKitu.def4
-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/benchmarks/painting/tst_painting.cpp27
-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp67
-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp20
9 files changed, 162 insertions, 90 deletions
diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.cpp
index a80c5d3..490ada1 100644
--- a/src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.cpp
@@ -65,6 +65,7 @@ public:
void _q_doLoadFinished(bool success);
void _q_updateMicroFocus();
+ void _q_pageDestroyed();
QGraphicsWebView* q;
QWebPage* page;
@@ -97,6 +98,12 @@ void QGraphicsWebViewPrivate::_q_updateMicroFocus()
#endif
}
+void QGraphicsWebViewPrivate::_q_pageDestroyed()
+{
+ page = 0;
+ q->setPage(0);
+}
+
void QGraphicsWebViewPrivate::scroll(int dx, int dy, const QRect& rectToScroll)
{
q->scroll(qreal(dx), qreal(dy), QRectF(rectToScroll));
@@ -454,6 +461,8 @@ void QGraphicsWebView::setPage(QWebPage* page)
this, SIGNAL(linkClicked(QUrl)));
connect(d->page, SIGNAL(microFocusChanged()),
this, SLOT(_q_updateMicroFocus()));
+ connect(d->page, SIGNAL(destroyed()),
+ this, SLOT(_q_pageDestroyed()));
}
/*!
diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.h b/src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.h
index f983ae4..1b02f35 100644
--- a/src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.h
+++ b/src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.h
@@ -135,6 +135,7 @@ protected:
private:
Q_PRIVATE_SLOT(d, void _q_doLoadFinished(bool success))
Q_PRIVATE_SLOT(d, void _q_updateMicroFocus())
+ Q_PRIVATE_SLOT(d, void _q_pageDestroyed())
QGraphicsWebViewPrivate* const d;
friend class QGraphicsWebViewPrivate;
diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebframe.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebframe.cpp
index e4c2afc..710e11b 100644
--- a/src/3rdparty/webkit/WebKit/qt/Api/qwebframe.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebframe.cpp
@@ -324,15 +324,12 @@ void QWebFramePrivate::renderPrivate(QPainter *painter, QWebFrame::RenderLayer l
}
}
-static bool webframe_scrollOverflow(WebCore::Frame* frame, int dx, int dy)
+static bool webframe_scrollOverflow(WebCore::Frame* frame, int dx, int dy, const QPoint& pos)
{
if (!frame || !frame->document() || !frame->eventHandler())
return false;
- Node* node = frame->document()->focusedNode();
- if (!node)
- node = frame->document()->elementFromPoint(frame->eventHandler()->currentMousePosition().x(),
- frame->eventHandler()->currentMousePosition().y());
+ Node* node = frame->document()->elementFromPoint(pos.x(), pos.y());
if (!node)
return false;
@@ -363,6 +360,10 @@ static bool webframe_scrollOverflow(WebCore::Frame* frame, int dx, int dy)
return (scrolledHorizontal || scrolledVertical);
}
+
+
+
+
/*!
\class QWebFrame
\since 4.4
@@ -1047,27 +1048,24 @@ void QWebFrame::scroll(int dx, int dy)
}
/*!
- \since 4.7
\internal
Scrolls nested frames starting at this frame, \a dx pixels to the right
and \a dy pixels downward. Both \a dx and \a dy may be negative. First attempts
- to scroll elements with CSS overflow followed by this frame. If this
+ to scroll elements with CSS overflow at position pos, followed by this frame. If this
frame doesn't scroll, attempts to scroll the parent
-
- \sa QWebFrame::scroll
*/
-bool QWEBKIT_EXPORT qtwebkit_webframe_scrollRecursively(QWebFrame* qFrame, int dx, int dy)
+void QWEBKIT_EXPORT qtwebkit_webframe_scrollRecursively(QWebFrame* qFrame, int dx, int dy, const QPoint& pos)
{
Frame* frame = QWebFramePrivate::core(qFrame);
- bool scrolledHorizontal = false;
- bool scrolledVertical = false;
- bool scrolledOverflow = webframe_scrollOverflow(frame, dx, dy);
-
- if (!scrolledOverflow) {
- if (!frame || !frame->view())
- return false;
+ if (!frame || !frame->view())
+ return;
+
+ if (!webframe_scrollOverflow(frame, dx, dy, pos)) {
do {
+ bool scrolledHorizontal = false;
+ bool scrolledVertical = false;
+
IntSize scrollOffset = frame->view()->scrollOffset();
IntPoint maxScrollOffset = frame->view()->maximumScrollPosition();
@@ -1083,12 +1081,12 @@ bool QWEBKIT_EXPORT qtwebkit_webframe_scrollRecursively(QWebFrame* qFrame, int d
if (scrolledHorizontal || scrolledVertical) {
frame->view()->scrollBy(IntSize(dx, dy));
- return true;
+ return;
}
+
frame = frame->tree()->parent();
} while (frame && frame->view());
}
- return (scrolledHorizontal || scrolledVertical || scrolledOverflow);
}
/*!
diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp
index a289ec0..97a4e4e 100644
--- a/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp
@@ -1248,8 +1248,8 @@ void QWebPagePrivate::inputMethodEvent(QInputMethodEvent *ev)
#if QT_VERSION >= 0x040600
case QInputMethodEvent::Selection: {
if (renderTextControl) {
- renderTextControl->setSelectionStart(a.start);
- renderTextControl->setSelectionEnd(a.start + a.length);
+ renderTextControl->setSelectionStart(qMin(a.start, (a.start + a.length)));
+ renderTextControl->setSelectionEnd(qMax(a.start, (a.start + a.length)));
}
break;
}
diff --git a/src/3rdparty/webkit/WebKit/qt/ChangeLog b/src/3rdparty/webkit/WebKit/qt/ChangeLog
index a5441cd..64726c2 100644
--- a/src/3rdparty/webkit/WebKit/qt/ChangeLog
+++ b/src/3rdparty/webkit/WebKit/qt/ChangeLog
@@ -1,3 +1,87 @@
+2010-03-22 Jakub Wieczorek <jwieczorek@webkit.org>
+
+ Reviewed by Simon Hausmann.
+
+ [Qt] Don't construct a QLineEdit every time when painting a text field
+ https://bugs.webkit.org/show_bug.cgi?id=36373
+
+ Add a simple benchmark covering this area.
+
+ * tests/benchmarks/painting/tst_painting.cpp:
+ (tst_Painting::textAreas):
+
+2010-03-22 Yi Shen <shenyi2006@gmail.com>
+
+ Reviewed by Simon Hausmann.
+
+ https://bugs.webkit.org/show_bug.cgi?id=35933
+ [Qt] [Symbian] Can not backward select (highlight) text using virtual keyboard
+ Make sure the selection start index is smaller than the selection end index.
+
+ * Api/qwebpage.cpp:
+ (QWebPagePrivate::inputMethodEvent):
+ * tests/qwebpage/tst_qwebpage.cpp:
+ (tst_QWebPage::inputMethods):
+
+2010-03-25 Yael Aharon <yael.aharon@nokia.com>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ [Qt] QtLauncher crashes on Mac OS and Linux when exiting with QGraphicsView mode enabled
+ https://bugs.webkit.org/show_bug.cgi?id=35251
+
+ Followed the way QWebView registers for the signal QWebPage::destroyed(), to prevent
+ QGraphicsWebView from referencing QWebPage after it was deleted.
+
+ * Api/qgraphicswebview.cpp:
+ (QGraphicsWebViewPrivate::_q_pageDestroyed):
+ (QGraphicsWebView::setPage):
+ * Api/qgraphicswebview.h:
+
+2010-03-23 David Leong <david.leong@nokia.com>
+
+ Reviewed by Laszlo Gombos.
+
+ Build fix for Symbian Def file.
+
+ * symbian/eabi/QtWebKitu.def:
+
+2010-03-18 Joe Ligman <joseph.ligman@nokia.com>
+
+ Reviewed by Simon Hausmann.
+
+ [Qt] New API scrollRecursively has several problems.
+ https://bugs.webkit.org/show_bug.cgi?id=35873
+
+ Remove scrollRecursively from the Qt 4.7 API
+ Update the internal API to accept a hit test position
+ for nested scrolling
+
+ * Api/qwebframe.cpp:
+ (webframe_scrollOverflow):
+ (qtwebkit_webframe_scrollRecursively):
+ * Api/qwebframe.h:
+ * Api/qwebframe_p.h:
+ * tests/qwebframe/tst_qwebframe.cpp:
+
+2009-12-18 Joe Ligman <joseph.ligman@nokia.com>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ [Qt] Add new API to QWebFrame to scrollRecursively starting with any css overflow
+ then checking current frame and then ancestors
+ https://bugs.webkit.org/show_bug.cgi?id=32668
+
+ * Api/qwebframe.cpp:
+ (QWebFramePrivate::scrollOverflow):
+ (QWebFrame::scrollRecursively):
+ * Api/qwebframe.h:
+ * Api/qwebframe_p.h:
+ * tests/qwebframe/qwebframe.qrc:
+ * tests/qwebframe/testiframe.html: Added.
+ * tests/qwebframe/testiframe2.html: Added.
+ * tests/qwebframe/tst_qwebframe.cpp:
+
2010-03-21 Kristian Amlie <kristian.amlie@nokia.com>
Reviewed by Simon Hausmann.
diff --git a/src/3rdparty/webkit/WebKit/qt/symbian/eabi/QtWebKitu.def b/src/3rdparty/webkit/WebKit/qt/symbian/eabi/QtWebKitu.def
index 5dd2e20..cfa8f7f 100644
--- a/src/3rdparty/webkit/WebKit/qt/symbian/eabi/QtWebKitu.def
+++ b/src/3rdparty/webkit/WebKit/qt/symbian/eabi/QtWebKitu.def
@@ -693,5 +693,5 @@ EXPORTS
_Z23qt_networkAccessAllowedb @ 692 NONAME
_Z25qt_resumeActiveDOMObjectsP9QWebFrame @ 693 NONAME
_Z26qt_suspendActiveDOMObjectsP9QWebFrame @ 694 NONAME
- _Z35qtwebkit_webframe_scrollRecursivelyP9QWebFrameii @ 695 NONAME
-
+ _Z35qtwebkit_webframe_scrollRecursivelyP9QWebFrameii @ 695 NONAME ABSENT
+ _Z35qtwebkit_webframe_scrollRecursivelyP9QWebFrameiiRK6QPoint @ 715 NONAME
diff --git a/src/3rdparty/webkit/WebKit/qt/tests/benchmarks/painting/tst_painting.cpp b/src/3rdparty/webkit/WebKit/qt/tests/benchmarks/painting/tst_painting.cpp
index f4531fd..fc5b8e3 100644
--- a/src/3rdparty/webkit/WebKit/qt/tests/benchmarks/painting/tst_painting.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/tests/benchmarks/painting/tst_painting.cpp
@@ -19,6 +19,7 @@
#include <QtTest/QtTest>
+#include <qwebelement.h>
#include <qwebframe.h>
#include <qwebview.h>
#include <qpainter.h>
@@ -59,6 +60,7 @@ public Q_SLOTS:
private Q_SLOTS:
void paint_data();
void paint();
+ void textAreas();
private:
QWebView* m_view;
@@ -105,5 +107,30 @@ void tst_Painting::paint()
}
}
+void tst_Painting::textAreas()
+{
+ m_view->load(QUrl("data:text/html;<html><body></body></html>"));
+ ::waitForSignal(m_view, SIGNAL(loadFinished(bool)));
+
+ QWebElement bodyElement = m_page->mainFrame()->findFirstElement("body");
+
+ int count = 100;
+ while (count--) {
+ QString markup("<textarea cols='1' rows='1'></textarea>");
+ bodyElement.appendInside(markup);
+ }
+
+ /* force a layout */
+ QWebFrame* mainFrame = m_page->mainFrame();
+ mainFrame->toPlainText();
+
+ QPixmap pixmap(mainFrame->contentsSize());
+ QBENCHMARK {
+ QPainter painter(&pixmap);
+ mainFrame->render(&painter, QRect(QPoint(0, 0), mainFrame->contentsSize()));
+ painter.end();
+ }
+}
+
QTEST_MAIN(tst_Painting)
#include "tst_painting.moc"
diff --git a/src/3rdparty/webkit/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp b/src/3rdparty/webkit/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp
index 609f8b4..8cc7953 100644
--- a/src/3rdparty/webkit/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp
@@ -606,7 +606,6 @@ private slots:
void scrollPosition();
void evaluateWillCauseRepaint();
void qObjectWrapperWithSameIdentity();
- void scrollRecursively();
private:
QString evalJS(const QString&s) {
@@ -2825,71 +2824,5 @@ void tst_QWebFrame::qObjectWrapperWithSameIdentity()
QCOMPARE(mainFrame->toPlainText(), QString("test2"));
}
-bool QWEBKIT_EXPORT qtwebkit_webframe_scrollRecursively(QWebFrame* qFrame, int dx, int dy);
-
-void tst_QWebFrame::scrollRecursively()
-{
- // The test content is
- // a nested frame set
- // The main frame scrolls
- // and has two children
- // an iframe and a div overflow
- // both scroll
- QWebView webView;
- QWebPage* webPage = webView.page();
- QSignalSpy loadSpy(webPage, SIGNAL(loadFinished(bool)));
- QUrl url = QUrl("qrc:///testiframe.html");
- webPage->mainFrame()->load(url);
- QTRY_COMPARE(loadSpy.count(), 1);
-
- QList<QWebFrame*> children = webPage->mainFrame()->childFrames();
- QVERIFY(children.count() == 1);
-
- // 1st test
- // call scrollRecursively over mainframe
- // verify scrolled
- // verify scroll postion changed
- QPoint scrollPosition(webPage->mainFrame()->scrollPosition());
- QVERIFY(qtwebkit_webframe_scrollRecursively(webPage->mainFrame(), 10, 10));
- QVERIFY(scrollPosition != webPage->mainFrame()->scrollPosition());
-
- // 2nd test
- // call scrollRecursively over child iframe
- // verify scrolled
- // verify child scroll position changed
- // verify parent's scroll position did not change
- scrollPosition = webPage->mainFrame()->scrollPosition();
- QPoint childScrollPosition = children.at(0)->scrollPosition();
- QVERIFY(qtwebkit_webframe_scrollRecursively(children.at(0), 10, 10));
- QVERIFY(scrollPosition == webPage->mainFrame()->scrollPosition());
- QVERIFY(childScrollPosition != children.at(0)->scrollPosition());
-
- // 3rd test
- // call scrollRecursively over div overflow
- // verify scrolled == true
- // verify parent and child frame's scroll postion did not change
- QWebElement div = webPage->mainFrame()->documentElement().findFirst("#content1");
- QMouseEvent evpres(QEvent::MouseMove, div.geometry().center(), Qt::NoButton, Qt::NoButton, Qt::NoModifier);
- webPage->event(&evpres);
- scrollPosition = webPage->mainFrame()->scrollPosition();
- childScrollPosition = children.at(0)->scrollPosition();
- QVERIFY(qtwebkit_webframe_scrollRecursively(webPage->mainFrame(), 5, 5));
- QVERIFY(childScrollPosition == children.at(0)->scrollPosition());
- QVERIFY(scrollPosition == webPage->mainFrame()->scrollPosition());
-
- // 4th test
- // call scrollRecursively twice over childs iframe
- // verify scrolled == true first time
- // verify parent's scroll == true second time
- // verify parent and childs scroll position changed
- childScrollPosition = children.at(0)->scrollPosition();
- QVERIFY(qtwebkit_webframe_scrollRecursively(children.at(0), -10, -10));
- QVERIFY(childScrollPosition != children.at(0)->scrollPosition());
- scrollPosition = webPage->mainFrame()->scrollPosition();
- QVERIFY(qtwebkit_webframe_scrollRecursively(children.at(0), -10, -10));
- QVERIFY(scrollPosition != webPage->mainFrame()->scrollPosition());
-
-}
-
QTEST_MAIN(tst_QWebFrame)
#include "tst_qwebframe.moc"
diff --git a/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp b/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp
index 0e04acc..55ee42a 100644
--- a/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp
@@ -1451,6 +1451,26 @@ void tst_QWebPage::inputMethods()
variant = page->inputMethodQuery(Qt::ImCurrentSelection);
QString selectionValue = variant.value<QString>();
QCOMPARE(selectionValue, QString("eb"));
+
+ //Set selection with negative length
+ inputAttributes << QInputMethodEvent::Attribute(QInputMethodEvent::Selection, 6, -5, QVariant());
+ QInputMethodEvent eventSelection2("",inputAttributes);
+ page->event(&eventSelection2);
+
+ //ImAnchorPosition
+ variant = page->inputMethodQuery(Qt::ImAnchorPosition);
+ anchorPosition = variant.toInt();
+ QCOMPARE(anchorPosition, 1);
+
+ //ImCursorPosition
+ variant = page->inputMethodQuery(Qt::ImCursorPosition);
+ cursorPosition = variant.toInt();
+ QCOMPARE(cursorPosition, 6);
+
+ //ImCurrentSelection
+ variant = page->inputMethodQuery(Qt::ImCurrentSelection);
+ selectionValue = variant.value<QString>();
+ QCOMPARE(selectionValue, QString("tWebK"));
#endif
//ImSurroundingText