mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-24 13:21:05 +00:00
a50a0700d4
If insertion string ends with ASCII whitespace and there is no following content in the block, `HTMLEditRules::AdjustWhitespaces()` needs to insert `<br>` element. It's called only by `HTMLEditRules::AfterEditInner()` and that does only simple things with `WSRunObject`. Therefore, this moves the code into `AfterEditInner()`. For making it adjust the whitespaces, `HTMLEditRules::WillInsertText()` needs to notify `AfterEditInner()` of dirty range with `mDocChangeRange`. Therefore, this patch makes it set `mDocChangeRange` manually after inserting composition string. On the other hand, there is another bug. `WSRunObject` was designed to treat only inserting text for `WSRunObject::InsertText()`. I.e., not designed to treat replacing existing composition string with new string. Therefore, `WSRunObject::InsertText()` adjusts whitespaces only around start of composition string. Therefore, if composition string ends with an ASCII whitespace, it's not replaced with NBSP and that causes: - failing `WSRunObject::AdjustWhitespaces()` inserts `<br>` element at `AfterEditInner()` of committing composition. - then, next composition's first `WSRunObject::InsertText()` removes the last whitespace due to not followed by `<br>` nor any other content. Therefore, this patch makes `WSRunObject` takes 2 DOM points to be able to treat replaced range. In strictly speaking, the latter change require more changes and tests for supporting replacement with any other methods. However, it's risky and out of scope of this bug. Differential Revision: https://phabricator.services.mozilla.com/D26423 --HG-- extra : moz-landing-system : lando |
||
---|---|---|
.. | ||
composer | ||
libeditor | ||
reftests | ||
spellchecker | ||
txmgr | ||
AsyncSpellCheckTestHelper.jsm | ||
moz.build | ||
nsIDocumentStateListener.idl | ||
nsIEditActionListener.idl | ||
nsIEditor.idl | ||
nsIEditorMailSupport.idl | ||
nsIEditorObserver.idl | ||
nsIEditorSpellCheck.idl | ||
nsIEditorStyleSheets.idl | ||
nsIHTMLAbsPosEditor.idl | ||
nsIHTMLEditor.idl | ||
nsIHTMLInlineTableEditor.idl | ||
nsIHTMLObjectResizer.idl | ||
nsIPlaintextEditor.idl | ||
nsITableEditor.idl | ||
nsIURIRefObject.idl |