author Masayuki Nakano <>
Wed, 07 Nov 2018 08:38:15 +0000
changeset 444811 b631af71b7ba4ccdff840db112ec9c519382f161
parent 439030 4ef2bffa13bc7ff2cea3a7c65c55718c0bcc8847
child 452563 4b0da3a2a9facebc598079ca6e8161cefb3448ea
permissions -rw-r--r--
Bug 1503231 - Make TextEditor::DeleteSelectionAsAction() removes removing range information from EditAction when Selection is NOT collapsed r=m_kato When Selection is NOT collapsed, we remove selected content. Therefore, web apps don't need to know range information of user operation. However, web apps may want to know direction of the operation (backward or forward). E.g., web apps may just mark selected range as "deleted" and move caret before or after the range. Therefore, when computed EditAction is eDeleteWordBackward or eDeleteToBeginningOfSoftLine, we should use eDeleteBackward instead. When it is eDeleteWordForward or eDeleteToEndOfSoftLine, we should use eDeleteForward instead. Note that only on Windows, we follow behavior of richtext control (and Word). That is, Ctrl + Backspace/Delete collapse from start of selected range to start/end of current word. I.e., collapsing Selection to start first and removing to start or end of current word is Windows's standard behavior. Currently, we do this in DeleteSelectionAsSubAction() but every caller specifies eNone to aDirection except DeleteSelectionAsAction(). So, we can move this before re-computing EditAction in DeleteSelectionAsAction(). Differential Revision:

  "name": "mozilla-central",
  "description": "This package file is for node modules used in mozilla-central",
  "repository": {},
  "license": "MPL-2.0",
  "dependencies": {},
  "devDependencies": {
    "eslint": "5.6.0",
    "eslint-plugin-html": "4.0.6",
    "eslint-plugin-mozilla": "file:tools/lint/eslint/eslint-plugin-mozilla",
    "eslint-plugin-no-unsanitized": "3.0.2",
    "eslint-plugin-react": "7.11.1",
    "eslint-plugin-spidermonkey-js": "file:tools/lint/eslint/eslint-plugin-spidermonkey-js"
  "notes(private)": "We don't want to publish to npm, so this is marked as private",
  "private": true