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

Side by Side Diff: Source/core/dom/Element.cpp

Issue 792513004: Implement CSSOM smooth scroll for Elements (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years 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) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) 3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * (C) 2001 Peter Kelly (pmk@post.com) 4 * (C) 2001 Peter Kelly (pmk@post.com)
5 * (C) 2001 Dirk Mueller (mueller@kde.org) 5 * (C) 2001 Dirk Mueller (mueller@kde.org)
6 * (C) 2007 David Smith (catfish.man@gmail.com) 6 * (C) 2007 David Smith (catfish.man@gmail.com)
7 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012, 2013 Apple Inc. All rights reserved. 7 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012, 2013 Apple Inc. All rights reserved.
8 * (C) 2007 Eric Seidel (eric@webkit.org) 8 * (C) 2007 Eric Seidel (eric@webkit.org)
9 * 9 *
10 * This library is free software; you can redistribute it and/or 10 * This library is free software; you can redistribute it and/or
(...skipping 788 matching lines...) Expand 10 before | Expand all | Expand 10 after
799 return; 799 return;
800 800
801 ScrollBehavior scrollBehavior = ScrollBehaviorAuto; 801 ScrollBehavior scrollBehavior = ScrollBehaviorAuto;
802 ScrollableArea::scrollBehaviorFromString(scrollToOptions.behavior(), scrollB ehavior); 802 ScrollableArea::scrollBehaviorFromString(scrollToOptions.behavior(), scrollB ehavior);
803 RenderBox* rend = renderBox(); 803 RenderBox* rend = renderBox();
804 if (rend) { 804 if (rend) {
805 double currentScaledLeft = rend->scrollLeft(); 805 double currentScaledLeft = rend->scrollLeft();
806 double currentScaledTop = rend->scrollTop(); 806 double currentScaledTop = rend->scrollTop();
807 double newScaledLeft = left * rend->style()->effectiveZoom() + currentSc aledLeft; 807 double newScaledLeft = left * rend->style()->effectiveZoom() + currentSc aledLeft;
808 double newScaledTop = top * rend->style()->effectiveZoom() + currentScal edTop; 808 double newScaledTop = top * rend->style()->effectiveZoom() + currentScal edTop;
809 // FIXME: Use scrollBehavior to decide whether to scroll smoothly or ins tantly. 809 rend->scrollToOffset(DoubleSize(newScaledLeft, newScaledTop), scrollBeha vior);
810 rend->scrollToOffset(DoubleSize(newScaledLeft, newScaledTop));
811 } 810 }
812 } 811 }
813 812
814 void Element::scrollRenderBoxTo(const ScrollToOptions& scrollToOptions) 813 void Element::scrollRenderBoxTo(const ScrollToOptions& scrollToOptions)
815 { 814 {
816 if ((scrollToOptions.hasLeft() && std::isnan(scrollToOptions.left())) 815 if ((scrollToOptions.hasLeft() && std::isnan(scrollToOptions.left()))
817 || (scrollToOptions.hasTop() && std::isnan(scrollToOptions.top()))) 816 || (scrollToOptions.hasTop() && std::isnan(scrollToOptions.top())))
818 return; 817 return;
819 818
820 ScrollBehavior scrollBehavior = ScrollBehaviorAuto; 819 ScrollBehavior scrollBehavior = ScrollBehaviorAuto;
821 ScrollableArea::scrollBehaviorFromString(scrollToOptions.behavior(), scrollB ehavior); 820 ScrollableArea::scrollBehaviorFromString(scrollToOptions.behavior(), scrollB ehavior);
822 821
823 RenderBox* rend = renderBox(); 822 RenderBox* rend = renderBox();
824 if (rend) { 823 if (rend) {
825 double scaledLeft = rend->scrollLeft(); 824 double scaledLeft = rend->scrollLeft();
826 double scaledTop = rend->scrollTop(); 825 double scaledTop = rend->scrollTop();
827 if (scrollToOptions.hasLeft()) 826 if (scrollToOptions.hasLeft())
828 scaledLeft = scrollToOptions.left() * rend->style()->effectiveZoom() ; 827 scaledLeft = scrollToOptions.left() * rend->style()->effectiveZoom() ;
829 if (scrollToOptions.hasTop()) 828 if (scrollToOptions.hasTop())
830 scaledTop = scrollToOptions.top() * rend->style()->effectiveZoom(); 829 scaledTop = scrollToOptions.top() * rend->style()->effectiveZoom();
831 // FIXME: Use scrollBehavior to decide whether to scroll smoothly or ins tantly. 830 rend->scrollToOffset(DoubleSize(scaledLeft, scaledTop), scrollBehavior);
832 rend->scrollToOffset(DoubleSize(scaledLeft, scaledTop));
833 } 831 }
834 } 832 }
835 833
836 void Element::scrollFrameBy(const ScrollToOptions& scrollToOptions) 834 void Element::scrollFrameBy(const ScrollToOptions& scrollToOptions)
837 { 835 {
838 double left = scrollToOptions.hasLeft() ? scrollToOptions.left() : 0.0; 836 double left = scrollToOptions.hasLeft() ? scrollToOptions.left() : 0.0;
839 double top = scrollToOptions.hasTop() ? scrollToOptions.top() : 0.0; 837 double top = scrollToOptions.hasTop() ? scrollToOptions.top() : 0.0;
840 if (std::isnan(left) || std::isnan(top)) 838 if (std::isnan(left) || std::isnan(top))
841 return; 839 return;
842 840
(...skipping 2563 matching lines...) Expand 10 before | Expand all | Expand 10 after
3406 return wrapper; 3404 return wrapper;
3407 3405
3408 CustomElementBinding* binding = perContextData->customElementBinding(customE lementDefinition()); 3406 CustomElementBinding* binding = perContextData->customElementBinding(customE lementDefinition());
3409 3407
3410 wrapper->SetPrototype(binding->prototype()); 3408 wrapper->SetPrototype(binding->prototype());
3411 3409
3412 return V8DOMWrapper::associateObjectWithWrapper(isolate, this, wrapperType, wrapper); 3410 return V8DOMWrapper::associateObjectWithWrapper(isolate, this, wrapperType, wrapper);
3413 } 3411 }
3414 3412
3415 } // namespace blink 3413 } // namespace blink
OLDNEW
« no previous file with comments | « LayoutTests/fast/scroll-behavior/overflow-scroll-scrollTop-expected.txt ('k') | Source/core/frame/FrameView.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698