Title: [280098] trunk/Source/WebKit
Revision
280098
Author
[email protected]
Date
2021-07-20 12:44:18 -0700 (Tue, 20 Jul 2021)

Log Message

IBeam cursor is horizontal in Mail compose window
https://bugs.webkit.org/show_bug.cgi?id=228107
<rdar://problem/80636912>

Reviewed by Wenson Hsieh.

Recently we added support for vertical writing mode for the IBeam
cursor in WebKit. This added a new parameter isHorizontalWritingMode
which defaults to false. This causes the IBeam to appear horizontal in
cases where WebPage::populateCaretContext is not called, regressing expected
behavior.

This patch changes isHorizontalWritingMode to isVerticalWritingMode
to fix this, while still allowing support for vertical writing mode.

* Shared/ios/InteractionInformationAtPosition.h:
* Shared/ios/InteractionInformationAtPosition.mm:
(WebKit::InteractionInformationAtPosition::encode const):
(WebKit::InteractionInformationAtPosition::decode):
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView pointerInteraction:styleForRegion:]):
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::populateCaretContext):

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (280097 => 280098)


--- trunk/Source/WebKit/ChangeLog	2021-07-20 19:35:56 UTC (rev 280097)
+++ trunk/Source/WebKit/ChangeLog	2021-07-20 19:44:18 UTC (rev 280098)
@@ -1,3 +1,29 @@
+2021-07-20  Kate Cheney  <[email protected]>
+
+        IBeam cursor is horizontal in Mail compose window
+        https://bugs.webkit.org/show_bug.cgi?id=228107
+        <rdar://problem/80636912>
+
+        Reviewed by Wenson Hsieh.
+
+        Recently we added support for vertical writing mode for the IBeam
+        cursor in WebKit. This added a new parameter isHorizontalWritingMode
+        which defaults to false. This causes the IBeam to appear horizontal in
+        cases where WebPage::populateCaretContext is not called, regressing expected
+        behavior. 
+
+        This patch changes isHorizontalWritingMode to isVerticalWritingMode
+        to fix this, while still allowing support for vertical writing mode.
+
+        * Shared/ios/InteractionInformationAtPosition.h:
+        * Shared/ios/InteractionInformationAtPosition.mm:
+        (WebKit::InteractionInformationAtPosition::encode const):
+        (WebKit::InteractionInformationAtPosition::decode):
+        * UIProcess/ios/WKContentViewInteraction.mm:
+        (-[WKContentView pointerInteraction:styleForRegion:]):
+        * WebProcess/WebPage/ios/WebPageIOS.mm:
+        (WebKit::populateCaretContext):
+
 2021-07-20  Alexander Mikhaylenko  <[email protected]>
 
         [GTK] Propagate GtkSettings to web process

Modified: trunk/Source/WebKit/Shared/ios/InteractionInformationAtPosition.h (280097 => 280098)


--- trunk/Source/WebKit/Shared/ios/InteractionInformationAtPosition.h	2021-07-20 19:35:56 UTC (rev 280097)
+++ trunk/Source/WebKit/Shared/ios/InteractionInformationAtPosition.h	2021-07-20 19:44:18 UTC (rev 280098)
@@ -73,7 +73,7 @@
 #endif
     bool shouldNotUseIBeamInEditableContent { false };
     bool isImageOverlayText { false };
-    bool isHorizontalWritingMode { false };
+    bool isVerticalWritingMode { false };
     WebCore::FloatPoint adjustedPointForNodeRespondingToClickEvents;
     URL url;
     URL imageURL;

Modified: trunk/Source/WebKit/Shared/ios/InteractionInformationAtPosition.mm (280097 => 280098)


--- trunk/Source/WebKit/Shared/ios/InteractionInformationAtPosition.mm	2021-07-20 19:35:56 UTC (rev 280097)
+++ trunk/Source/WebKit/Shared/ios/InteractionInformationAtPosition.mm	2021-07-20 19:44:18 UTC (rev 280098)
@@ -83,7 +83,7 @@
 #endif
     encoder << shouldNotUseIBeamInEditableContent;
     encoder << isImageOverlayText;
-    encoder << isHorizontalWritingMode;
+    encoder << isVerticalWritingMode;
     encoder << elementContext;
     encoder << imageElementContext;
 }
@@ -214,7 +214,7 @@
     if (!decoder.decode(result.isImageOverlayText))
         return false;
 
-    if (!decoder.decode(result.isHorizontalWritingMode))
+    if (!decoder.decode(result.isVerticalWritingMode))
         return false;
 
     if (!decoder.decode(result.elementContext))

Modified: trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm (280097 => 280098)


--- trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm	2021-07-20 19:35:56 UTC (rev 280097)
+++ trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm	2021-07-20 19:44:18 UTC (rev 280098)
@@ -9689,8 +9689,8 @@
 
     UIPointerStyle *(^iBeamCursor)(void) = ^{
         float beamLength = _positionInformation.caretLength * scaleFactor;
-        auto axisOrientation = _positionInformation.isHorizontalWritingMode ? UIAxisVertical : UIAxisHorizontal;
-        UIAxis iBeamConstraintAxes = _positionInformation.isHorizontalWritingMode ? UIAxisVertical : UIAxisHorizontal;
+        auto axisOrientation = _positionInformation.isVerticalWritingMode ? UIAxisHorizontal : UIAxisVertical;
+        UIAxis iBeamConstraintAxes = _positionInformation.isVerticalWritingMode ? UIAxisHorizontal : UIAxisVertical;
 
         // If the I-beam is so large that the magnetism is hard to fight, we should not apply any magnetism.
         if (beamLength > [UITextInteraction _maximumBeamSnappingLength])

Modified: trunk/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm (280097 => 280098)


--- trunk/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm	2021-07-20 19:35:56 UTC (rev 280097)
+++ trunk/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm	2021-07-20 19:44:18 UTC (rev 280098)
@@ -3039,9 +3039,9 @@
     if (isEditable)
         lineRect.setWidth(blockFlow.contentWidth());
 
-    info.isHorizontalWritingMode = renderer->isHorizontalWritingMode();
+    info.isVerticalWritingMode = !renderer->isHorizontalWritingMode();
     info.lineCaretExtent = view->contentsToRootView(lineRect);
-    info.caretLength = info.isHorizontalWritingMode ? info.lineCaretExtent.height() : info.lineCaretExtent.width();
+    info.caretLength = info.isVerticalWritingMode ? info.lineCaretExtent.width() : info.lineCaretExtent.height();
 
     bool lineContainsRequestPoint = info.lineCaretExtent.contains(request.point);
     // Force an I-beam cursor if the page didn't request a hand, and we're inside the bounds of the line.
@@ -3054,7 +3054,7 @@
         info.lineCaretExtent = view->contentsToRootView(approximateLineRectInContentCoordinates);
         if (!info.lineCaretExtent.contains(request.point) || !isEditable)
             info.lineCaretExtent.setY(request.point.y() - info.lineCaretExtent.height() / 2);
-        info.caretLength = info.isHorizontalWritingMode ? info.lineCaretExtent.height() : info.lineCaretExtent.width();
+        info.caretLength = info.isVerticalWritingMode ? info.lineCaretExtent.width() : info.lineCaretExtent.height();
     }
 
     auto nodeShouldNotUseIBeam = ^(Node* node) {
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to