Double-click doesn't select the last word of the line if there is no end punctuation and next element is inline-block
Categories
(Core :: DOM: Selection, defect, P2)
Tracking
()
People
(Reporter: tustamido, Assigned: emilio)
References
(Regression)
Details
(Keywords: regression)
Attachments
(2 files)
As anyone who knows how much easier double-click + drag makes text selection (you don't have to aim at word boundaries), I use that feature a lot.
But I'm annoyed that it doesn't work properly in WhatsApp Web. If the last line of a message (almost vertically aligned with message time) doesn't have end punctuation, I can't select the last word. If I insist by dragging all the way to the right, then the last word is selected, but message time is selected too ("18:08" is how time is formatted here, just in case). It's impossible to include the last word without selecting the hour (18) too.
So I stripped down the code until I got the bare minimum to reproduce the issue. See the attachment.
You can't select the last word of the line by double-clicking it. And if you double-click a word before and drag to the end of the line, still the last word wouldn't be selected.
Even if you double-click far to the right of the end of the line and drag to the left, last word is skipped in selection.
Then I ran mozregression and found out that it's a regression. As Mozilla deletes autoland builds from over a year ago, I can't point to the exact change that cause the regression, but this is the range:
https://hg.mozilla.org/mozilla-central/pushloghtml?fromchange=3804441e575c9f46fcb03894de3c780eeae7197f&tochange=ee7f64d0764961e9663c681efc8d2b3759af79d6
Works fine in Blink.
You shoud also notice that if you include an end punctuation in the line, then you can select until the end including the punctuation.
Comment 2•4 years ago
|
||
Regression window:
https://hg.mozilla.org/integration/mozilla-inbound/pushloghtml?fromchange=0be3532802e3bad1ad91ee635a6b7abb902d3d27&tochange=0be927d6e79e5b2fc06efef46569f4df2890ee93
Assignee | ||
Updated•4 years ago
|
Assignee | ||
Updated•4 years ago
|
Assignee | ||
Comment 3•4 years ago
|
||
What the rest of the selection code uses is IsBlockOutside, which is the
right thing to do here.
Updated•4 years ago
|
Assignee | ||
Comment 4•4 years ago
|
||
Thanks for the excellent reduced test-case, and Alice for finding the regression range!
(In reply to Alice0775 White from comment #2)
Regression window:
https://hg.mozilla.org/integration/mozilla-inbound/pushloghtml?fromchange=0be3532802e3bad1ad91ee635a6b7abb902d3d27&tochange=0be927d6e79e5b2fc06efef46569f4df2890ee93
Sorry for the offtopic, but how did you get that range? For me, mozregression doesn't go beyond what I posted. It would be very useful to be able to get more specific ranges for builds from over a year ago.
And Emilio, thanks for the fix!
Comment hidden (offtopic) |
Updated•4 years ago
|
Comment 10•4 years ago
|
||
bugherder |
Updated•4 years ago
|
Reporter | ||
Comment 11•3 years ago
|
||
Beyond the regression above, maybe the fix didn't really fix it as it should have.
If you open the test-case, double-click the first word (select
), hold and move to the far right, only select
will stay selected*, but all the text should be selected.
In Fx 52, before the original regression, this doesn't happen, the entire phrase is selected as expected. The same in Vivaldi (Chromium-based).
*: this is inconsistent. Sometimes all the text is selected, but it usually doesn't go further than the first word.
Description
•