Closed
Bug 661388
Opened 14 years ago
Closed 13 years ago
Support selecting text in web content
Categories
(Firefox for Android Graveyard :: General, defect)
Firefox for Android Graveyard
General
Tracking
(firefox7 fixed, fennec7+)
VERIFIED
FIXED
Firefox 7
People
(Reporter: mfinkle, Assigned: mfinkle)
References
Details
Attachments
(2 files, 7 obsolete files)
35.09 KB,
patch
|
mbrubeck
:
review+
|
Details | Diff | Splinter Review |
5.29 KB,
patch
|
Details | Diff | Splinter Review |
Mobile browser typically need to support a special mode to allow text in web content to be selected and copied to the clipboard.
We are going to implement the Android model for this behavior. It will be available in all Fennec builds, not just Android.
Attaching a WIP
Updated•14 years ago
|
Assignee | ||
Comment 2•14 years ago
|
||
This patch positions the handles better on initial long tap (except when the web content is zoomed!)
The handles are hard to "hit" on devices. We need to enlarge the hit area of the handles somehow (CSS padding or mouse tap "gravity")
Attachment #536747 -
Attachment is obsolete: true
Updated•13 years ago
|
tracking-fennec: ? → 7+
Assignee | ||
Comment 3•13 years ago
|
||
This patch works OK unless you double tap (or pinch zoom). Then the mouse coords seem wrong, but I haven't figured out why.
Another problem with this patch is moving the start handle or a link will activate the link. Doing "mousedown" / "mouseup" on a link will do that. Should be simple enough to trick gecko into not making a "click".
Last problem is making the handles go away when page changes or resets in some way. Again, easy enough to listen for the right events (like Form Helper).
I really need to figure out the offset/scale/ coord problems before moving on.
Attachment #537389 -
Attachment is obsolete: true
Attachment #540528 -
Flags: feedback?(mbrubeck)
Assignee | ||
Comment 4•13 years ago
|
||
Note: To test, load a page with <p> text, like planet mozilla.
* Try long tap on text with no scrolling or changes in zoom. (should be fine)
* Scroll down the page and try again. (should be fine)
* Double tap or pinch to zoom in and try again. (handles are mis-positioned)
Do the zoom test with no scroll to actually get a chance to see the handles mis-positioned. Otherwise they are off-screen.
Assignee | ||
Comment 5•13 years ago
|
||
With help from Wes, this patch seems to work pretty well. Well enough to get reviewed.
Attachment #540528 -
Attachment is obsolete: true
Attachment #540528 -
Flags: feedback?(mbrubeck)
Attachment #541169 -
Flags: review?(mbrubeck)
Comment 6•13 years ago
|
||
Some notes from testing this patch:
If I drag a handle over a link, I trigger the link when I release my mouse/finger.
Zooming with the scroll wheel (rocker switch on Maemo) leaves the text selected but does not adjust the handle positions. This doesn't matter on Android currently, but we should probably listen for zoom events and either cancel the selection or move the handles.
Once in a while I get in a state where one the end handle is correctly positioned, but the start handle is offset vertically. It's drawn too far down by a fixed number of pixels. The offset remains the same size regardless of what text I select or where I zoom/scroll.
Assignee | ||
Comment 7•13 years ago
|
||
(In reply to comment #6)
> Some notes from testing this patch:
>
> If I drag a handle over a link, I trigger the link when I release my
> mouse/finger.
Fixed using a hack: Don't fire a mouseup, only a mousedown. That is enough to position the caret. A platform fix would be better. I'll file a bug.
> Zooming with the scroll wheel (rocker switch on Maemo) leaves the text
> selected but does not adjust the handle positions. This doesn't matter on
> Android currently, but we should probably listen for zoom events and either
> cancel the selection or move the handles.
Fixed. Added a few events to hide the handles
> Once in a while I get in a state where one the end handle is correctly
> positioned, but the start handle is offset vertically. It's drawn too far
> down by a fixed number of pixels. The offset remains the same size
> regardless of what text I select or where I zoom/scroll.
Could be related to the link issue, which I "fixed" It seemed to work better for me on device with the fix. The platform fix is the best solution.
I have found the selection to be slow to update at times too, especially during a page load. Again, passing mouse events/messages and using the mouse event hack are probably the cause. We'll see what a proper platform API does to improve the perf.
Assignee | ||
Comment 8•13 years ago
|
||
This patch also adds the TapMove listener to the window, making it easier to drag the handles.
Attachment #541169 -
Attachment is obsolete: true
Attachment #541169 -
Flags: review?(mbrubeck)
Attachment #541468 -
Flags: review?(mbrubeck)
Comment 9•13 years ago
|
||
Comment on attachment 541468 [details] [diff] [review]
patch final?
Looks good to me. Might still cause some issues on sites with onmousedown handlers in content, but that can be fixed in the platform later.
SelectionHelper could be moved to its own lazy-loaded JS file, if we want to prevent common-ui.js from growing too large.
Attachment #541468 -
Flags: review?(mbrubeck) → review+
Assignee | ||
Comment 10•13 years ago
|
||
http://hg.mozilla.org/mozilla-central/rev/dbd02a315176
Filed bug 666819 for platform API help
Status: NEW → RESOLVED
Closed: 13 years ago
Resolution: --- → FIXED
Assignee | ||
Comment 11•13 years ago
|
||
I broke a test, so this patch fixes it and adds a simple test for tapping in a block of text.
The broken test was an <img> wrapped in a <div> and <div>s are fair game for text selection, so we got a "content-text" type being returned too. The fix was to add that to the expected types check. I also added a plain text tap check too. It should only return "content-text"
Attachment #541575 -
Flags: review?(mbrubeck)
Updated•13 years ago
|
Attachment #541575 -
Flags: review?(mbrubeck) → review+
Comment 12•13 years ago
|
||
backed out to investigate why after this changeset we didn't see anymore a green b-c on Android.
http://hg.mozilla.org/mozilla-central/rev/a87ee7550f6a
Status: RESOLVED → REOPENED
Resolution: FIXED → ---
Updated•13 years ago
|
Flags: in-litmus?(aaron.train)
Comment 13•13 years ago
|
||
feel free to use this patch. Tested on a tegra and it passes the browser_tapping.js testcase
Assignee | ||
Comment 14•13 years ago
|
||
This patch is the same basic patch as before. It has a little more error handling and Joel's simple fix for the failing test.
I'll post an interdiff in a moment
Attachment #541468 -
Attachment is obsolete: true
Attachment #541575 -
Attachment is obsolete: true
Attachment #541724 -
Attachment is obsolete: true
Attachment #541757 -
Flags: review?(mbrubeck)
Assignee | ||
Comment 15•13 years ago
|
||
diffs from the original patch
Updated•13 years ago
|
Attachment #541757 -
Flags: review?(mbrubeck) → review+
Assignee | ||
Comment 16•13 years ago
|
||
pushed again:
http://hg.mozilla.org/mozilla-central/rev/99708970cdf5
Status: REOPENED → RESOLVED
Closed: 13 years ago → 13 years ago
Resolution: --- → FIXED
Updated•13 years ago
|
Target Milestone: --- → Firefox 7
Comment 17•13 years ago
|
||
Verified Fixed based on current implementation
Mozilla/5.0 (Android; Linux armv7l; rv:7.0a1) Gecko/20110630 Firefox/7.0a1 Fennec/7.0a1
Status: RESOLVED → VERIFIED
Comment 18•13 years ago
|
||
Litmus manual:
https://litmus.mozilla.org/show_test.cgi?searchType=by_id&id=22927
https://litmus.mozilla.org/show_test.cgi?searchType=by_id&id=22928
https://litmus.mozilla.org/show_test.cgi?searchType=by_id&id=22929
Flags: in-litmus?(aaron.train) → in-litmus+
Updated•13 years ago
|
status-firefox7:
--- → fixed
You need to log in
before you can comment on or make changes to this bug.
Description
•