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

Side by Side Diff: Source/core/platform/mac/ScrollAnimatorMac.mm

Issue 14703004: Reland "Unifies ScrollView and RenderLayer to use non-shi..." (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: rebased Created 7 years, 7 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2010, 2011 Apple Inc. All rights reserved. 2 * Copyright (C) 2010, 2011 Apple Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 648 matching lines...) Expand 10 before | Expand all | Expand 10 after
659 { 659 {
660 m_haveScrolledSincePageLoad = true; 660 m_haveScrolledSincePageLoad = true;
661 661
662 if (!scrollAnimationEnabledForSystem() || !m_scrollableArea->scrollAnimatorE nabled()) 662 if (!scrollAnimationEnabledForSystem() || !m_scrollableArea->scrollAnimatorE nabled())
663 return ScrollAnimator::scroll(orientation, granularity, step, multiplier ); 663 return ScrollAnimator::scroll(orientation, granularity, step, multiplier );
664 664
665 if (granularity == ScrollByPixel) 665 if (granularity == ScrollByPixel)
666 return ScrollAnimator::scroll(orientation, granularity, step, multiplier ); 666 return ScrollAnimator::scroll(orientation, granularity, step, multiplier );
667 667
668 float currentPos = orientation == HorizontalScrollbar ? m_currentPosX : m_cu rrentPosY; 668 float currentPos = orientation == HorizontalScrollbar ? m_currentPosX : m_cu rrentPosY;
669 float newPos = std::max<float>(std::min<float>(currentPos + (step * multipli er), static_cast<float>(m_scrollableArea->scrollSize(orientation))), 0); 669 float newPos = std::max<float>(std::min<float>(currentPos + (step * multipli er), m_scrollableArea->maximumScrollPosition(orientation)), m_scrollableArea->mi nimumScrollPosition(orientation));
670 if (currentPos == newPos) 670 if (currentPos == newPos)
671 return false; 671 return false;
672 672
673 NSPoint newPoint; 673 NSPoint newPoint;
674 if ([m_scrollAnimationHelper.get() _isAnimating]) { 674 if ([m_scrollAnimationHelper.get() _isAnimating]) {
675 NSPoint targetOrigin = [m_scrollAnimationHelper.get() targetOrigin]; 675 NSPoint targetOrigin = [m_scrollAnimationHelper.get() targetOrigin];
676 newPoint = orientation == HorizontalScrollbar ? NSMakePoint(newPos, targ etOrigin.y) : NSMakePoint(targetOrigin.x, newPos); 676 newPoint = orientation == HorizontalScrollbar ? NSMakePoint(newPos, targ etOrigin.y) : NSMakePoint(targetOrigin.x, newPos);
677 } else 677 } else
678 newPoint = orientation == HorizontalScrollbar ? NSMakePoint(newPos, m_cu rrentPosY) : NSMakePoint(m_currentPosX, newPos); 678 newPoint = orientation == HorizontalScrollbar ? NSMakePoint(newPos, m_cu rrentPosY) : NSMakePoint(m_currentPosX, newPos);
679 679
680 [m_scrollAnimationHelper.get() scrollToPoint:newPoint]; 680 [m_scrollAnimationHelper.get() scrollToPoint:newPoint];
681 return true; 681 return true;
682 } 682 }
683 683
684 void ScrollAnimatorMac::scrollToOffsetWithoutAnimation(const FloatPoint& offset) 684 void ScrollAnimatorMac::scrollToOffsetWithoutAnimation(const FloatPoint& offset)
685 { 685 {
686 [m_scrollAnimationHelper.get() _stopRun]; 686 [m_scrollAnimationHelper.get() _stopRun];
687 immediateScrollTo(offset); 687 immediateScrollTo(offset);
688 } 688 }
689 689
690 FloatPoint ScrollAnimatorMac::adjustScrollPositionIfNecessary(const FloatPoint& position) const 690 FloatPoint ScrollAnimatorMac::adjustScrollPositionIfNecessary(const FloatPoint& position) const
691 { 691 {
692 if (!m_scrollableArea->constrainsScrollingToContentEdge()) 692 if (!m_scrollableArea->constrainsScrollingToContentEdge())
693 return position; 693 return position;
694 694
695 float newX = max<float>(min<float>(position.x(), m_scrollableArea->contentsS ize().width() - m_scrollableArea->visibleWidth()), 0); 695 IntPoint minPos = m_scrollableArea->minimumScrollPosition();
696 float newY = max<float>(min<float>(position.y(), m_scrollableArea->contentsS ize().height() - m_scrollableArea->visibleHeight()), 0); 696 IntPoint maxPos = m_scrollableArea->maximumScrollPosition();
697
698 float newX = max<float>(min<float>(position.x(), maxPos.x()), minPos.x());
699 float newY = max<float>(min<float>(position.y(), maxPos.y()), minPos.y());
697 700
698 return FloatPoint(newX, newY); 701 return FloatPoint(newX, newY);
699 } 702 }
700 703
701 void ScrollAnimatorMac::immediateScrollTo(const FloatPoint& newPosition) 704 void ScrollAnimatorMac::immediateScrollTo(const FloatPoint& newPosition)
702 { 705 {
703 FloatPoint adjustedPosition = adjustScrollPositionIfNecessary(newPosition); 706 FloatPoint adjustedPosition = adjustScrollPositionIfNecessary(newPosition);
704 707
705 bool positionChanged = adjustedPosition.x() != m_currentPosX || adjustedPosi tion.y() != m_currentPosY; 708 bool positionChanged = adjustedPosition.x() != m_currentPosX || adjustedPosi tion.y() != m_currentPosY;
706 if (!positionChanged && !scrollableArea()->scrollOriginChanged()) 709 if (!positionChanged && !scrollableArea()->scrollOriginChanged())
(...skipping 576 matching lines...) Expand 10 before | Expand all | Expand 10 after
1283 if (Scrollbar* verticalScrollbar = m_scrollableArea->verticalScrollbar()) 1286 if (Scrollbar* verticalScrollbar = m_scrollableArea->verticalScrollbar())
1284 rectInViewCoordinates = verticalScrollbar->convertToContainingView(scrol lerThumb); 1287 rectInViewCoordinates = verticalScrollbar->convertToContainingView(scrol lerThumb);
1285 1288
1286 if (rectInViewCoordinates == m_visibleScrollerThumbRect) 1289 if (rectInViewCoordinates == m_visibleScrollerThumbRect)
1287 return; 1290 return;
1288 1291
1289 m_visibleScrollerThumbRect = rectInViewCoordinates; 1292 m_visibleScrollerThumbRect = rectInViewCoordinates;
1290 } 1293 }
1291 1294
1292 } // namespace WebCore 1295 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/core/platform/graphics/chromium/GraphicsLayerChromium.cpp ('k') | Source/core/rendering/RenderLayer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698