Changeset 54034 in webkit
- Timestamp:
- Jan 28, 2010, 5:49:18 PM (16 years ago)
- Location:
- trunk/WebKit/qt
- Files:
-
- 2 edited
-
Api/qwebview.cpp (modified) (2 diffs)
-
ChangeLog (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebKit/qt/Api/qwebview.cpp
r53618 r54034 59 59 } 60 60 61 #ifdef Q_WS_MAEMO_5 62 #include "qabstractkineticscroller.h" 63 64 class QWebViewKineticScroller : public QAbstractKineticScroller { 65 public: 66 QWebViewKineticScroller() : QAbstractKineticScroller() {} 67 // remember the frame where the button was pressed 68 bool eventFilter(QObject* o, QEvent* ev) 69 { 70 switch (ev->type()) { 71 case QEvent::MouseButtonPress: { 72 QWebFrame* hitFrame = scrollingFrameAt(static_cast<QMouseEvent*>(ev)->pos()); 73 if (hitFrame) 74 m_frame = hitFrame; 75 break; 76 } 77 default: 78 break; 79 } 80 return QAbstractKineticScroller::eventFilter(o, ev); 81 } 82 83 protected: 84 QWebFrame* currentFrame() const 85 { 86 if (!m_frame.isNull()) 87 return m_frame.data(); 88 89 QWebView* view = static_cast<QWebView*>(widget()); 90 QWebFrame* frame = view->page()->mainFrame(); 91 return frame; 92 } 93 94 // Returns the innermost frame at the given position that can scroll. 95 QWebFrame* scrollingFrameAt(const QPoint& pos) const 96 { 97 QWebView* view = static_cast<QWebView*>(widget()); 98 QWebFrame* mainFrame = view->page()->mainFrame(); 99 QWebFrame* hitFrame = mainFrame->hitTestContent(pos).frame(); 100 QSize range = hitFrame->contentsSize() - hitFrame->geometry().size(); 101 102 while (hitFrame && range.width() <= 1 && range.height() <= 1) 103 hitFrame = hitFrame->parentFrame(); 104 105 return hitFrame; 106 } 107 108 void attachToWidget() 109 { 110 QWebView* view = static_cast<QWebView*>(widget()); 111 QWebFrame* mainFrame = view->page()->mainFrame(); 112 m_oldHorizontalScrollBarPolicy = mainFrame->scrollBarPolicy(Qt::Horizontal); 113 m_oldVerticalScrollBarPolicy = mainFrame->scrollBarPolicy(Qt::Vertical); 114 mainFrame->setScrollBarPolicy(Qt::Vertical, Qt::ScrollBarAlwaysOff); 115 mainFrame->setScrollBarPolicy(Qt::Horizontal, Qt::ScrollBarAlwaysOff); 116 view->installEventFilter(this); 117 } 118 119 void removeFromWidget() 120 { 121 QWebView* view = static_cast<QWebView*>(widget()); 122 view->removeEventFilter(this); 123 QWebFrame* mainFrame = view->page()->mainFrame(); 124 mainFrame->setScrollBarPolicy(Qt::Vertical, m_oldVerticalScrollBarPolicy); 125 mainFrame->setScrollBarPolicy(Qt::Horizontal, m_oldHorizontalScrollBarPolicy); 126 } 127 128 QRect positionRange() const 129 { 130 QRect r; 131 QWebFrame* frame = currentFrame(); 132 r.setSize(frame->contentsSize() - frame->geometry().size()); 133 return r; 134 } 135 136 QPoint position() const 137 { 138 QWebFrame* frame = currentFrame(); 139 return frame->scrollPosition(); 140 } 141 142 QSize viewportSize() const 143 { 144 return static_cast<QWebView*>(widget())->page()->viewportSize(); 145 } 146 147 void setPosition(const QPoint& point, const QPoint& /* overShootDelta */) 148 { 149 QWebFrame* frame = currentFrame(); 150 frame->setScrollPosition(point); 151 } 152 153 QPointer<QWebFrame> m_frame; 154 Qt::ScrollBarPolicy m_oldVerticalScrollBarPolicy; 155 Qt::ScrollBarPolicy m_oldHorizontalScrollBarPolicy; 156 }; 157 158 #endif // Q_WS_MAEMO_5 159 160 61 161 /*! 62 162 \class QWebView … … 158 258 setAttribute(Qt::WA_AcceptTouchEvents); 159 259 #endif 160 260 #if defined(Q_WS_MAEMO_5) 261 QAbstractKineticScroller* scroller = new QWebViewKineticScroller(); 262 scroller->setWidget(this); 263 setProperty("kineticScroller", QVariant::fromValue(scroller)); 264 #endif 161 265 setAcceptDrops(true); 162 266 -
trunk/WebKit/qt/ChangeLog
r53999 r54034 1 2010-01-28 Andreas Kling <andreas.kling@nokia.com> 2 3 Reviewed by Kenneth Rohde Christiansen. 4 5 [Qt] Support kinetic scrolling on Maemo 5 6 7 https://bugs.webkit.org/show_bug.cgi?id=34267 8 9 Patch by Ralf Engels <ralf.engels@nokia.com> and 10 Robert Griebl <rgriebl@trolltech.com> 11 12 * Api/qwebview.cpp: 13 (QWebViewKineticScroller::QWebViewKineticScroller): 14 (QWebViewKineticScroller::eventFilter): 15 (QWebViewKineticScroller::currentFrame): 16 (QWebViewKineticScroller::scrollingFrameAt): 17 (QWebViewKineticScroller::attachToWidget): 18 (QWebViewKineticScroller::removeFromWidget): 19 (QWebViewKineticScroller::positionRange): 20 (QWebViewKineticScroller::position): 21 (QWebViewKineticScroller::viewportSize): 22 (QWebViewKineticScroller::setPosition): 23 (QWebView::QWebView): 24 1 25 2010-01-28 Kenneth Rohde Christiansen <kenneth@webkit.org> 2 26
Note:
See TracChangeset
for help on using the changeset viewer.