Changeset 769 for trunk/src/3rdparty/webkit/WebKit/qt/Api/qwebframe.cpp
- Timestamp:
- Aug 2, 2010, 9:27:30 PM (15 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
-
. (modified) (1 prop)
-
src/3rdparty/webkit/WebKit/qt/Api/qwebframe.cpp (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk
- Property svn:mergeinfo changed
/branches/vendor/nokia/qt/4.6.3 (added) merged: 768 /branches/vendor/nokia/qt/current merged: 767 /branches/vendor/nokia/qt/4.6.2 removed
- Property svn:mergeinfo changed
-
trunk/src/3rdparty/webkit/WebKit/qt/Api/qwebframe.cpp
r651 r769 325 325 } 326 326 327 static bool webframe_scrollOverflow(WebCore::Frame* frame, int dx, int dy) 328 { 329 if (!frame || !frame->document() || !frame->eventHandler()) 327 bool QWEBKIT_EXPORT qtwebkit_webframe_scrollOverflow(QWebFrame* qFrame, int dx, int dy, const QPoint& pos) 328 { 329 WebCore::Frame* frame = QWebFramePrivate::core(qFrame); 330 if (!frame || !frame->document() || !frame->view() || !frame->eventHandler()) 330 331 return false; 331 332 332 Node* node = frame->document()->focusedNode(); 333 if (!node) 334 node = frame->document()->elementFromPoint(frame->eventHandler()->currentMousePosition().x(), 335 frame->eventHandler()->currentMousePosition().y()); 333 QPoint contentsPos = frame->view()->windowToContents(pos); 334 Node* node = frame->document()->elementFromPoint(contentsPos.x(), contentsPos.y()); 336 335 if (!node) 337 336 return false; … … 351 350 bool scrolledVertical = false; 352 351 353 if (dx > 0) 354 scrolledHorizontal = renderLayer->scroll(ScrollRight, ScrollByPixel, dx); 355 else if (dx < 0) 356 scrolledHorizontal = renderLayer->scroll(ScrollLeft, ScrollByPixel, qAbs(dx)); 357 358 if (dy > 0) 359 scrolledVertical = renderLayer->scroll(ScrollDown, ScrollByPixel, dy); 360 else if (dy < 0) 361 scrolledVertical = renderLayer->scroll(ScrollUp, ScrollByPixel, qAbs(dy)); 362 363 return (scrolledHorizontal || scrolledVertical); 364 } 352 do { 353 if (dx > 0) 354 scrolledHorizontal = renderLayer->scroll(ScrollRight, ScrollByPixel, dx); 355 else if (dx < 0) 356 scrolledHorizontal = renderLayer->scroll(ScrollLeft, ScrollByPixel, qAbs(dx)); 357 358 if (dy > 0) 359 scrolledVertical = renderLayer->scroll(ScrollDown, ScrollByPixel, dy); 360 else if (dy < 0) 361 scrolledVertical = renderLayer->scroll(ScrollUp, ScrollByPixel, qAbs(dy)); 362 363 if (scrolledHorizontal || scrolledVertical) 364 return true; 365 366 renderLayer = renderLayer->parent(); 367 } while (renderLayer); 368 369 return false; 370 } 371 372 373 374 365 375 366 376 /*! … … 1048 1058 1049 1059 /*! 1050 \since 4.71051 1060 \internal 1052 1061 Scrolls nested frames starting at this frame, \a dx pixels to the right 1053 1062 and \a dy pixels downward. Both \a dx and \a dy may be negative. First attempts 1054 to scroll elements with CSS overflow followed by this frame. If this1063 to scroll elements with CSS overflow followed by this frame. If this 1055 1064 frame doesn't scroll, attempts to scroll the parent 1056 1057 \sa QWebFrame::scroll 1058 */ 1059 bool QWEBKIT_EXPORT qtwebkit_webframe_scrollRecursively(QWebFrame* qFrame, int dx, int dy) 1060 { 1061 Frame* frame = QWebFramePrivate::core(qFrame); 1062 bool scrolledHorizontal = false; 1063 bool scrolledVertical = false; 1064 bool scrolledOverflow = webframe_scrollOverflow(frame, dx, dy); 1065 1066 if (!scrolledOverflow) { 1067 if (!frame || !frame->view()) 1068 return false; 1069 1070 do { 1071 IntSize scrollOffset = frame->view()->scrollOffset(); 1072 IntPoint maxScrollOffset = frame->view()->maximumScrollPosition(); 1073 1074 if (dx > 0) // scroll right 1075 scrolledHorizontal = scrollOffset.width() < maxScrollOffset.x(); 1076 else if (dx < 0) // scroll left 1077 scrolledHorizontal = scrollOffset.width() > 0; 1078 1079 if (dy > 0) // scroll down 1080 scrolledVertical = scrollOffset.height() < maxScrollOffset.y(); 1081 else if (dy < 0) //scroll up 1082 scrolledVertical = scrollOffset.height() > 0; 1083 1084 if (scrolledHorizontal || scrolledVertical) { 1085 frame->view()->scrollBy(IntSize(dx, dy)); 1086 return true; 1087 } 1088 frame = frame->tree()->parent(); 1089 } while (frame && frame->view()); 1090 } 1091 return (scrolledHorizontal || scrolledVertical || scrolledOverflow); 1065 */ 1066 void QWEBKIT_EXPORT qtwebkit_webframe_scrollRecursively(QWebFrame* qFrame, int dx, int dy, const QPoint& pos) 1067 { 1068 if (!qFrame) 1069 return; 1070 1071 if (qtwebkit_webframe_scrollOverflow(qFrame, dx, dy, pos)) 1072 return; 1073 1074 bool scrollHorizontal = false; 1075 bool scrollVertical = false; 1076 1077 do { 1078 if (dx > 0) // scroll right 1079 scrollHorizontal = qFrame->scrollBarValue(Qt::Horizontal) < qFrame->scrollBarMaximum(Qt::Horizontal); 1080 else if (dx < 0) // scroll left 1081 scrollHorizontal = qFrame->scrollBarValue(Qt::Horizontal) > qFrame->scrollBarMinimum(Qt::Horizontal); 1082 1083 if (dy > 0) // scroll down 1084 scrollVertical = qFrame->scrollBarValue(Qt::Vertical) < qFrame->scrollBarMaximum(Qt::Vertical); 1085 else if (dy < 0) //scroll up 1086 scrollVertical = qFrame->scrollBarValue(Qt::Vertical) > qFrame->scrollBarMinimum(Qt::Vertical); 1087 1088 if (scrollHorizontal || scrollVertical) { 1089 qFrame->scroll(dx, dy); 1090 return; 1091 } 1092 1093 qFrame = qFrame->parentFrame(); 1094 } while (qFrame); 1092 1095 } 1093 1096
Note:
See TracChangeset
for help on using the changeset viewer.
