Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1399)

Side by Side Diff: Source/core/rendering/RenderView.cpp

Issue 478733002: Rename repaint to paintInvalidation for remaining methods. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « Source/core/rendering/RenderView.h ('k') | Source/core/rendering/RenderWidget.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserv ed. 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserv ed.
4 * 4 *
5 * This library is free software; you can redistribute it and/or 5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Library General Public 6 * modify it under the terms of the GNU Library General Public
7 * License as published by the Free Software Foundation; either 7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version. 8 * version 2 of the License, or (at your option) any later version.
9 * 9 *
10 * This library is distributed in the hope that it will be useful, 10 * This library is distributed in the hope that it will be useful,
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after
262 m_pageLogicalHeightChanged = false; 262 m_pageLogicalHeightChanged = false;
263 263
264 layoutContent(); 264 layoutContent();
265 265
266 #if ENABLE(ASSERT) 266 #if ENABLE(ASSERT)
267 checkLayoutState(); 267 checkLayoutState();
268 #endif 268 #endif
269 clearNeedsLayout(); 269 clearNeedsLayout();
270 } 270 }
271 271
272 void RenderView::mapLocalToContainer(const RenderLayerModelObject* repaintContai ner, TransformState& transformState, MapCoordinatesFlags mode, bool* wasFixed, c onst PaintInvalidationState* paintInvalidationState) const 272 void RenderView::mapLocalToContainer(const RenderLayerModelObject* paintInvalida tionContainer, TransformState& transformState, MapCoordinatesFlags mode, bool* w asFixed, const PaintInvalidationState* paintInvalidationState) const
273 { 273 {
274 ASSERT_UNUSED(wasFixed, !wasFixed || *wasFixed == static_cast<bool>(mode & I sFixed)); 274 ASSERT_UNUSED(wasFixed, !wasFixed || *wasFixed == static_cast<bool>(mode & I sFixed));
275 275
276 if (!repaintContainer && mode & UseTransforms && shouldUseTransformFromConta iner(0)) { 276 if (!paintInvalidationContainer && mode & UseTransforms && shouldUseTransfor mFromContainer(0)) {
277 TransformationMatrix t; 277 TransformationMatrix t;
278 getTransformFromContainer(0, LayoutSize(), t); 278 getTransformFromContainer(0, LayoutSize(), t);
279 transformState.applyTransform(t); 279 transformState.applyTransform(t);
280 } 280 }
281 281
282 if (mode & IsFixed && m_frameView) 282 if (mode & IsFixed && m_frameView)
283 transformState.move(m_frameView->scrollOffsetForFixedPosition()); 283 transformState.move(m_frameView->scrollOffsetForFixedPosition());
284 284
285 if (repaintContainer == this) 285 if (paintInvalidationContainer == this)
286 return; 286 return;
287 287
288 if (mode & TraverseDocumentBoundaries) { 288 if (mode & TraverseDocumentBoundaries) {
289 if (RenderObject* parentDocRenderer = frame()->ownerRenderer()) { 289 if (RenderObject* parentDocRenderer = frame()->ownerRenderer()) {
290 transformState.move(-frame()->view()->scrollOffset()); 290 transformState.move(-frame()->view()->scrollOffset());
291 if (parentDocRenderer->isBox()) 291 if (parentDocRenderer->isBox())
292 transformState.move(toLayoutSize(toRenderBox(parentDocRenderer)- >contentBoxRect().location())); 292 transformState.move(toLayoutSize(toRenderBox(parentDocRenderer)- >contentBoxRect().location()));
293 parentDocRenderer->mapLocalToContainer(repaintContainer, transformSt ate, mode, wasFixed, paintInvalidationState); 293 parentDocRenderer->mapLocalToContainer(paintInvalidationContainer, t ransformState, mode, wasFixed, paintInvalidationState);
294 return; 294 return;
295 } 295 }
296 } 296 }
297 297
298 // If a container was specified, and was not 0 or the RenderView, 298 // If a container was specified, and was not 0 or the RenderView,
299 // then we should have found it by now. 299 // then we should have found it by now.
300 ASSERT_ARG(repaintContainer, !repaintContainer); 300 ASSERT_ARG(paintInvalidationContainer, !paintInvalidationContainer);
301 } 301 }
302 302
303 const RenderObject* RenderView::pushMappingToContainer(const RenderLayerModelObj ect* ancestorToStopAt, RenderGeometryMap& geometryMap) const 303 const RenderObject* RenderView::pushMappingToContainer(const RenderLayerModelObj ect* ancestorToStopAt, RenderGeometryMap& geometryMap) const
304 { 304 {
305 LayoutSize offsetForFixedPosition; 305 LayoutSize offsetForFixedPosition;
306 LayoutSize offset; 306 LayoutSize offset;
307 RenderObject* container = 0; 307 RenderObject* container = 0;
308 308
309 if (m_frameView) 309 if (m_frameView)
310 offsetForFixedPosition = m_frameView->scrollOffsetForFixedPosition(); 310 offsetForFixedPosition = m_frameView->scrollOffsetForFixedPosition();
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
429 } else { 429 } else {
430 paintInfo.context->clearRect(paintInfo.rect); 430 paintInfo.context->clearRect(paintInfo.rect);
431 } 431 }
432 } 432 }
433 } 433 }
434 434
435 void RenderView::invalidateTreeIfNeeded(const PaintInvalidationState& paintInval idationState) 435 void RenderView::invalidateTreeIfNeeded(const PaintInvalidationState& paintInval idationState)
436 { 436 {
437 ASSERT(!needsLayout()); 437 ASSERT(!needsLayout());
438 438
439 // We specifically need to repaint the viewRect since other renderers 439 // We specifically need to issue paint invalidations for the viewRect since other renderers
440 // short-circuit on full-repaint. 440 // short-circuit on full-paint invalidation.
441 if (doingFullPaintInvalidation() && !viewRect().isEmpty()) 441 if (doingFullPaintInvalidation() && !viewRect().isEmpty())
442 invalidatePaintForRectangle(viewRect()); 442 invalidatePaintForRectangle(viewRect());
443 443
444 RenderBlock::invalidateTreeIfNeeded(paintInvalidationState); 444 RenderBlock::invalidateTreeIfNeeded(paintInvalidationState);
445 } 445 }
446 446
447 void RenderView::invalidatePaintForRectangle(const LayoutRect& paintInvalidation Rect) const 447 void RenderView::invalidatePaintForRectangle(const LayoutRect& paintInvalidation Rect) const
448 { 448 {
449 ASSERT(!paintInvalidationRect.isEmpty()); 449 ASSERT(!paintInvalidationRect.isEmpty());
450 450
451 if (document().printing() || !m_frameView) 451 if (document().printing() || !m_frameView)
452 return; 452 return;
453 453
454 // We always just invalidate the root view, since we could be an iframe that is clipped out 454 // We always just invalidate the root view, since we could be an iframe that is clipped out
455 // or even invisible. 455 // or even invisible.
456 Element* owner = document().ownerElement(); 456 Element* owner = document().ownerElement();
457 if (layer()->compositingState() == PaintsIntoOwnBacking) { 457 if (layer()->compositingState() == PaintsIntoOwnBacking) {
458 layer()->paintInvalidator().setBackingNeedsRepaintInRect(paintInvalidati onRect); 458 layer()->paintInvalidator().setBackingNeedsPaintInvalidationInRect(paint InvalidationRect);
459 } else if (!owner) { 459 } else if (!owner) {
460 m_frameView->contentRectangleForPaintInvalidation(pixelSnappedIntRect(pa intInvalidationRect)); 460 m_frameView->contentRectangleForPaintInvalidation(pixelSnappedIntRect(pa intInvalidationRect));
461 } else if (RenderBox* obj = owner->renderBox()) { 461 } else if (RenderBox* obj = owner->renderBox()) {
462 // Intersect the viewport with the paint invalidation rect. 462 // Intersect the viewport with the paint invalidation rect.
463 LayoutRect viewRectangle = viewRect(); 463 LayoutRect viewRectangle = viewRect();
464 LayoutRect rectToInvalidate = intersection(paintInvalidationRect, viewRe ctangle); 464 LayoutRect rectToInvalidate = intersection(paintInvalidationRect, viewRe ctangle);
465 465
466 // Adjust for scroll offset of the view. 466 // Adjust for scroll offset of the view.
467 rectToInvalidate.moveBy(-viewRectangle.location()); 467 rectToInvalidate.moveBy(-viewRectangle.location());
468 468
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
559 os = os->nextInPreOrder(); 559 os = os->nextInPreOrder();
560 } 560 }
561 561
562 // Now create a single bounding box rect that encloses the whole selection. 562 // Now create a single bounding box rect that encloses the whole selection.
563 LayoutRect selRect; 563 LayoutRect selRect;
564 SelectionMap::iterator end = selectedObjects.end(); 564 SelectionMap::iterator end = selectedObjects.end();
565 for (SelectionMap::iterator i = selectedObjects.begin(); i != end; ++i) { 565 for (SelectionMap::iterator i = selectedObjects.begin(); i != end; ++i) {
566 RenderSelectionInfo* info = i->value.get(); 566 RenderSelectionInfo* info = i->value.get();
567 // RenderSelectionInfo::rect() is in the coordinates of the paintInvalid ationContainer, so map to page coordinates. 567 // RenderSelectionInfo::rect() is in the coordinates of the paintInvalid ationContainer, so map to page coordinates.
568 LayoutRect currRect = info->rect(); 568 LayoutRect currRect = info->rect();
569 if (const RenderLayerModelObject* paintInvalidationContainer = info->rep aintContainer()) { 569 if (const RenderLayerModelObject* paintInvalidationContainer = info->pai ntInvalidationContainer()) {
570 FloatQuad absQuad = paintInvalidationContainer->localToAbsoluteQuad( FloatRect(currRect)); 570 FloatQuad absQuad = paintInvalidationContainer->localToAbsoluteQuad( FloatRect(currRect));
571 currRect = absQuad.enclosingBoundingBox(); 571 currRect = absQuad.enclosingBoundingBox();
572 } 572 }
573 selRect.unite(currRect); 573 selRect.unite(currRect);
574 } 574 }
575 return pixelSnappedIntRect(selRect); 575 return pixelSnappedIntRect(selRect);
576 } 576 }
577 577
578 void RenderView::invalidatePaintForSelection() const 578 void RenderView::invalidatePaintForSelection() const
579 { 579 {
580 HashSet<RenderBlock*> processedBlocks; 580 HashSet<RenderBlock*> processedBlocks;
581 581
582 RenderObject* end = rendererAfterPosition(m_selectionEnd, m_selectionEndPos) ; 582 RenderObject* end = rendererAfterPosition(m_selectionEnd, m_selectionEndPos) ;
583 for (RenderObject* o = m_selectionStart; o && o != end; o = o->nextInPreOrde r()) { 583 for (RenderObject* o = m_selectionStart; o && o != end; o = o->nextInPreOrde r()) {
584 if (!o->canBeSelectionLeaf() && o != m_selectionStart && o != m_selectio nEnd) 584 if (!o->canBeSelectionLeaf() && o != m_selectionStart && o != m_selectio nEnd)
585 continue; 585 continue;
586 if (o->selectionState() == SelectionNone) 586 if (o->selectionState() == SelectionNone)
587 continue; 587 continue;
588 588
589 RenderSelectionInfo(o, true).repaint(); 589 RenderSelectionInfo(o, true).invalidatePaint();
590 590
591 // Blocks are responsible for painting line gaps and margin gaps. They m ust be examined as well. 591 // Blocks are responsible for painting line gaps and margin gaps. They m ust be examined as well.
592 for (RenderBlock* block = o->containingBlock(); block && !block->isRende rView(); block = block->containingBlock()) { 592 for (RenderBlock* block = o->containingBlock(); block && !block->isRende rView(); block = block->containingBlock()) {
593 if (!processedBlocks.add(block).isNewEntry) 593 if (!processedBlocks.add(block).isNewEntry)
594 break; 594 break;
595 RenderSelectionInfo(block, true).repaint(); 595 RenderSelectionInfo(block, true).invalidatePaint();
596 } 596 }
597 } 597 }
598 } 598 }
599 599
600 // When exploring the RenderTree looking for the nodes involved in the Selection , sometimes it's 600 // When exploring the RenderTree looking for the nodes involved in the Selection , sometimes it's
601 // required to change the traversing direction because the "start" position is b elow the "end" one. 601 // required to change the traversing direction because the "start" position is b elow the "end" one.
602 static inline RenderObject* getNextOrPrevRenderObjectBasedOnDirection(const Rend erObject* o, const RenderObject* stop, bool& continueExploring, bool& exploringB ackwards) 602 static inline RenderObject* getNextOrPrevRenderObjectBasedOnDirection(const Rend erObject* o, const RenderObject* stop, bool& continueExploring, bool& exploringB ackwards)
603 { 603 {
604 RenderObject* next; 604 RenderObject* next;
605 if (exploringBackwards) { 605 if (exploringBackwards) {
606 next = o->previousInPreOrder(); 606 next = o->previousInPreOrder();
607 continueExploring = next && !(next)->isRenderView(); 607 continueExploring = next && !(next)->isRenderView();
608 } else { 608 } else {
609 next = o->nextInPreOrder(); 609 next = o->nextInPreOrder();
610 continueExploring = next && next != stop; 610 continueExploring = next && next != stop;
611 exploringBackwards = !next && (next != stop); 611 exploringBackwards = !next && (next != stop);
612 if (exploringBackwards) { 612 if (exploringBackwards) {
613 next = stop->previousInPreOrder(); 613 next = stop->previousInPreOrder();
614 continueExploring = next && !next->isRenderView(); 614 continueExploring = next && !next->isRenderView();
615 } 615 }
616 } 616 }
617 617
618 return next; 618 return next;
619 } 619 }
620 620
621 void RenderView::setSelection(RenderObject* start, int startPos, RenderObject* e nd, int endPos, SelectionRepaintMode blockRepaintMode) 621 void RenderView::setSelection(RenderObject* start, int startPos, RenderObject* e nd, int endPos, SelectionPaintInvalidationMode blockPaintInvalidationMode)
622 { 622 {
623 // This code makes no assumptions as to if the rendering tree is up to date or not 623 // This code makes no assumptions as to if the rendering tree is up to date or not
624 // and will not try to update it. Currently clearSelection calls this 624 // and will not try to update it. Currently clearSelection calls this
625 // (intentionally) without updating the rendering tree as it doesn't care. 625 // (intentionally) without updating the rendering tree as it doesn't care.
626 // Other callers may want to force recalc style before calling this. 626 // Other callers may want to force recalc style before calling this.
627 627
628 // Make sure both our start and end objects are defined. 628 // Make sure both our start and end objects are defined.
629 // Check www.msnbc.com and try clicking around to find the case where this h appened. 629 // Check www.msnbc.com and try clicking around to find the case where this h appened.
630 if ((start && !end) || (end && !start)) 630 if ((start && !end) || (end && !start))
631 return; 631 return;
632 632
633 // Just return if the selection hasn't changed. 633 // Just return if the selection hasn't changed.
634 if (m_selectionStart == start && m_selectionStartPos == startPos && 634 if (m_selectionStart == start && m_selectionStartPos == startPos &&
635 m_selectionEnd == end && m_selectionEndPos == endPos) 635 m_selectionEnd == end && m_selectionEndPos == endPos)
636 return; 636 return;
637 637
638 // Record the old selected objects. These will be used later 638 // Record the old selected objects. These will be used later
639 // when we compare against the new selected objects. 639 // when we compare against the new selected objects.
640 int oldStartPos = m_selectionStartPos; 640 int oldStartPos = m_selectionStartPos;
641 int oldEndPos = m_selectionEndPos; 641 int oldEndPos = m_selectionEndPos;
642 642
643 // Objects each have a single selection rect to examine. 643 // Objects each have a single selection rect to examine.
644 typedef WillBeHeapHashMap<RawPtrWillBeMember<RenderObject>, OwnPtrWillBeMemb er<RenderSelectionInfo> > SelectedObjectMap; 644 typedef WillBeHeapHashMap<RawPtrWillBeMember<RenderObject>, OwnPtrWillBeMemb er<RenderSelectionInfo> > SelectedObjectMap;
645 SelectedObjectMap oldSelectedObjects; 645 SelectedObjectMap oldSelectedObjects;
646 SelectedObjectMap newSelectedObjects; 646 SelectedObjectMap newSelectedObjects;
647 647
648 // Blocks contain selected objects and fill gaps between them, either on the left, right, or in between lines and blocks. 648 // Blocks contain selected objects and fill gaps between them, either on the left, right, or in between lines and blocks.
649 // In order to get the repaint rect right, we have to examine left, middle, and right rects individually, since otherwise 649 // In order to get the paint invalidation rect right, we have to examine lef t, middle, and right rects individually, since otherwise
650 // the union of those rects might remain the same even when changes have occ urred. 650 // the union of those rects might remain the same even when changes have occ urred.
651 typedef WillBeHeapHashMap<RawPtrWillBeMember<RenderBlock>, OwnPtrWillBeMembe r<RenderBlockSelectionInfo> > SelectedBlockMap; 651 typedef WillBeHeapHashMap<RawPtrWillBeMember<RenderBlock>, OwnPtrWillBeMembe r<RenderBlockSelectionInfo> > SelectedBlockMap;
652 SelectedBlockMap oldSelectedBlocks; 652 SelectedBlockMap oldSelectedBlocks;
653 SelectedBlockMap newSelectedBlocks; 653 SelectedBlockMap newSelectedBlocks;
654 654
655 RenderObject* os = m_selectionStart; 655 RenderObject* os = m_selectionStart;
656 RenderObject* stop = rendererAfterPosition(m_selectionEnd, m_selectionEndPos ); 656 RenderObject* stop = rendererAfterPosition(m_selectionEnd, m_selectionEndPos );
657 bool exploringBackwards = false; 657 bool exploringBackwards = false;
658 bool continueExploring = os && (os != stop); 658 bool continueExploring = os && (os != stop);
659 while (continueExploring) { 659 while (continueExploring) {
660 if ((os->canBeSelectionLeaf() || os == m_selectionStart || os == m_selec tionEnd) && os->selectionState() != SelectionNone) { 660 if ((os->canBeSelectionLeaf() || os == m_selectionStart || os == m_selec tionEnd) && os->selectionState() != SelectionNone) {
661 // Blocks are responsible for painting line gaps and margin gaps. T hey must be examined as well. 661 // Blocks are responsible for painting line gaps and margin gaps. T hey must be examined as well.
662 oldSelectedObjects.set(os, adoptPtrWillBeNoop(new RenderSelectionInf o(os, true))); 662 oldSelectedObjects.set(os, adoptPtrWillBeNoop(new RenderSelectionInf o(os, true)));
663 if (blockRepaintMode == RepaintNewXOROld) { 663 if (blockPaintInvalidationMode == PaintInvalidationNewXOROld) {
664 RenderBlock* cb = os->containingBlock(); 664 RenderBlock* cb = os->containingBlock();
665 while (cb && !cb->isRenderView()) { 665 while (cb && !cb->isRenderView()) {
666 OwnPtrWillBeMember<RenderBlockSelectionInfo>& blockInfo = ol dSelectedBlocks.add(cb, nullptr).storedValue->value; 666 OwnPtrWillBeMember<RenderBlockSelectionInfo>& blockInfo = ol dSelectedBlocks.add(cb, nullptr).storedValue->value;
667 if (blockInfo) 667 if (blockInfo)
668 break; 668 break;
669 blockInfo = adoptPtrWillBeNoop(new RenderBlockSelectionInfo( cb)); 669 blockInfo = adoptPtrWillBeNoop(new RenderBlockSelectionInfo( cb));
670 cb = cb->containingBlock(); 670 cb = cb->containingBlock();
671 } 671 }
672 } 672 }
673 } 673 }
(...skipping 24 matching lines...) Expand all
698 698
699 RenderObject* o = start; 699 RenderObject* o = start;
700 stop = rendererAfterPosition(end, endPos); 700 stop = rendererAfterPosition(end, endPos);
701 701
702 while (o && o != stop) { 702 while (o && o != stop) {
703 if (o != start && o != end && o->canBeSelectionLeaf()) 703 if (o != start && o != end && o->canBeSelectionLeaf())
704 o->setSelectionStateIfNeeded(SelectionInside); 704 o->setSelectionStateIfNeeded(SelectionInside);
705 o = o->nextInPreOrder(); 705 o = o->nextInPreOrder();
706 } 706 }
707 707
708 if (blockRepaintMode != RepaintNothing) 708 if (blockPaintInvalidationMode != PaintInvalidationNothing)
709 layer()->clearBlockSelectionGapsBounds(); 709 layer()->clearBlockSelectionGapsBounds();
710 710
711 // Now that the selection state has been updated for the new objects, walk t hem again and 711 // Now that the selection state has been updated for the new objects, walk t hem again and
712 // put them in the new objects list. 712 // put them in the new objects list.
713 o = start; 713 o = start;
714 exploringBackwards = false; 714 exploringBackwards = false;
715 continueExploring = o && (o != stop); 715 continueExploring = o && (o != stop);
716 while (continueExploring) { 716 while (continueExploring) {
717 if ((o->canBeSelectionLeaf() || o == start || o == end) && o->selectionS tate() != SelectionNone) { 717 if ((o->canBeSelectionLeaf() || o == start || o == end) && o->selectionS tate() != SelectionNone) {
718 newSelectedObjects.set(o, adoptPtrWillBeNoop(new RenderSelectionInfo (o, true))); 718 newSelectedObjects.set(o, adoptPtrWillBeNoop(new RenderSelectionInfo (o, true)));
719 RenderBlock* cb = o->containingBlock(); 719 RenderBlock* cb = o->containingBlock();
720 while (cb && !cb->isRenderView()) { 720 while (cb && !cb->isRenderView()) {
721 OwnPtrWillBeMember<RenderBlockSelectionInfo>& blockInfo = newSel ectedBlocks.add(cb, nullptr).storedValue->value; 721 OwnPtrWillBeMember<RenderBlockSelectionInfo>& blockInfo = newSel ectedBlocks.add(cb, nullptr).storedValue->value;
722 if (blockInfo) 722 if (blockInfo)
723 break; 723 break;
724 blockInfo = adoptPtrWillBeNoop(new RenderBlockSelectionInfo(cb)) ; 724 blockInfo = adoptPtrWillBeNoop(new RenderBlockSelectionInfo(cb)) ;
725 cb = cb->containingBlock(); 725 cb = cb->containingBlock();
726 } 726 }
727 } 727 }
728 728
729 o = getNextOrPrevRenderObjectBasedOnDirection(o, stop, continueExploring , exploringBackwards); 729 o = getNextOrPrevRenderObjectBasedOnDirection(o, stop, continueExploring , exploringBackwards);
730 } 730 }
731 731
732 if (!m_frameView || blockRepaintMode == RepaintNothing) 732 if (!m_frameView || blockPaintInvalidationMode == PaintInvalidationNothing)
733 return; 733 return;
734 734
735 // Have any of the old selected objects changed compared to the new selectio n? 735 // Have any of the old selected objects changed compared to the new selectio n?
736 for (SelectedObjectMap::iterator i = oldSelectedObjects.begin(); i != oldObj ectsEnd; ++i) { 736 for (SelectedObjectMap::iterator i = oldSelectedObjects.begin(); i != oldObj ectsEnd; ++i) {
737 RenderObject* obj = i->key; 737 RenderObject* obj = i->key;
738 RenderSelectionInfo* newInfo = newSelectedObjects.get(obj); 738 RenderSelectionInfo* newInfo = newSelectedObjects.get(obj);
739 RenderSelectionInfo* oldInfo = i->value.get(); 739 RenderSelectionInfo* oldInfo = i->value.get();
740 if (!newInfo || oldInfo->rect() != newInfo->rect() || oldInfo->state() ! = newInfo->state() || 740 if (!newInfo || oldInfo->rect() != newInfo->rect() || oldInfo->state() ! = newInfo->state() ||
741 (m_selectionStart == obj && oldStartPos != m_selectionStartPos) || 741 (m_selectionStart == obj && oldStartPos != m_selectionStartPos) ||
742 (m_selectionEnd == obj && oldEndPos != m_selectionEndPos)) { 742 (m_selectionEnd == obj && oldEndPos != m_selectionEndPos)) {
743 oldInfo->repaint(); 743 oldInfo->invalidatePaint();
744 if (newInfo) { 744 if (newInfo) {
745 newInfo->repaint(); 745 newInfo->invalidatePaint();
746 newSelectedObjects.remove(obj); 746 newSelectedObjects.remove(obj);
747 } 747 }
748 } 748 }
749 } 749 }
750 750
751 // Any new objects that remain were not found in the old objects dict, and s o they need to be updated. 751 // Any new objects that remain were not found in the old objects dict, and s o they need to be updated.
752 SelectedObjectMap::iterator newObjectsEnd = newSelectedObjects.end(); 752 SelectedObjectMap::iterator newObjectsEnd = newSelectedObjects.end();
753 for (SelectedObjectMap::iterator i = newSelectedObjects.begin(); i != newObj ectsEnd; ++i) 753 for (SelectedObjectMap::iterator i = newSelectedObjects.begin(); i != newObj ectsEnd; ++i)
754 i->value->repaint(); 754 i->value->invalidatePaint();
755 755
756 // Have any of the old blocks changed? 756 // Have any of the old blocks changed?
757 SelectedBlockMap::iterator oldBlocksEnd = oldSelectedBlocks.end(); 757 SelectedBlockMap::iterator oldBlocksEnd = oldSelectedBlocks.end();
758 for (SelectedBlockMap::iterator i = oldSelectedBlocks.begin(); i != oldBlock sEnd; ++i) { 758 for (SelectedBlockMap::iterator i = oldSelectedBlocks.begin(); i != oldBlock sEnd; ++i) {
759 RenderBlock* block = i->key; 759 RenderBlock* block = i->key;
760 RenderBlockSelectionInfo* newInfo = newSelectedBlocks.get(block); 760 RenderBlockSelectionInfo* newInfo = newSelectedBlocks.get(block);
761 RenderBlockSelectionInfo* oldInfo = i->value.get(); 761 RenderBlockSelectionInfo* oldInfo = i->value.get();
762 if (!newInfo || oldInfo->rects() != newInfo->rects() || oldInfo->state() != newInfo->state()) { 762 if (!newInfo || oldInfo->rects() != newInfo->rects() || oldInfo->state() != newInfo->state()) {
763 oldInfo->repaint(); 763 oldInfo->invalidatePaint();
764 if (newInfo) { 764 if (newInfo) {
765 newInfo->repaint(); 765 newInfo->invalidatePaint();
766 newSelectedBlocks.remove(block); 766 newSelectedBlocks.remove(block);
767 } 767 }
768 } 768 }
769 } 769 }
770 770
771 // Any new blocks that remain were not found in the old blocks dict, and so they need to be updated. 771 // Any new blocks that remain were not found in the old blocks dict, and so they need to be updated.
772 SelectedBlockMap::iterator newBlocksEnd = newSelectedBlocks.end(); 772 SelectedBlockMap::iterator newBlocksEnd = newSelectedBlocks.end();
773 for (SelectedBlockMap::iterator i = newSelectedBlocks.begin(); i != newBlock sEnd; ++i) 773 for (SelectedBlockMap::iterator i = newSelectedBlocks.begin(); i != newBlock sEnd; ++i)
774 i->value->repaint(); 774 i->value->invalidatePaint();
775 } 775 }
776 776
777 void RenderView::getSelection(RenderObject*& startRenderer, int& startOffset, Re nderObject*& endRenderer, int& endOffset) const 777 void RenderView::getSelection(RenderObject*& startRenderer, int& startOffset, Re nderObject*& endRenderer, int& endOffset) const
778 { 778 {
779 startRenderer = m_selectionStart; 779 startRenderer = m_selectionStart;
780 startOffset = m_selectionStartPos; 780 startOffset = m_selectionStartPos;
781 endRenderer = m_selectionEnd; 781 endRenderer = m_selectionEnd;
782 endOffset = m_selectionEndPos; 782 endOffset = m_selectionEndPos;
783 } 783 }
784 784
785 void RenderView::clearSelection() 785 void RenderView::clearSelection()
786 { 786 {
787 layer()->invalidatePaintForBlockSelectionGaps(); 787 layer()->invalidatePaintForBlockSelectionGaps();
788 setSelection(0, -1, 0, -1, RepaintNewMinusOld); 788 setSelection(0, -1, 0, -1, PaintInvalidationNewMinusOld);
789 } 789 }
790 790
791 void RenderView::selectionStartEnd(int& startPos, int& endPos) const 791 void RenderView::selectionStartEnd(int& startPos, int& endPos) const
792 { 792 {
793 startPos = m_selectionStartPos; 793 startPos = m_selectionStartPos;
794 endPos = m_selectionEndPos; 794 endPos = m_selectionEndPos;
795 } 795 }
796 796
797 bool RenderView::shouldUsePrintingLayout() const 797 bool RenderView::shouldUsePrintingLayout() const
798 { 798 {
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
981 return viewWidth(IncludeScrollbars) / scale; 981 return viewWidth(IncludeScrollbars) / scale;
982 } 982 }
983 983
984 double RenderView::layoutViewportHeight() const 984 double RenderView::layoutViewportHeight() const
985 { 985 {
986 float scale = m_frameView ? m_frameView->frame().pageZoomFactor() : 1; 986 float scale = m_frameView ? m_frameView->frame().pageZoomFactor() : 1;
987 return viewHeight(IncludeScrollbars) / scale; 987 return viewHeight(IncludeScrollbars) / scale;
988 } 988 }
989 989
990 } // namespace blink 990 } // namespace blink
OLDNEW
« no previous file with comments | « Source/core/rendering/RenderView.h ('k') | Source/core/rendering/RenderWidget.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698