Commit Graph

118 Commits

Author SHA1 Message Date
Jimmy Wang
706e10af7d Bug 1261299 - Update the selection cache on repaint to handle when a pre-existing selection becomes active aka the current selection. r=smaug
MozReview-Commit-ID: HrTQnHd12rg
2016-07-27 16:05:37 -04:00
Masayuki Nakano
4e5926428a Bug 1278014 part.3 Define 2 constants for number of SelectionType and number of SelectionType except "none" r=smaug
This patch defines two constants kSelectionTypeCount and kPresentSelectionTypeCount.  The former is same as nsISelectionController::NUM_SELECTIONTYPES.  The latter is kSelectionTypeCount - 1 for excluding SELECTION_NONE.  The latter is useful in some loops which handle all selection types except SELECTION_NONE.

Note that this patch fixes a bug of nsFrameSelection.  That doesn't treat SELECTION_NONE as a selection (see the definition of index), however, it defines redundant item and doesn't use it actually.  Additionally, it computes invalid selection type in each loop.  Therefore, without this patch, debug build hits MOZ_ASSERT() in ToSelectionType(RawSelectionType).

Note that these constants are defined as anonymous enum because we cannot define as const (or static) even with extern.  If we'd try to do it, it caused link error or not available in nsFrameSelection.cpp as constant value since they were not initialized if they were initialized in nsSelection.cpp.  Therefore, these constants are defined as enum items but using "k" prefix.

MozReview-Commit-ID: H6sH7NBEXlE
2016-06-11 11:12:26 +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
Masayuki Nakano
71befe7dcf Bug 1278014 part.1 Rename SelectionType in nsISelectionController.idl to mozilla::RawSelectionType r=smaug
mozilla::SelectionType will be an enum class. Therefore, we need to rename SelectionType with a word "raw" since it's a type for raw nsISelectionController::SELECTION_*.

MozReview-Commit-ID: K8SO0bbpv0Y
2016-06-07 22:42:06 +09:00
Botond Ballo
55ad80cc3b Bug 1238137 - Telemetry pings for main thread scrolling to bring the caret into view after moving it in response to keyboard input. r=ehsan 2016-02-03 20:36:24 -05:00
Mark Capella
b60e4524b6 Bug 1215959 - (GeckoCaret2) Upgrade Core and AccessibleCaret, r=smaug 2015-12-01 15:25:06 -05:00
Simon Montagu
432859415f Bug 1216096: restore previous RTL caret behaviour by backout of bug 1164963, bug 1177505, and bug 1180417. r=jfkthame 2015-11-10 04:42:23 -08:00
Nathan Froyd
4e6d8f6705 Bug 1207245 - part 6 - rename nsRefPtr<T> to RefPtr<T>; r=ehsan; a=Tomcat
The bulk of this commit was generated with a script, executed at the top
level of a typical source code checkout.  The only non-machine-generated
part was modifying MFBT's moz.build to reflect the new naming.

CLOSED TREE makes big refactorings like this a piece of cake.

 # The main substitution.
find . -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o -name '*.mm' -o -name '*.idl'| \
    xargs perl -p -i -e '
 s/nsRefPtr\.h/RefPtr\.h/g; # handle includes
 s/nsRefPtr ?</RefPtr</g;   # handle declarations and variables
'

 # Handle a special friend declaration in gfx/layers/AtomicRefCountedWithFinalize.h.
perl -p -i -e 's/::nsRefPtr;/::RefPtr;/' gfx/layers/AtomicRefCountedWithFinalize.h

 # Handle nsRefPtr.h itself, a couple places that define constructors
 # from nsRefPtr, and code generators specially.  We do this here, rather
 # than indiscriminantly s/nsRefPtr/RefPtr/, because that would rename
 # things like nsRefPtrHashtable.
perl -p -i -e 's/nsRefPtr/RefPtr/g' \
     mfbt/nsRefPtr.h \
     xpcom/glue/nsCOMPtr.h \
     xpcom/base/OwningNonNull.h \
     ipc/ipdl/ipdl/lower.py \
     ipc/ipdl/ipdl/builtin.py \
     dom/bindings/Codegen.py \
     python/lldbutils/lldbutils/utils.py

 # In our indiscriminate substitution above, we renamed
 # nsRefPtrGetterAddRefs, the class behind getter_AddRefs.  Fix that up.
find . -name '*.cpp' -o -name '*.h' -o -name '*.idl' | \
    xargs perl -p -i -e 's/nsRefPtrGetterAddRefs/RefPtrGetterAddRefs/g'

