-
enrica@apple.com authored
WebCore: Can focus but not type into content editable block that contains only non-editable content. <rdar://problem/5982901> https://bugs.webkit.org/show_bug.cgi?id=31750 Reviewed by Darin Adler. The goal is to change the way we choose a visible position after hit detection, by preferring a visually equivalent editable position if available. By doing this, it is possible to add content to an editable block that initially contains only non editable elements. Test: editing/selection/mixed-editability-10.html * WebCore.base.exp: Changed to match the new signature of downstream and upstream in the Position class. * dom/Position.cpp: (WebCore::Position::atEditingBoundary): Added. (WebCore::Position::upstream): Modified to allow to cross the boundary between editable and non editable content if required. (WebCore::Position::downstream): Modified to allow to cross the boundary between editable and non editable content if required. (WebCore::Position::isCandidate): Modified to qualify as candidates positions that are at the editability boundary. (WebCore::Position::getInlineBoxAndOffset): Modified to retrieve the inline box to be used in calculating the caret rectangle. * dom/Position.h: (WebCore::Position::): * dom/PositionIterator.cpp: (WebCore::PositionIterator::atEditingBoundary): Added. (WebCore::PositionIterator::isCandidate): Modified to qualify as candidates positions that are at the editability boundary. * dom/PositionIterator.h: * editing/htmlediting.cpp: (WebCore::firstEditablePositionAfterPositionInRoot): Modified to accept not only descendants of the editable container, but the container itself. (WebCore::lastEditablePositionBeforePositionInRoot): Modified to accept not only descendants of the editable container, but the container itself. * rendering/RenderObject.cpp: (WebCore::RenderObject::createVisiblePosition): Added logic to prefer an editable position, if available. * rendering/RenderText.cpp: (WebCore::RenderText::isAllCollapsibleWhitespace): Added. * rendering/RenderText.h: LayoutTests: Can focus but not type into content editable block that contains only non-editable content. <rdar://problem/5982901> https://bugs.webkit.org/show_bug.cgi?id=31750 Reviewed by Darin Adler. * editing/selection/5825350-1-expected.txt: * editing/selection/5825350-1.html: Modified to use caret rectangle. * editing/selection/5825350-2-expected.txt: * editing/selection/5825350-2.html: Modified to use caret rectangle. * editing/selection/mixed-editability-10-expected.txt: Added. * editing/selection/mixed-editability-10.html: Added. * platform/mac/editing/deleting/5390681-2-expected.txt: Re-baselined to account for the new possible caret position. git-svn-id: http://svn.webkit.org/repository/webkit/trunk@51522 268f45cc-cd09-0410-ab3c-d52691b4dbfc
enrica@apple.com authoredWebCore: Can focus but not type into content editable block that contains only non-editable content. <rdar://problem/5982901> https://bugs.webkit.org/show_bug.cgi?id=31750 Reviewed by Darin Adler. The goal is to change the way we choose a visible position after hit detection, by preferring a visually equivalent editable position if available. By doing this, it is possible to add content to an editable block that initially contains only non editable elements. Test: editing/selection/mixed-editability-10.html * WebCore.base.exp: Changed to match the new signature of downstream and upstream in the Position class. * dom/Position.cpp: (WebCore::Position::atEditingBoundary): Added. (WebCore::Position::upstream): Modified to allow to cross the boundary between editable and non editable content if required. (WebCore::Position::downstream): Modified to allow to cross the boundary between editable and non editable content if required. (WebCore::Position::isCandidate): Modified to qualify as candidates positions that are at the editability boundary. (WebCore::Position::getInlineBoxAndOffset): Modified to retrieve the inline box to be used in calculating the caret rectangle. * dom/Position.h: (WebCore::Position::): * dom/PositionIterator.cpp: (WebCore::PositionIterator::atEditingBoundary): Added. (WebCore::PositionIterator::isCandidate): Modified to qualify as candidates positions that are at the editability boundary. * dom/PositionIterator.h: * editing/htmlediting.cpp: (WebCore::firstEditablePositionAfterPositionInRoot): Modified to accept not only descendants of the editable container, but the container itself. (WebCore::lastEditablePositionBeforePositionInRoot): Modified to accept not only descendants of the editable container, but the container itself. * rendering/RenderObject.cpp: (WebCore::RenderObject::createVisiblePosition): Added logic to prefer an editable position, if available. * rendering/RenderText.cpp: (WebCore::RenderText::isAllCollapsibleWhitespace): Added. * rendering/RenderText.h: LayoutTests: Can focus but not type into content editable block that contains only non-editable content. <rdar://problem/5982901> https://bugs.webkit.org/show_bug.cgi?id=31750 Reviewed by Darin Adler. * editing/selection/5825350-1-expected.txt: * editing/selection/5825350-1.html: Modified to use caret rectangle. * editing/selection/5825350-2-expected.txt: * editing/selection/5825350-2.html: Modified to use caret rectangle. * editing/selection/mixed-editability-10-expected.txt: Added. * editing/selection/mixed-editability-10.html: Added. * platform/mac/editing/deleting/5390681-2-expected.txt: Re-baselined to account for the new possible caret position. git-svn-id: http://svn.webkit.org/repository/webkit/trunk@51522 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Loading