Commit Graph

90 Commits

Author SHA1 Message Date
Astley Chen
d16bc1048c Bug 1347047 Part 2 - Remove caret timeout control from AccessibleCaretManager. r=TYLin
The feature is controlled by pref layout.accessiblecaret.timeout_ms, and has been disabled in bug 1268410.
It's time to remove relevant code from the tree.

MozReview-Commit-ID: LLu8RiQcTpm
2017-03-17 08:50:30 +08:00
Ting-Yu Lin
e84cf763d7 Bug 1273045 Part 2 - Update carets when scrolling in subframes without APZ. r=mtseng
Override OnScrollPositionChanged() in ScrollState because we want to update
carets during scrolling in subframes without APZ.

Due to the observation in bug 1273045 comment 8, we do not distinguish
PositionChangedResult::NotChanged and PositionChangedResult::Changed.
Instead, we always update caret even if its position is not changed.

To avoid excessive CaretStateChangedEvents are dispatched in
OnScrollPositionChanged(), we add IsScrollStarted to distinguish whether
OnScrollStart() is called or not.

MozReview-Commit-ID: KNi9Mct4dSk
2017-03-14 17:50:03 +08:00
Ting-Yu Lin
7577af727a Bug 1273045 Part 1 - Convert UpdateCaretsHint to use EnumSet. r=mtseng
Part 2 is going to add a new hint which will use with RespectOldAppearance.
Hence this patch.

Remove #include "mozilla/WeakPtr.h" and "nsWeakReference.h" because they're
not used in the header.

MozReview-Commit-ID: KiNv0M0v8iO
2017-03-14 15:25:16 +08:00
Ting-Yu Lin
004724aeeb Bug 1341588 Part 3 - Extend phone number selection only if it is already a phone number. r=mtseng
MozReview-Commit-ID: D25xl0oAD4o
2017-03-07 17:21:26 +08:00
Ting-Yu Lin
50da63b176 Bug 1341588 Part 2 - Add StringifiedSelection() to simplify code. r=mtseng
MozReview-Commit-ID: 1tRG8WY13ok
2017-03-07 17:09:39 +08:00
Ting-Yu Lin
fa95fabdfc Bug 1341588 Part 1 - Add spaces to the static comments for aesthetic reason. r=mtseng
MozReview-Commit-ID: IMZQ1v2KsI0
2017-03-07 16:19:31 +08:00
Mats Palmgren
7c43dcf986 Bug 1340771 part 1 - Rename nsWeakFrame to AutoWeakFrame (automated change). r=tn
MozReview-Commit-ID: 8pl4nyeGEkr
2017-03-01 18:03:14 +01:00
Ting-Yu Lin
9ba6cacec5 Bug 1338445 - Restrict whitespace match in phone number regex for AccessibleCaret. r=mtseng
In phoneRegex, replace '\\s ' (matching a whitespace character) with ' '
since phone number won't contain something like new line or tab.

Also, consider it done if selected text is not changed after calling
Modify().

MozReview-Commit-ID: 2lB9w2gYCOD
2017-02-17 22:38:08 +08:00
Tom Tromey
a4b717ab39 Bug 1060419 - make log_print use Printf.h, r=froydnj
MozReview-Commit-ID: BIZ1GQEZ1vs
2016-12-15 20:16:31 -07:00
Ting-Yu Lin
c2b2520028 Bug 1339797 - Fix select-all events fired by touch incorrectly hide the carets. r=mtseng
sHideCaretsForMouseInput is default to true on all platforms. When clicking
"SELECT ALL" on Fennec toolbar in <input>, AccessibleCaretManager will
receive SELECTALL_REASON with MOZ_SOURCE_TOUCH.

We should hide the carets only if the select-all reason is fired by
keyboard, not by touch.

MozReview-Commit-ID: D7FYIH5ZGS0
2017-02-17 14:08:48 +08:00
Ting-Yu Lin
65ed91ec8d Bug 1336388 - Use overlapping tilt mechanism in always tilt mode. r=mtseng
MozReview-Commit-ID: LwWnAbHiTBH
2017-02-08 15:51:28 +08:00
Cameron McCormack
5f9911da79 Bug 1328832 - Part 2: Rename mozFlushType to mozilla::FlushType and make it an enum class. r=bzbarsky
MozReview-Commit-ID: D3fIngSHSsl
2017-01-05 15:31:56 +08:00
Phil Ringnalda
9a09bc8ce5 Backed out changeset 079ee7b41c3a (bug 1156160) for selection reftest failures
CLOSED TREE
2016-11-30 21:34:42 -08:00
Ting-Yu Lin
6bafa31645 Bug 1156160 - Update carets when document becomes visible. r=mtseng
When the user switches back to a tab which has the selection highlight on
the document, call UpdateCarets() to bring the carets back.