if [ -d .git ]; then
    git mv mfbt/nsRefPtr.h mfbt/RefPtr.h
else
    hg mv mfbt/nsRefPtr.h mfbt/RefPtr.h
fi
2015-10-18 01:24:48 -04:00
Michael Layzell
96aa0b429b Bug 571294 - Part 1: Implement selection events behind the dom.select_events.enabled pref, r=smaug 2015-09-12 17:56:44 -04:00
Birunthan Mohanathas
a29151dc87 Bug 1182996 - Fix and add missing namespace comments. rs=ehsan
The bulk of this commit was generated by running:

  run-clang-tidy.py \
    -checks='-*,llvm-namespace-comment' \
    -header-filter=^/.../mozilla-central/.* \
    -fix
2015-07-13 08:25:42 -07:00
Ted Clancy
983dbf2ce8 Bug 1164693 - Part 1: Directional caret should point in caret direction in bidi paragraphs. r=smontagu 2015-06-05 21:44:54 -04:00
Andrea Marchesini
f0aa02df0b Bug 1156632 - Remove unused forward class declarations - patch 5 - rdf, parser, layout and something else, r=ehsan 2015-04-22 08:29:22 +02:00
Ehsan Akhgari
9aaa361672 Bug 956530 - Clear the delayed caret data when clicking on a selected part of a text control if the focus event handler selects the control; r=roc 2015-04-14 08:29:11 -04:00
Ehsan Akhgari
ea41d8de48 Bug 1145631 - Part 1: Replace MOZ_OVERRIDE and MOZ_FINAL with override and final in the tree; r=froydnj
This patch was automatically generated using the following script:

function convert() {
echo "Converting $1 to $2..."
find . \
       ! -wholename "*/.git*" \
       ! -wholename "obj-ff-dbg*" \
         -type f \
      \( -iname "*.cpp" \
         -o -iname "*.h" \
         -o -iname "*.c" \
         -o -iname "*.cc" \
         -o -iname "*.idl" \
         -o -iname "*.ipdl" \
         -o -iname "*.ipdlh" \
         -o -iname "*.mm" \) | \
    xargs -n 1 sed -i -e "s/\b$1\b/$2/g"
}

convert MOZ_OVERRIDE override
convert MOZ_FINAL final
2015-03-21 12:28:04 -04:00
Mats Palmgren
5f601ae51c Bug 1129078 - part 4, Add AutoPrepareFocusRange stack objects on paths to TakeFocus that sets up mAnchorFocusRange (and possibly removes mIsGenerated ranges) based on what operation the user is performing. r=smaug 2015-02-21 04:27:59 +00:00
Wes Kocher
3097a8a409 Backed out 8 changesets (bug 1129078, bug 1128722) for mochitest-5 failures
Backed out changeset f7eff607655a (bug 1128722)
Backed out changeset 801b3abc0de8 (bug 1128722)
Backed out changeset 275d27c2dba0 (bug 1129078)
Backed out changeset 9830ab1a2028 (bug 1129078)
Backed out changeset ce5cb876af9a (bug 1129078)
Backed out changeset c199ff86c77f (bug 1129078)
Backed out changeset 38b1b039f14d (bug 1129078)
Backed out changeset c8a99ee97313 (bug 1129078)
2015-02-20 12:24:25 -08:00
Mats Palmgren
abdb864d23 Bug 1129078 - part 4, Add AutoPrepareFocusRange stack objects on paths to TakeFocus that sets up mAnchorFocusRange (and possibly removes mIsGenerated ranges) based on what operation the user is performing. r=smaug 2015-02-20 17:34:21 +00:00
Ehsan Akhgari
a916924d05 Bug 989012 - Part 1: Stop after passing over a non-selectable frame if one is found during the frame traversal; r=roc
The caret movement code already handles unselectable text frames if we
happen to land in the middle of one in nsTextFrame::PeekOffsetCharacter/Word.
However, when performing frame traversal to find the next frame to jump
to, we don't remember if we skipped over an unselectable frame, which causes
us to jump one offset too much when the caret is on the boundary of
selectable and unselectable content.  The test cases demonstrate the
scenario.  Note that an <img alt=foo> is implemented by adding a
generated content to the inline frame representing it, so as far as
the caret movement code is concerned, both test cases are treated similarly.

