Changeset 122321 in webkit
- Timestamp:
- Jul 11, 2012 2:49:25 AM (12 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 2 added
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r122318 r122321 1 2012-07-11 Andras Becsi <andras.becsi@nokia.com> 2 3 [Qt][WK2] Fix wheel scrolling for simple pages 4 https://bugs.webkit.org/show_bug.cgi?id=90793 5 6 Reviewed by Kenneth Rohde Christiansen. 7 8 Call WebPage::setFixedLayoutSize in setResizesToContentsUsingLayoutSize 9 instead of setting the view size manually and scheduling a relayout. 10 Since setFixedLayoutSize forces a relayout it also updates the scrollbars 11 after the visible rect is available. 12 This fixes scrolling with wheel events for a QML WebView loading a simple 13 local page which previously ended up in a state where scrolling was disabled 14 because the scrollbar update happened before the correct visible rect size was 15 available. 16 17 Add a QML test and infrastructure to QWebKitTest to cover this case. 18 19 * UIProcess/API/qt/qwebkittest.cpp: 20 (QWebKitTest::wheelEvent): 21 * UIProcess/API/qt/qwebkittest_p.h: 22 * UIProcess/API/qt/tests/qmltests/WebView/tst_wheelEventHandling.qml: Added. 23 * UIProcess/API/qt/tests/qmltests/common/test4.html: Added. 24 * WebProcess/WebPage/WebPage.cpp: 25 (WebKit::WebPage::setResizesToContentsUsingLayoutSize): 26 1 27 2012-07-11 Andras Becsi <andras.becsi@nokia.com> 2 28 -
trunk/Source/WebKit2/UIProcess/API/qt/qwebkittest.cpp
r121967 r122321 26 26 #include <QMutableListIterator> 27 27 #include <QTouchEvent> 28 #include <QWheelEvent> 28 29 #include <qpa/qwindowsysteminterface.h> 29 30 … … 114 115 } 115 116 117 bool QWebKitTest::wheelEvent(QObject* item, qreal x, qreal y, int delta, Qt::Orientation orient) 118 { 119 QQuickWebView* window = qobject_cast<QQuickWebView*>(item); 120 121 if (!window) { 122 qWarning("Wheel event not accepted by receiving item"); 123 return false; 124 } 125 126 QWheelEvent event(QPointF(x, y), delta, Qt::NoButton, Qt::NoModifier, orient); 127 event.setTimestamp(QDateTime::currentMSecsSinceEpoch()); 128 event.setAccepted(false); 129 130 window->wheelEvent(&event); 131 132 return event.isAccepted(); 133 } 134 116 135 QSize QWebKitTest::contentsSize() const 117 136 { -
trunk/Source/WebKit2/UIProcess/API/qt/qwebkittest_p.h
r118758 r122321 57 57 bool touchTap(QObject* item, qreal x, qreal y, int delay = -1); 58 58 bool touchDoubleTap(QObject* item, qreal x, qreal y, int delay = -1); 59 bool wheelEvent(QObject* item, qreal x, qreal y, int delta, Qt::Orientation orient = Qt::Vertical); 59 60 60 61 public: -
trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp
r122280 r122321 876 876 return; 877 877 878 // Always reset even when empty.879 view->setFixedLayoutSize(targetLayoutSize);880 881 878 m_page->settings()->setAcceleratedCompositingForFixedPositionEnabled(true); 882 879 m_page->settings()->setFixedElementsLayoutRelativeToFrame(true); 883 880 m_page->settings()->setFixedPositionCreatesStackingContext(true); 884 881 885 // Schedule a layout to use the new target size. 886 if (!view->layoutPending()) { 887 view->setNeedsLayout(); 888 view->scheduleRelayout(); 889 } 882 // Always reset even when empty. This also takes care of the relayout. 883 setFixedLayoutSize(targetLayoutSize); 890 884 } 891 885 … … 1088 1082 view->setUseFixedLayout(fixed); 1089 1083 if (!fixed) 1090 view->setFixedLayoutSize(IntSize());1084 setFixedLayoutSize(IntSize()); 1091 1085 } 1092 1086
Note: See TracChangeset
for help on using the changeset viewer.