| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 1998, 1999 Torben Weis <weis@kde.org> | 2 * Copyright (C) 1998, 1999 Torben Weis <weis@kde.org> |
| 3 * 1999 Lars Knoll <knoll@kde.org> | 3 * 1999 Lars Knoll <knoll@kde.org> |
| 4 * 1999 Antti Koivisto <koivisto@kde.org> | 4 * 1999 Antti Koivisto <koivisto@kde.org> |
| 5 * 2000 Dirk Mueller <mueller@kde.org> | 5 * 2000 Dirk Mueller <mueller@kde.org> |
| 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. | 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. |
| 7 * (C) 2006 Graham Dennis (graham.dennis@gmail.com) | 7 * (C) 2006 Graham Dennis (graham.dennis@gmail.com) |
| 8 * (C) 2006 Alexey Proskuryakov (ap@nypop.com) | 8 * (C) 2006 Alexey Proskuryakov (ap@nypop.com) |
| 9 * Copyright (C) 2009 Google Inc. All rights reserved. | 9 * Copyright (C) 2009 Google Inc. All rights reserved. |
| 10 * | 10 * |
| (...skipping 1079 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1090 // Get the rects of the fixed objects visible in the rectToScroll | 1090 // Get the rects of the fixed objects visible in the rectToScroll |
| 1091 Vector<IntRect, fixedObjectThreshold> subRectToUpdate; | 1091 Vector<IntRect, fixedObjectThreshold> subRectToUpdate; |
| 1092 bool updateInvalidatedSubRect = true; | 1092 bool updateInvalidatedSubRect = true; |
| 1093 RenderBlock::PositionedObjectsListHashSet::const_iterator end = positionedOb
jects->end(); | 1093 RenderBlock::PositionedObjectsListHashSet::const_iterator end = positionedOb
jects->end(); |
| 1094 for (RenderBlock::PositionedObjectsListHashSet::const_iterator it = position
edObjects->begin(); it != end; ++it) { | 1094 for (RenderBlock::PositionedObjectsListHashSet::const_iterator it = position
edObjects->begin(); it != end; ++it) { |
| 1095 RenderBox* renderBox = *it; | 1095 RenderBox* renderBox = *it; |
| 1096 if (renderBox->style()->position() != FixedPosition) | 1096 if (renderBox->style()->position() != FixedPosition) |
| 1097 continue; | 1097 continue; |
| 1098 IntRect updateRect = renderBox->layer()->repaintRectIncludingDescendants
(); | 1098 IntRect updateRect = renderBox->layer()->repaintRectIncludingDescendants
(); |
| 1099 updateRect = contentsToWindow(updateRect); | 1099 updateRect = contentsToWindow(updateRect); |
| 1100 | 1100 if (clipsRepaints()) |
| 1101 updateRect.intersect(rectToScroll); | 1101 updateRect.intersect(rectToScroll); |
| 1102 if (!updateRect.isEmpty()) { | 1102 if (!updateRect.isEmpty()) { |
| 1103 if (subRectToUpdate.size() >= fixedObjectThreshold) { | 1103 if (subRectToUpdate.size() >= fixedObjectThreshold) { |
| 1104 updateInvalidatedSubRect = false; | 1104 updateInvalidatedSubRect = false; |
| 1105 break; | 1105 break; |
| 1106 } | 1106 } |
| 1107 subRectToUpdate.append(updateRect); | 1107 subRectToUpdate.append(updateRect); |
| 1108 } | 1108 } |
| 1109 } | 1109 } |
| 1110 | 1110 |
| 1111 // Scroll the view | 1111 // Scroll the view |
| 1112 if (updateInvalidatedSubRect) { | 1112 if (updateInvalidatedSubRect) { |
| 1113 // 1) scroll | 1113 // 1) scroll |
| 1114 hostWindow()->scroll(scrollDelta, rectToScroll, clipRect); | 1114 hostWindow()->scroll(scrollDelta, rectToScroll, clipRect); |
| 1115 | 1115 |
| 1116 // 2) update the area of fixed objects that has been invalidated | 1116 // 2) update the area of fixed objects that has been invalidated |
| 1117 size_t fixObjectsCount = subRectToUpdate.size(); | 1117 size_t fixObjectsCount = subRectToUpdate.size(); |
| 1118 for (size_t i = 0; i < fixObjectsCount; ++i) { | 1118 for (size_t i = 0; i < fixObjectsCount; ++i) { |
| 1119 IntRect updateRect = subRectToUpdate[i]; | 1119 IntRect updateRect = subRectToUpdate[i]; |
| 1120 IntRect scrolledRect = updateRect; | 1120 IntRect scrolledRect = updateRect; |
| 1121 scrolledRect.move(scrollDelta); | 1121 scrolledRect.move(scrollDelta); |
| 1122 updateRect.unite(scrolledRect); | 1122 updateRect.unite(scrolledRect); |
| 1123 updateRect.intersect(rectToScroll); | 1123 if (clipsRepaints()) |
| 1124 updateRect.intersect(rectToScroll); |
| 1124 hostWindow()->invalidateContentsAndWindow(updateRect, false); | 1125 hostWindow()->invalidateContentsAndWindow(updateRect, false); |
| 1125 } | 1126 } |
| 1126 return true; | 1127 return true; |
| 1127 } | 1128 } |
| 1128 | 1129 |
| 1129 // the number of fixed objects exceed the threshold, we cannot use the fast
path | 1130 // the number of fixed objects exceed the threshold, we cannot use the fast
path |
| 1130 return false; | 1131 return false; |
| 1131 } | 1132 } |
| 1132 | 1133 |
| 1133 void FrameView::scrollContentsSlowPath(const IntRect& updateRect) | 1134 void FrameView::scrollContentsSlowPath(const IntRect& updateRect) |
| (...skipping 1394 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2528 } | 2529 } |
| 2529 | 2530 |
| 2530 AXObjectCache* FrameView::axObjectCache() const | 2531 AXObjectCache* FrameView::axObjectCache() const |
| 2531 { | 2532 { |
| 2532 if (frame() && frame()->document() && frame()->document()->axObjectCacheExis
ts()) | 2533 if (frame() && frame()->document() && frame()->document()->axObjectCacheExis
ts()) |
| 2533 return frame()->document()->axObjectCache(); | 2534 return frame()->document()->axObjectCache(); |
| 2534 return 0; | 2535 return 0; |
| 2535 } | 2536 } |
| 2536 | 2537 |
| 2537 } // namespace WebCore | 2538 } // namespace WebCore |
| OLD | NEW |