Note that we need to do this only when moving the selection, and not
when extending it.  We are adding an aExtend argument to
nsPeekOffsetStruct's constructor in order to be able to special case
that.
2015-01-27 23:11:26 -05:00
Ehsan Akhgari
d4c6d2cd2e Backed out 2 changesets (bug 989012) because of test failure on Linux32 opt mochitest-a11y on a CLOSED TREE
Backed out changeset 9698f6f3f72e (bug 989012)
Backed out changeset 22fb05349a10 (bug 989012)
2015-01-27 16:40:30 -05:00
Ehsan Akhgari
59c2df2758 Bug 989012 - Part 1: Stop after passing over a non-selectable frame if one is found during the frame traversal; r=roc
The caret movement code already handles unselectable text frames if we
happen to land in the middle of one in nsTextFrame::PeekOffsetCharacter/Word.
However, when performing frame traversal to find the next frame to jump
to, we don't remember if we skipped over an unselectable frame, which causes
us to jump one offset too much when the caret is on the boundary of
selectable and unselectable content.  The test cases demonstrate the
scenario.  Note that an <img alt=foo> is implemented by adding a
generated content to the inline frame representing it, so as far as
the caret movement code is concerned, both test cases are treated similarly.

Note that we need to do this only when moving the selection, and not
when extending it.  We are adding an aExtend argument to
nsPeekOffsetStruct's constructor in order to be able to special case
that.
2015-01-27 15:35:32 -05:00
Simon Montagu
9e052b3869 Bug 1067796: make SelectionLanguageChange cache the language direction on mFrameSelection and return early if the language hasn't changed, r=roc 2015-01-09 11:39:38 +02:00
Jonathan Kew
ab834a7678 Bug 1077515 - part 6 - Create a new nsISelectionController::PhysicalMove command. r=roc 2014-11-22 14:39:03 +00:00
Jonathan Kew
6a5c361e8b Bug 1077515 - part 3 - Change desiredX (nscoord) to desiredPos (nsPoint) in nsPeekOffsetStruct, to support maintaining either vertical or horizontal position on inter-line moves. r=roc 2014-11-22 14:39:03 +00:00
Jonathan Kew
b0e7f7c32c Bug 1077515 - part 1 - Eliminate use of keyCode parameters and values in nsFrameSelection. r=roc 2014-11-22 14:39:02 +00:00
Simon Montagu
3eb81bde1c Bug 1100071 patch 1: change uint8_t to nsBidiLevel in a few more places, r=dholbert 2014-11-20 12:45:22 +02:00
Morris Tseng
7f0e3748a4 Bug 1062735 - Part 1: Remove GetHintForPosition. r=roc 2014-09-28 23:48:00 +02:00
Mats Palmgren
6df48575f6 Bug 739396, part 1 - Split a range (that are to be added to the Selection as a result of a user action) into multiple ranges that excludes any non-selectable (-moz-user-select:none) sub-trees. 2014-09-10 17:07:36 +00:00
Ryan VanderMeulen
56a940c146 Backed out 3 changesets (bug 739396) for Mulet perma-fail on a CLOSED TREE.
Backed out changeset 299911e6983b (bug 739396)
Backed out changeset de11af3e0964 (bug 739396)
Backed out changeset e274cb276cc5 (bug 739396)
2014-09-10 12:21:58 -04:00
Mats Palmgren
f09e0fd50a Bug 739396, part 1 - Split a range (that are to be added to the Selection as a result of a user action) into multiple ranges that excludes any non-selectable (-moz-user-select:none) sub-trees. 2014-09-10 13:07:43 +00:00
Robert O'Callahan
6fb18233c7 Bug 1048752. Part 16: Move nsFrameSelection::HINT to CaretAssociationHint.h. r=tn
This patch started an attempt to remove nsFrameSelection.h from nsCaret.h
and metastasized into a rather large refactoring patch that removed it
from some other header files as well, and changed nsFrameSelection::HINT
into a global-scope enum with better names. I also converted bools
into CaretAssociationHint in a few places where that was appropriate,
but there are still some more places (GetChildFrameContainingOffset)
where bools need to be converted. I figured this patch was big enough already.
2014-08-06 17:19:27 +12:00
Morris Tseng
069fa89889 Bug 1046498 - Constrain frame to anchor subtree when dragging selection caret. r=roc 2014-08-06 01:55:00 -04:00
Morris Tseng
9bfbe4bd2f Bug 1023041 - Part 1: Rename SetMouseDownState to SetDragState. r=roc 2014-08-04 00:26:00 -04:00
Benoit Jacob
553e5b2a13 Bug 1028588 - Fix dangerous public destructors in layout/ - r=dbaron 2014-06-23 18:40:01 -04:00
Morris Tseng
736a718652 Bug 987718 - Part 2: Expose GetHintForPosition to nsFrameSelection; r=roc 2014-06-04 22:53:00 +02:00
Aryeh Gregor
366b23e568 Bug 950386 - Move mozilla::Selection to mozilla::dom::Selection; r=ehsan 2014-04-10 19:09:40 +03:00
Ehsan Akhgari
c01e9369ee Bug 491863 - Remove IBMBIDI; r=roc 2014-04-23 21:15:29 -04:00
Masayuki Nakano
24485810ff Bug 602787 part.10 Create TextRange.h for separating TextEvents.h r=roc 2013-10-22 22:27:36 +09:00
Wes Kocher
3708337984 Backed out 9 changesets (bug 602787) on suspicion of breaking mochitest-metro on a CLOSED TREE
Backed out changeset 1730bcae2c45 (bug 602787)
Backed out changeset 70606b9b1e42 (bug 602787)
Backed out changeset 57ca2861ea30 (bug 602787)
Backed out changeset 3b9f1062d915 (bug 602787)
Backed out changeset 3ee56eacc84b (bug 602787)
Backed out changeset 1c35693be3d3 (bug 602787)
Backed out changeset ef095c3aef98 (bug 602787)
Backed out changeset 4827bdae97fd (bug 602787)
Backed out changeset fa0f355e7871 (bug 602787)
2013-10-22 13:11:53 -04:00
Masayuki Nakano
1e86be1a39 Bug 602787 part.10 Create TextRange.h for separating TextEvents.h r=roc 2013-10-22 22:27:36 +09:00
Birunthan Mohanathas
e30d39fc7a Bug 784739 - Switch from NULL to nullptr in layout/; r=ehsan 2013-10-08 14:47:21 -04:00
Masayuki Nakano
ed3fbdf704 Bug 920377 part.32 Get rid of nsMouseEvent r=roc 2013-10-02 15:38:27 +09:00
Masayuki Nakano
3ad4e4d61c Bug 920377 part.18 Get rid of nsTextRangeStyle r=roc 2013-10-01 16:22:59 +09:00
Masayuki Nakano
5256146045 Bug 912956 part.15 mozilla/TextEvents.h should be included directly r=roc 2013-09-25 20:21:19 +09:00
Masayuki Nakano
4a5dc45e59 Bug 912956 part.14 mozilla/MouseEvents.h should be included directly r=roc 2013-09-25 20:21:18 +09:00
Robert Longson
58ae4dca63 Bug 889329 - Implement deselectAll(). r=cam,sr=roc 2013-07-03 08:41:53 +01:00
Joshua Cranmer
697498ab75 Bug 856108 - Port static analyses to clang, part 2e: use MOZ_STACK_CLASS in layout. r=mats 2013-04-11 22:20:45 -05:00
Trevor Saunders
7b427257b3 bug 845562 - nsFrameSelection doesn't need to inherit from nsISupports r=smaug 2013-02-15 16:32:19 -05:00
Trevor Saunders
3f8f49e192 bug 781409 - remove nsITableLayout r=roc,davidb 2012-08-08 09:05:17 -04:00
Ehsan Akhgari
243c878d26 Bug 579517 - Part 1: Automated conversion of NSPR numeric types to stdint types in Gecko; r=bsmedberg
This patch was generated by a script.  Here's the source of the script for
future reference:

