[webkit-changes] [WebKit/WebKit] 235d3f: Caret is incorrectly clipped in limited cases

mwyrzykowski noreply at github.com
Mon Apr 24 16:21:26 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 235d3f38636339f2b6c0ac79a177f7f735c13ce7
      https://github.com/WebKit/WebKit/commit/235d3f38636339f2b6c0ac79a177f7f735c13ce7
  Author: Mike Wyrzykowski <mwyrzykowski at apple.com>
  Date:   2023-04-24 (Mon, 24 Apr 2023)

  Changed paths:
    M Source/WebCore/editing/FrameSelection.cpp
    M Source/WebCore/platform/CaretAnimator.cpp
    M Source/WebCore/platform/CaretAnimator.h
    M Source/WebCore/platform/graphics/BifurcatedGraphicsContext.cpp
    M Source/WebCore/platform/graphics/BifurcatedGraphicsContext.h
    M Source/WebCore/platform/graphics/GraphicsContext.h
    M Source/WebCore/platform/graphics/NullGraphicsContext.h
    M Source/WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp
    M Source/WebCore/platform/graphics/cairo/GraphicsContextCairo.h
    M Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp
    M Source/WebCore/platform/graphics/cg/GraphicsContextCG.h
    M Source/WebCore/platform/graphics/displaylists/DisplayList.cpp
    M Source/WebCore/platform/graphics/displaylists/DisplayListItemBuffer.cpp
    M Source/WebCore/platform/graphics/displaylists/DisplayListItemType.cpp
    M Source/WebCore/platform/graphics/displaylists/DisplayListItemType.h
    M Source/WebCore/platform/graphics/displaylists/DisplayListItems.cpp
    M Source/WebCore/platform/graphics/displaylists/DisplayListItems.h
    M Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.cpp
    M Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.h
    M Source/WebCore/platform/graphics/displaylists/DisplayListRecorderImpl.cpp
    M Source/WebCore/platform/graphics/displaylists/DisplayListRecorderImpl.h
    M Source/WebCore/platform/graphics/nicosia/cairo/NicosiaCairoOperationRecorder.cpp
    M Source/WebCore/platform/graphics/nicosia/cairo/NicosiaCairoOperationRecorder.h
    M Source/WebCore/rendering/GlyphDisplayListCache.cpp
    M Source/WebCore/rendering/RenderObject.cpp
    M Source/WebCore/rendering/RenderObject.h
    M Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.cpp
    M Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.h
    M Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.messages.in
    M Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp
    M Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.h

  Log Message:
  -----------
  Caret is incorrectly clipped in limited cases
https://bugs.webkit.org/show_bug.cgi?id=255474
<radar://108056572>

Reviewed by Simon Fraser.

Allow caret to render outside the current clip rectangle.

Change is mostly mechanical, interesting part in RenderObject.cpp
and FrameSelection.cpp.

* Source/WebCore/platform/graphics/BifurcatedGraphicsContext.cpp:
(WebCore::BifurcatedGraphicsContext::resetClip):
* Source/WebCore/platform/graphics/BifurcatedGraphicsContext.h:
* Source/WebCore/platform/graphics/GraphicsContext.h:
* Source/WebCore/platform/graphics/NullGraphicsContext.h:
* Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp:
(WebCore::GraphicsContextCG::resetClip):
* Source/WebCore/platform/graphics/cg/GraphicsContextCG.h:
* Source/WebCore/platform/graphics/displaylists/DisplayList.cpp:
(WebCore::DisplayList::DisplayList::append):
* Source/WebCore/platform/graphics/displaylists/DisplayListItemBuffer.cpp:
(WebCore::DisplayList::ItemHandle::apply):
(WebCore::DisplayList::ItemHandle::destroy):
(WebCore::DisplayList::ItemHandle::safeCopy const):
* Source/WebCore/platform/graphics/displaylists/DisplayListItemType.cpp:
(WebCore::DisplayList::sizeOfItemInBytes):
(WebCore::DisplayList::isDrawingItem):
(WebCore::DisplayList::isInlineItem):
* Source/WebCore/platform/graphics/displaylists/DisplayListItemType.h:
* Source/WebCore/platform/graphics/displaylists/DisplayListItems.cpp:
(WebCore::DisplayList::ResetClip::apply const):
(WebCore::DisplayList::operator<<):
(WebCore::DisplayList::dumpItemHandle):
* Source/WebCore/platform/graphics/displaylists/DisplayListItems.h:
(WebCore::DisplayList::ResetClip::ResetClip):
* Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.cpp:
(WebCore::DisplayList::Recorder::resetClip):
* Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.h:
* Source/WebCore/platform/graphics/displaylists/DisplayListRecorderImpl.cpp:
(WebCore::DisplayList::RecorderImpl::recordResetClip):
* Source/WebCore/platform/graphics/displaylists/DisplayListRecorderImpl.h:
* Source/WebCore/rendering/GlyphDisplayListCache.cpp:
(WebCore::canShareDisplayListWithItem):
* Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.cpp:
(WebKit::RemoteDisplayListRecorder::resetClip):
* Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.h:
* Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.messages.in:
* Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp:
(WebKit::RemoteDisplayListRecorderProxy::recordResetClip):
* Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.h:

* Source/WebCore/editing/FrameSelection.cpp:
(WebCore::repaintCaretForLocalRect):
repaint without clipping if the rectangle is changed by the animator.

* Source/WebCore/platform/CaretAnimator.cpp:
(WebCore::CaretAnimator::caretRepaintRectForLocalRect const):
(WebCore::CaretAnimator::repaintCaretRectForLocalRect const): Deleted.
* Source/WebCore/platform/CaretAnimator.h:
Renamed member function.

* Source/WebCore/rendering/RenderObject.cpp:
(WebCore::RenderObject::issueRepaint const):
(WebCore::RenderObject::repaintRectangle const):
* Source/WebCore/rendering/RenderObject.h:
Allow RenderObject to repaint the rectangle without clipping to
the container frame.

Canonical link: https://commits.webkit.org/263346@main




More information about the webkit-changes mailing list