Commit graph

90 commits

Author SHA1 Message Date
Astley Chen
785a31d171 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

--HG--
extra : rebase_source : 906299afe9fbcb4bad2c74c83f19eb98b8815882
2017-03-17 08:50:30 +08:00
Ting-Yu Lin
7bd47fa30a 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

--HG--
extra : rebase_source : 61d29fb0e1b6b91971217d3f45a791c456fa4f07
2017-03-14 17:50:03 +08:00
Ting-Yu Lin
fb0e5cae3e 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

--HG--
extra : rebase_source : 0969fc5accf11ac69bc97e3a51569b063172ffe3
2017-03-14 15:25:16 +08:00
Ting-Yu Lin
88865e6258 Bug 1341588 Part 3 - Extend phone number selection only if it is already a phone number. r=mtseng
MozReview-Commit-ID: D25xl0oAD4o

--HG--
extra : rebase_source : 0ca3ffe41bbf5f5e9b353b3455fbd88b63417262
2017-03-07 17:21:26 +08:00
Ting-Yu Lin
8ccfd5c8a6 Bug 1341588 Part 2 - Add StringifiedSelection() to simplify code. r=mtseng
MozReview-Commit-ID: 1tRG8WY13ok

--HG--
extra : rebase_source : 97cd124299059b082583d503bcbf56da15db08e3
2017-03-07 17:09:39 +08:00
Ting-Yu Lin
5ee24f0a0a Bug 1341588 Part 1 - Add spaces to the static comments for aesthetic reason. r=mtseng
MozReview-Commit-ID: IMZQ1v2KsI0

--HG--
extra : rebase_source : 4bb53124bd7333e22e803ec6851820682569ec2a
2017-03-07 16:19:31 +08:00
Mats Palmgren
d13aaf9ce0 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
1578a6f939 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

--HG--
extra : rebase_source : f2ea498bbd17c1876a9b7f769cbe93cef84520bb
2017-02-17 22:38:08 +08:00
Tom Tromey
5f8f360823 Bug 1060419 - make log_print use Printf.h, r=froydnj
MozReview-Commit-ID: BIZ1GQEZ1vs

--HG--
extra : rebase_source : 2f1f0aa12493c44f352d9a7e8683e7bb72d2d75b
2016-12-15 20:16:31 -07:00
Ting-Yu Lin
eaa14d29dc 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

--HG--
extra : rebase_source : 4cbd741b6f4b58830c1bd5cb3ac2e3a43782f02c
2017-02-17 14:08:48 +08:00
Ting-Yu Lin
723732ff7f Bug 1336388 - Use overlapping tilt mechanism in always tilt mode. r=mtseng
MozReview-Commit-ID: LwWnAbHiTBH

--HG--
extra : rebase_source : fb71526b2205edcaa40c5f6d2ace863ad7831a2a
2017-02-08 15:51:28 +08:00
Cameron McCormack
babad063ff 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
702d0d5527 Backed out changeset 079ee7b41c3a (bug 1156160) for selection reftest failures
CLOSED TREE
2016-11-30 21:34:42 -08:00
Ting-Yu Lin
678e94aa9a 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

--HG--
extra : rebase_source : f6fdc9b5c646b064bbe1e27456bbeaac063bd04c
2016-11-25 17:51:40 +08:00
L. David Baron
03d6962a30 Bug 1320815 - DeCOMtaminate nsIFrame::IsSelectable by returning boolean instead of nsresult. r=xidorn
MozReview-Commit-ID: EBxBcEgIvp7

--HG--
extra : rebase_source : 49e5a370df86baec014e99be56b05d451d5ee78c
2016-11-28 15:31:29 -08:00
Ting-Yu Lin
bc5a26efde 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

--HG--
extra : rebase_source : 530d241764d55ed6507f993511c74cf820195283
2016-10-05 15:46:36 +08:00
Kartikaya Gupta
8b51259dcd 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
435b8ac3fc 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
1ef637a036 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

--HG--
extra : rebase_source : 4664e186b13b3170022c0fe294f580cd15650271
2016-08-14 21:39:30 +08:00
Ting-Yu Lin
ad4f98ca69 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

--HG--
extra : rebase_source : ff6d18eb15d719d4f00dce249e2a33f5a4823203
2016-07-10 14:36:02 +08:00
Kartikaya Gupta
e0f363fe61 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
e9e4654b4a Bug 1283828 - Ensure output arguments are set in GetFrameForFirstRangeStartOrLastRangeEnd if returned frame isn't nullptr. r=mats
MozReview-Commit-ID: 3sC3HLPrOtF

--HG--
extra : rebase_source : 5acccc8ddee30387c9f113f6b72aa37d14a75db0
extra : amend_source : fbcb6eb5336595446281e755d2558b38c0c23b4c
2016-07-04 17:39:15 +08:00
Masayuki Nakano
d960ef26d5 Bug 1278014 part.5 Rename SelectionType::SELECTION_NORMAL to SelectionType::eNormal r=smaug
MozReview-Commit-ID: AAdxTTKEvrk

--HG--
extra : rebase_source : 82e10db6b8b17d4f571625e34bb3c8f1905ef58a
2016-06-09 18:35:22 +09:00
Masayuki Nakano
00591135a4 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

--HG--
extra : rebase_source : d9f88e217c713c60d1c2578ce6421c73ccba8650
2016-06-11 11:06:37 +09:00
Ting-Yu Lin
f24a9b7431 Bug 1266782 - Use RefPtr to hold document and selection in ExtendPhoneNumberSelection. r=mats
MozReview-Commit-ID: 3zAgKt7r8TO