function convert() {
echo "Converting $1 to $2..."
find . ! -wholename "*nsprpub*" \
       ! -wholename "*security/nss*" \
       ! -wholename "*/.hg*" \
       ! -wholename "obj-ff-dbg*" \
       ! -name nsXPCOMCID.h \
       ! -name prtypes.h \
         -type f \
      \( -iname "*.cpp" \
         -o -iname "*.h" \
         -o -iname "*.c" \
         -o -iname "*.cc" \
         -o -iname "*.idl" \
         -o -iname "*.ipdl" \
         -o -iname "*.ipdlh" \
         -o -iname "*.mm" \) | \
    xargs -n 1 sed -i -e "s/\b$1\b/$2/g"
}

convert PRInt8 int8_t
convert PRUint8 uint8_t
convert PRInt16 int16_t
convert PRUint16 uint16_t
convert PRInt32 int32_t
convert PRUint32 uint32_t
convert PRInt64 int64_t
convert PRUint64 uint64_t

convert PRIntn int
convert PRUintn unsigned

convert PRSize size_t

convert PROffset32 int32_t
convert PROffset64 int64_t

convert PRPtrdiff ptrdiff_t

convert PRFloat64 double
2012-08-22 11:56:38 -04:00
Aryeh Gregor
8b4a23fc4c Bug 777292 part 2 - Change all nsnull to nullptr 2012-07-30 17:20:58 +03:00