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

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

Issue 24074002: Drag'n drop Autoscroll does not work properly on inner frames (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Drag'n drop Autoscroll does not work properly on inner frames Created 7 years, 3 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
« no previous file with comments | « LayoutTests/fast/events/drag-and-drop-autoscroll-inner-frame-expected.txt ('k') | no next file » | 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 * (C) 1999 Antti Koivisto (koivisto@kde.org) 3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * (C) 2005 Allan Sandfeld Jensen (kde@carewolf.com) 4 * (C) 2005 Allan Sandfeld Jensen (kde@carewolf.com)
5 * (C) 2005, 2006 Samuel Weinig (sam.weinig@gmail.com) 5 * (C) 2005, 2006 Samuel Weinig (sam.weinig@gmail.com)
6 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserv ed. 6 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserv ed.
7 * Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved. 7 * Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved.
8 * 8 *
9 * This library is free software; you can redistribute it and/or 9 * This library is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU Library General Public 10 * modify it under the terms of the GNU Library General Public
(...skipping 751 matching lines...) Expand 10 before | Expand all | Expand 10 after
762 // scrolling. 762 // scrolling.
763 IntSize RenderBox::calculateAutoscrollDirection(const IntPoint& windowPoint) con st 763 IntSize RenderBox::calculateAutoscrollDirection(const IntPoint& windowPoint) con st
764 { 764 {
765 if (!frame()) 765 if (!frame())
766 return IntSize(); 766 return IntSize();
767 767
768 FrameView* frameView = frame()->view(); 768 FrameView* frameView = frame()->view();
769 if (!frameView) 769 if (!frameView)
770 return IntSize(); 770 return IntSize();
771 771
772 IntSize offset;
773 IntPoint point = frameView->windowToContents(windowPoint);
774 IntRect box(absoluteBoundingBoxRect()); 772 IntRect box(absoluteBoundingBoxRect());
775 if (isRenderView()) 773 box.move(view()->frameView()->scrollOffset());
776 box.moveBy(frameView->windowToContents(IntPoint())); 774 IntRect windowBox = view()->frameView()->contentsToWindow(box);
777 775
778 if (point.x() < box.x() + autoscrollBeltSize) 776 IntPoint windowAutoscrollPoint = windowPoint;
779 point.move(-autoscrollBeltSize, 0);
780 else if (point.x() > box.maxX() - autoscrollBeltSize)
781 point.move(autoscrollBeltSize, 0);
782 777
783 if (point.y() < box.y() + autoscrollBeltSize) 778 if (windowAutoscrollPoint.x() < windowBox.x() + autoscrollBeltSize)
784 point.move(0, -autoscrollBeltSize); 779 windowAutoscrollPoint.move(-autoscrollBeltSize, 0);
785 else if (point.y() > box.maxY() - autoscrollBeltSize) 780 else if (windowAutoscrollPoint.x() > windowBox.maxX() - autoscrollBeltSize)
786 point.move(0, autoscrollBeltSize); 781 windowAutoscrollPoint.move(autoscrollBeltSize, 0);
787 return frameView->contentsToWindow(point) - windowPoint; 782
783 if (windowAutoscrollPoint.y() < windowBox.y() + autoscrollBeltSize)
784 windowAutoscrollPoint.move(0, -autoscrollBeltSize);
785 else if (windowAutoscrollPoint.y() > windowBox.maxY() - autoscrollBeltSize)
786 windowAutoscrollPoint.move(0, autoscrollBeltSize);
787
788 return windowAutoscrollPoint - windowPoint;
788 } 789 }
789 790
790 RenderBox* RenderBox::findAutoscrollable(RenderObject* renderer) 791 RenderBox* RenderBox::findAutoscrollable(RenderObject* renderer)
791 { 792 {
792 while (renderer && !(renderer->isBox() && toRenderBox(renderer)->canAutoscro ll())) { 793 while (renderer && !(renderer->isBox() && toRenderBox(renderer)->canAutoscro ll())) {
793 if (!renderer->parent() && renderer->node() == &renderer->document() && renderer->document().ownerElement()) 794 if (!renderer->parent() && renderer->node() == &renderer->document() && renderer->document().ownerElement())
794 renderer = renderer->document().ownerElement()->renderer(); 795 renderer = renderer->document().ownerElement()->renderer();
795 else 796 else
796 renderer = renderer->parent(); 797 renderer = renderer->parent();
797 } 798 }
(...skipping 3912 matching lines...) Expand 10 before | Expand all | Expand 10 after
4710 return 0; 4711 return 0;
4711 4712
4712 if (!layoutState && !flowThreadContainingBlock()) 4713 if (!layoutState && !flowThreadContainingBlock())
4713 return 0; 4714 return 0;
4714 4715
4715 RenderBlock* containerBlock = containingBlock(); 4716 RenderBlock* containerBlock = containingBlock();
4716 return containerBlock->offsetFromLogicalTopOfFirstPage() + logicalTop(); 4717 return containerBlock->offsetFromLogicalTopOfFirstPage() + logicalTop();
4717 } 4718 }
4718 4719
4719 } // namespace WebCore 4720 } // namespace WebCore
OLDNEW
« no previous file with comments | « LayoutTests/fast/events/drag-and-drop-autoscroll-inner-frame-expected.txt ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698