--HG--
extra : rebase_source : 1ee468762812a955a41908bd0ce7f4b41aee8859
2016-04-28 13:59:39 +08:00
Ting-Yu Lin
b8bf17b6b3 Bug 1267929 - Bail out from ExtendPhoneNumberSelection if GetAnchorFocusRange() is nullptr. r=mats
MozReview-Commit-ID: HvNhZ5o0owh

--HG--
extra : rebase_source : d003f7fc6d065bb439d24e0364fe34086f14ad88
2016-04-27 17:19:51 +08:00
Ting-Yu Lin
bcbf8175b8 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

--HG--
extra : rebase_source : 3f7a9ebdf4c70b0282dbf9e8f18cbe5cca656dbe
2016-04-21 16:53:40 +08:00
Mark Capella
a5dadf5639 Bug 1265750 - Some word cannot be selected via long pressing, r=TYLin, mats 2016-04-21 08:53:13 -04:00
Mark Capella
88cc5b6c9a Bug 1235508 - Re-implement fast Phone number selection on long-press, r=TYLin 2016-04-14 02:14:16 -04:00
Ting-Yu Lin
152cf5d714 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

--HG--
extra : rebase_source : 097918c7c49e7cd545af52e9b3f3c540475ec589
2016-04-11 17:57:29 +08:00
Ting-Yu Lin
0f764ef889 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

--HG--
extra : rebase_source : e026acc87347253bcc795538ea06cbbd68634227
2016-04-11 17:57:29 +08:00
Carsten "Tomcat" Book
e070379821 merge mozilla-inbound to mozilla-central a=merge 2016-03-11 16:50:43 +01:00
Mark Capella
aa9ca8ef90 Bug 1252802 - Web page scrolls when dragging caret in editable, r=snorp 2016-03-10 18:06:13 -05:00
Ting-Yu Lin
b063b0cec5 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

--HG--
extra : rebase_source : b3a77b0bb8aaea8f010002f54fde075c9d469711
2016-02-16 16:55:28 +08:00
Ting-Yu Lin
9410058023 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

--HG--
extra : rebase_source : 280e2512fb9f28d933f5b8d65a9f303ac81c58e5
extra : source : 10e71da98b144fbf42aaa81a1056910a3766a6cb
2016-02-15 15:12:35 +08:00
Ting-Yu Lin
860487f7f6 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

--HG--
extra : rebase_source : 0ef8d28ce55c3ddd29ea32ee6888ee7fe14c34ad
extra : source : bc3e37b63defca87d0de165fe167ef7f8a7db651
2016-02-11 16:22:57 +08:00
Carsten "Tomcat" Book
436f1bf747 Backed out changeset bc3e37b63def (bug 1246918) for fix frequent android c1 test failures 2016-02-17 14:35:10 +01:00
Carsten "Tomcat" Book
8cbc76d2fd Backed out changeset 10e71da98b14 (bug 1246918) 2016-02-17 14:34:49 +01:00
Ting-Yu Lin
585b41e8b5 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

--HG--
extra : rebase_source : 2698f0313e394b64ff8caacf21493c874510a7ce
2016-02-15 15:12:35 +08:00
Ting-Yu Lin
8f500a4074 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

--HG--
extra : rebase_source : 2e68786e09046967f7c6af16fa6b393f133dc12c
2016-02-11 16:22:57 +08:00
Aidin Gharibnavaz
6863090c8a Bug 1235830 - Renaming GetInternalNSEvent to WidgetEvent, in nsIDOMEvent r=smaug
MozReview-Commit-ID: Hm8Owq17KXn

--HG--
extra : transplant_source : 2%82%D5%89%19%94%7C%E7%CA1%99%B5%24%1F5%E1%C0%1F%DE%07
2016-02-12 19:10:07 +03:30
Ting-Yu Lin
276d86f23b Bug 1246064 - Support long press to show AccessibleCaret on empty input for Fennec. r=roc
--HG--
extra : commitid : 54K1eLvKmSr
extra : rebase_source : 76a64e40ec15c6d110a461d5fb9d66d3ac86852e
2016-02-08 16:08:46 +08:00
Ting-Yu Lin
7d02ded5a1 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.

--HG--
extra : commitid : IjKGpqAR6zP
extra : rebase_source : d476618b4f419cf2d96bb33264cfd8ccb6e3fa61
2016-02-02 14:32:31 +08:00
Phil Ringnalda
a39d6e46e4 Merge m-c to m-i 2016-01-30 09:43:42 -08:00
Kyle Huey
91efc5a86c Bug 1241764: Replace nsPIDOMWindow with nsPIDOMWindowInner/Outer. r=mrbkap,smaug 2016-01-30 09:05:36 -08:00
Mark Capella
1cccfbae8e 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
92b2943e68 Merge mozilla-central to mozilla-inbound 2016-01-27 12:10:56 +01:00
Ting-Yu Lin
62a80ac969 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.

--HG--
extra : commitid : 789VwIRV03I
extra : rebase_source : ef4e9dd1260cec7fd900f68aacdc405bc018b3ce
2016-01-25 15:50:28 +08:00
Mark Capella
ede11d4e28 Bug 1242349 - Provide unique AccessibleCaret pref for JS selection changes, r=TYLin 2016-01-26 09:27:36 -05:00
Ting-Yu Lin
94991d3936 Bug 1241008 - Add preference to show or hide selection bars. r=mtseng
--HG--
extra : rebase_source : 87593ce1fc35e0d99e4a5b68f5fe5b3725cc25b6
2016-01-21 11:11:38 +08:00