Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 9fb8e1239267b11deab0e28e637cdbd0bad32642
https://github.com/WebKit/WebKit/commit/9fb8e1239267b11deab0e28e637cdbd0bad32642
Author: Wenson Hsieh <[email protected]>
Date: 2025-01-02 (Thu, 02 Jan 2025)
Changed paths:
A
LayoutTests/editing/selection/double-click-does-not-expand-selection-over-empty-div-expected.txt
A
LayoutTests/editing/selection/double-click-does-not-expand-selection-over-empty-div.html
M LayoutTests/platform/mac/fast/events/objc-event-api-expected.txt
M Source/WebCore/editing/TextIterator.cpp
M Source/WebCore/editing/TextIterator.h
M Source/WebCore/page/EventHandler.cpp
M Source/WebCore/page/EventHandler.h
Log Message:
-----------
[macOS] Double clicking over UI in store.steampowered.com,
beta.maps.apple.com, and other sites triggers unexpected text selection
https://bugs.webkit.org/show_bug.cgi?id=285204
rdar://137991406
Reviewed by Abrar Rahman Protyasha.
Add a heuristic to prevent double- and triple-clicks from setting the selection
using word or
paragraph granularity, in the case where the resulting selection would contain
no relevant text or
replaced content.
This helps mitigate scenarios where double clicking interactive UI on various
websites creates an
unintended (and often confusing) text selection, and also aligns our behavior
more closely with
Chrome and Firefox, when double-clicking to select text.
Also fixes: rdar://138062079
*
LayoutTests/editing/selection/double-click-does-not-expand-selection-over-empty-div-expected.txt:
Added.
*
LayoutTests/editing/selection/double-click-does-not-expand-selection-over-empty-div.html:
Added.
Add a new layout test to exercise this scenario, by double-clicking in an empty
`div` and checking
that there's no ranged selection.
* LayoutTests/platform/mac/fast/events/objc-event-api-expected.txt:
Rebaseline an existing layout test, now that text selection only starts upon
mouse drag rather than
the second mouse down in this test.
* Source/WebCore/editing/TextIterator.cpp:
(WebCore::hasAnyPlainText):
* Source/WebCore/editing/TextIterator.h:
(WebCore::hasAnyPlainText):
Add an option to ignore collapsed ranges when determining whether the given
range contains any text.
This allows us to ignore leading newline characters emitted by `TextIterator`
for positioning, for
the purposes of determining whether we should extend the selection on
double/triple click.
* Source/WebCore/page/EventHandler.cpp:
(WebCore::shouldAvoidExtendingSelectionOnClick):
See description above.
(WebCore::EventHandler::expandAndUpdateSelectionForMouseDownIfNeeded):
Add a helper method to (1) expand the given selection to respect select on
mouse down, and (2)
update the selection, dispatching the select start event, only if it passes the
check against
`shouldAvoidExtendingSelectionOnClick` above.
(WebCore::EventHandler::selectClosestWordFromHitTestResult):
(WebCore::EventHandler::handleMousePressEventTripleClick):
* Source/WebCore/page/EventHandler.h:
Canonical link: https://commits.webkit.org/288369@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes