[webkit-changes] [WebKit/WebKit] 1c0f30: [UnifiedPDF] Tracked text selections should be dra...

Abrar Rahman Protyasha noreply at github.com
Wed Feb 7 14:47:56 PST 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 1c0f305b2a21c9cbf2887b9317afd1e5ac0d6ec5
      https://github.com/WebKit/WebKit/commit/1c0f305b2a21c9cbf2887b9317afd1e5ac0d6ec5
  Author: Abrar Rahman Protyasha <a_protyasha at apple.com>
  Date:   2024-02-07 (Wed, 07 Feb 2024)

  Changed paths:
    M Source/WebCore/page/Page.h
    M Source/WebKit/Platform/spi/Cocoa/PDFKitSPI.h
    M Source/WebKit/WebProcess/Plugins/PDF/PDFPluginBase.h
    M Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/UnifiedPDFPlugin.h
    M Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/UnifiedPDFPlugin.mm
    M Source/WebKit/WebProcess/Plugins/PluginView.cpp
    M Source/WebKit/WebProcess/Plugins/PluginView.h
    M Source/WebKit/WebProcess/WebPage/WebPage.cpp
    M Source/WebKit/WebProcess/WebPage/WebPage.h

  Log Message:
  -----------
  [UnifiedPDF] Tracked text selections should be drawn in the page space
https://bugs.webkit.org/show_bug.cgi?id=268808
rdar://122371772

Reviewed by Simon Fraser.

Currently, there is no visual indication that we keep track of text
selections on mouse drag. This patch addresses the issue by delegating
the painting of PDFSelection elements to PDFKit, as well as laying some
groundwork to meet that end.

Specifically, this patch does the following:
1. Ask PDFKit to draw the current selection through the PDFSelection SPI
   drawForPage:withBox:active:inContext:. Also provided a forward
   declaration for the interface to keep the build happy.
2. Added hooks to inform the PDF plugin when window activity has
   changed. This allows the PDF plugin to be aware of whether or not the
   window it is in is currently active. This knowledge is vended from
   the plugin to PDFKit to ensure we draw secondary colors when we don't
   have focus.
3. Drive-by fix: remove the unnecessary concept of "committing" a
   selection, as well as the now redundant "isActive" state. There was
   extra motivation to do this since it may be confusing if it lived
   next to the window activity state.

* Source/WebCore/page/Page.h:
* Source/WebKit/Platform/spi/Cocoa/PDFKitSPI.h:
* Source/WebKit/WebProcess/Plugins/PDF/PDFPluginBase.h:
(WebKit::PDFPluginBase::windowActivityDidChange):
* Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/UnifiedPDFPlugin.h:
* Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/UnifiedPDFPlugin.mm:
(WebKit::UnifiedPDFPlugin::windowActivityDidChange):
(WebKit::UnifiedPDFPlugin::paintPDFContent):
(WebKit::UnifiedPDFPlugin::handleMouseEvent):
(WebKit::UnifiedPDFPlugin::beginTrackingSelection):
(WebKit::UnifiedPDFPlugin::continueTrackingSelection):
(WebKit::UnifiedPDFPlugin::setCurrentSelection):
(WebKit::UnifiedPDFPlugin::commitCurrentSelection): Deleted.
* Source/WebKit/WebProcess/Plugins/PluginView.cpp:
(WebKit::PluginView::windowActivityDidChange):
* Source/WebKit/WebProcess/Plugins/PluginView.h:
* Source/WebKit/WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::windowActivityDidChange):
(WebKit::WebPage::setActivityState):
* Source/WebKit/WebProcess/WebPage/WebPage.h:

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




More information about the webkit-changes mailing list