MozReview-Commit-ID: LxNoNRl4FHZ
2016-11-25 17:51:40 +08:00
L. David Baron
6eb5c8ff40 Bug 1320815 - DeCOMtaminate nsIFrame::IsSelectable by returning boolean instead of nsresult. r=xidorn
MozReview-Commit-ID: EBxBcEgIvp7
2016-11-28 15:31:29 -08:00
Ting-Yu Lin
a64e1284f8 Bug 1307252 - Hide the carets when the selection is made by select all. r=kanru,kats
The mochitest for clipboard still needs the mozbrowsercaretstatechanged events,
so we disable "layout.accessiblecaret.hide_carets_for_mouse_input".

MozReview-Commit-ID: CD03lmjwUa9
2016-10-05 15:46:36 +08:00
Kartikaya Gupta
f4b14dcf26 Bug 1293483 - Keep the carets hidden when the user is using a mouse to modify the selection. r=TYLin
MozReview-Commit-ID: FJwODLk6XMS
2016-10-03 08:57:44 -04:00
Kartikaya Gupta
22a5098249 Bug 1300905 - When long-pressing on a selection, don't dismiss the selection and start a new one. Show the context menu instead. r=TYLin,mats
MozReview-Commit-ID: J0e9DqIDwnC
2016-09-30 09:36:10 -04:00
Ting-Yu Lin
e7b43b14e8 Bug 1292904 Part 3 - Use only caret image for touch area if event is a mouse type. r=mtseng
That is, exclude the text overlay to fix the double clicking and triple
clicking on a word in editable text area.

MozReview-Commit-ID: 5bELcNSRo2A
2016-08-14 21:39:30 +08:00
Ting-Yu Lin
9d6322c747 Bug 1285273 - Bail out early if ptFrame died in SelectWordOrShortcut(). r=masayuki
Check ptFrame is still alive after calling
ChangeFocusToOrClearOldFocus() and IMEStateManager::NotifyIME().

MozReview-Commit-ID: DtjoxtRIDdK
2016-07-10 14:36:02 +08:00
Kartikaya Gupta
c7f9770ada Bug 1255555 - When a frame reconstruction triggers caret elements to be cloned, ensure the dummy touch listeners are re-registered on the clones. r=tylin
MozReview-Commit-ID: 8txWmd64LC9
2016-07-11 08:16:39 -04:00
Ting-Yu Lin
d861bebff3 Bug 1283828 - Ensure output arguments are set in GetFrameForFirstRangeStartOrLastRangeEnd if returned frame isn't nullptr. r=mats
MozReview-Commit-ID: 3sC3HLPrOtF
2016-07-04 17:39:15 +08:00
Masayuki Nakano
09b74b02de Bug 1278014 part.5 Rename SelectionType::SELECTION_NORMAL to SelectionType::eNormal r=smaug
MozReview-Commit-ID: AAdxTTKEvrk
2016-06-09 18:35:22 +09:00
Masayuki Nakano
4b3d1e8406 Bug 1278014 part.2 Define mozilla::SelectionType as an enum class and use it instead of RawSelectionType as far as possible r=smaug
This patch defines mozilla::SelectionType as an enum class.  This is safer than nsISelectionController::SELECTION_* since setting illegal value to its variable is checked at build time.  So, as far as possible, this should be used everywhere (but of course, this isn't available in scriptable interfaces).

And also this implements some useful methods for managing SelectionType and RawSelectionType which are implemented in layout/nsSelection.cpp because nsISelectionController is implemented by both PresShell and nsTextEditorState.  Therefore, implementing one of them may make hard to find them.  On the other hand, nsSelection.cpp is a better file name to look for them.

Note that this patch creates mozilla::Selection::RawType() for binding.  Native code should keep using Selection::Type() but the binding code needs to use RawType() due to impossible to convert from SelectionType to RawSelectionType without explicit cast.

MozReview-Commit-ID: 81vX7A0hHQN
2016-06-11 11:06:37 +09:00
Ting-Yu Lin
7af948d643 Bug 1266782 - Use RefPtr to hold document and selection in ExtendPhoneNumberSelection. r=mats
MozReview-Commit-ID: 3zAgKt7r8TO
2016-04-28 13:59:39 +08:00
Ting-Yu Lin
f4094ca4b5 Bug 1267929 - Bail out from ExtendPhoneNumberSelection if GetAnchorFocusRange() is nullptr. r=mats
MozReview-Commit-ID: HvNhZ5o0owh
2016-04-27 17:19:51 +08:00
Ting-Yu Lin
44607fa2bf Bug 1249201 Part 2 - Show carets continuously when panning or zooming. r=mats,sebastian
Add a pref "layout.accessiblecaret.always_show_when_scrolling" defaults
to true on all platforms except b2g. When it is set to false, the carets
will be hidden during scrolling, which is the current behavior before
applying this change.

The pref "layout.accessiblecaret.extendedvisibility" was added for
Fennec to keep ActionBar open when carets temporarily hiding during
panning or zooming. Now we make carets always show by default, so the
pref can be removed. However, the floating toolbar still need to be
notified when the scrolling begins, so we dispatch "scroll" instead.

In gtest, the preference changes were in the middle of the test
function. To make the preference change clearer, I add new pref changes
or move the existing ones to the beginning of the test functions.

The 250ms transition effect added in ua.css is per request of UX
designer in bug 1249201 comment 12.

MozReview-Commit-ID: 8NGvDLPbtNY
2016-04-21 16:53:40 +08:00
Mark Capella
c17f19e635 Bug 1265750 - Some word cannot be selected via long pressing, r=TYLin, mats 2016-04-21 08:53:13 -04:00
Mark Capella
8550d2d954 Bug 1235508 - Re-implement fast Phone number selection on long-press, r=TYLin 2016-04-14 02:14:16 -04:00
Ting-Yu Lin
f90ec8a52b Bug 1168891 Part 2 - Allow one caret to be dragged across the other caret. r=mats
This behavior matches the Android convension and the built-in selection
on all desktop platforms.

MozReview-Commit-ID: 2kNm8UZnqH0
2016-04-11 17:57:29 +08:00
Ting-Yu Lin
0c4cb471c0 Bug 1168891 Part 1 - Refine two functions related to caret positioning. r=mats
FindFirstNodeWithFrame() and CompareRangeWithContentOffset() share a lot
of code duplication. I refactor and rename the two functions to improve
the readability.

MozReview-Commit-ID: CyetLHOGT23
2016-04-11 17:57:29 +08:00
Carsten "Tomcat" Book
6edc9e1d31 merge mozilla-inbound to mozilla-central a=merge 2016-03-11 16:50:43 +01:00
Mark Capella
2f9cb55372 Bug 1252802 - Web page scrolls when dragging caret in editable, r=snorp 2016-03-10 18:06:13 -05:00
Ting-Yu Lin
8a53f0b468 Bug 1097398 Part 2 - Add preferences to make carets always tilt. r=roc
This is to support Firefox Android L style carets assets that the two
carets always look like tilt.

This patch is derived from a WIP patch by Mark Capella
<markcapella@twcny.rr.com>

MozReview-Commit-ID: H3nKLz6HcpM
2016-02-16 16:55:28 +08:00
Ting-Yu Lin
23bd2e9abc Bug 1246918 - Handle PresShell gone after FlushLayout(). r=roc
After calling FlushLayout(), PresShell::Destroy() might be called and we
should consider PresShell and other resources will be no longer valid.

Before this patch, AccessibleCaretManager and AccessibleCaret(s) are
deallocated in PresShell::Destroy(). However FlushLayout() are all
invoked in AccessibleCaretManager, we need to keep manager alive to
clean up after PresShell::Destroy().

This patch makes AccessibleCaretManager live after PresShell::Destroy(),
and use IsTerminated() to check whether PreShell is vaild after each
FlushLayout() calls.

Note that event though AccessibleCaretEventHub will be unref in
PresShell::Destroy(), all the callers to AccessibleCaretEventHub's
public methods already add a ref to AccessibleCaretEventHub. So we don't
need to worry about AccessibleCaretEventHub and AccessibleCaretManager
die immediately after PresShell::Destroy().

MozReview-Commit-ID: DDpXZ7v3zyo
2016-02-15 15:12:35 +08:00
Ting-Yu Lin
5c2c766349 Bug 1246918 - Fix carets missing after scrolling down in selection mode on Fennec. r=roc
Fennec enables sCaretsExtendedVisibility which uses
Appearance::NormalNotShown instead of Appearance::None to keep actionbar
shown during scrolling. This breaks selection mode update when the
positions of the carets are not changed after scrolling.

To fix this, we need to implement appearance recovering for selection
mode scrolling like we did for cursor mode in bug 1212732, and make
UpdateCaretsForSelectionMode() respects UpdateCaretsHint.

MozReview-Commit-ID: LkfUIGKHL0h
2016-02-11 16:22:57 +08:00
Carsten "Tomcat" Book
cb9bcbbbb3 Backed out changeset bc3e37b63def (bug 1246918) for fix frequent android c1 test failures 2016-02-17 14:35:10 +01:00
Carsten "Tomcat" Book
4dbbf7e132 Backed out changeset 10e71da98b14 (bug 1246918) 2016-02-17 14:34:49 +01:00
Ting-Yu Lin
f458321cee Bug 1246918 - Handle PresShell gone after FlushLayout(). r=roc
After calling FlushLayout(), PresShell::Destroy() might be called and we
should consider PresShell and other resources will be no longer valid.

Before this patch, AccessibleCaretManager and AccessibleCaret(s) are
deallocated in PresShell::Destroy(). However FlushLayout() are all
invoked in AccessibleCaretManager, we need to keep manager alive to
clean up after PresShell::Destroy().

This patch makes AccessibleCaretManager live after PresShell::Destroy(),
and use IsTerminated() to check whether PreShell is vaild after each
FlushLayout() calls.

Note that event though AccessibleCaretEventHub will be unref in
PresShell::Destroy(), all the callers to AccessibleCaretEventHub's
public methods already add a ref to AccessibleCaretEventHub. So we don't
need to worry about AccessibleCaretEventHub and AccessibleCaretManager
die immediately after PresShell::Destroy().

MozReview-Commit-ID: DDpXZ7v3zyo
2016-02-15 15:12:35 +08:00
Ting-Yu Lin
23031ee499 Bug 1246918 - Fix carets missing after scrolling down in selection mode on Fennec. r=roc
Fennec enables sCaretsExtendedVisibility which uses
Appearance::NormalNotShown instead of Appearance::None to keep actionbar
shown during scrolling. This breaks selection mode update when the
positions of the carets are not changed after scrolling.

To fix this, we need to implement appearance recovering for selection
mode scrolling like we did for cursor mode in bug 1212732, and make
UpdateCaretsForSelectionMode() respects UpdateCaretsHint.

MozReview-Commit-ID: LkfUIGKHL0h
2016-02-11 16:22:57 +08:00
Aidin Gharibnavaz
9e61252906 Bug 1235830 - Renaming GetInternalNSEvent to WidgetEvent, in nsIDOMEvent r=smaug
MozReview-Commit-ID: Hm8Owq17KXn
2016-02-12 19:10:07 +03:30
Ting-Yu Lin
2caaa62ca6 Bug 1246064 - Support long press to show AccessibleCaret on empty input for Fennec. r=roc 2016-02-08 16:08:46 +08:00
Ting-Yu Lin
f8b28dd69c Bug 1240917 - Do not show caret in empty input on Fennec. r=roc
Per request in bug 1240917 comment 15, we decided not to show caret when
single press on an empty input. This effectively reverts the work in Bug
1230582.
2016-02-02 14:32:31 +08:00
Phil Ringnalda
9d510a804d Merge m-c to m-i 2016-01-30 09:43:42 -08:00
Kyle Huey
e95edb30a9 Bug 1241764: Replace nsPIDOMWindow with nsPIDOMWindowInner/Outer. r=mrbkap,smaug 2016-01-30 09:05:36 -08:00
Mark Capella
d393adc106 Bug 1240286 - Deleting text with backspace causes the action bar to glitch, r=smaug, TYLin, jchen 2016-01-30 00:08:55 -05:00
Carsten "Tomcat" Book
ff52619dbe Merge mozilla-central to mozilla-inbound 2016-01-27 12:10:56 +01:00
Ting-Yu Lin
103e39e10b Bug 1121468 - Show carets when long-pressing on selection highlight. r=roc
The blur event will hide the carets and produces a standalone selection
highlight without carets. When a user long-pressing on the highlight, we
should show carets for the original selection highlight instead of
select a new word.

The helper UpdateCaretsWithHapticFeedback() should only be needed when
long-pressing. It should suffice to live within SelectWordOrShortcut()
instead of being a member function.
2016-01-25 15:50:28 +08:00
Mark Capella
6369e69ab9 Bug 1242349 - Provide unique AccessibleCaret pref for JS selection changes, r=TYLin 2016-01-26 09:27:36 -05:00
Ting-Yu Lin
8e5a5a65f0 Bug 1241008 - Add preference to show or hide selection bars. r=mtseng 2016-01-21 11:11:38 +08:00