mediawiki-extensions-Visual.../modules/ve
Catrope 7bcf35e0e8 (bug 43056) Inline tags like <span> are block-alienated sometimes
This happens when the <span> is the start of unwrapped content. The
converter logic to look at the tag name in wrapping mode doesn't kick in
because we're not yet in wrapping mode at that point.

The core issue was that previously, we relied on the document
structure/state to choose between alienBlock and alienInline, and only
used the tag name where the document structure was ambiguous (wrapping).
Changed this to be the other way around: we now rely primarily on the
tag name, and if that doesn't match what we expect based on the document
structure, we work around that if possible. Specifically:
* inline tag in our wrapper --> inline alien
* block tag in our wrapper --> close wrapper, block alien
* inline tag in wrapper that's not ours --> inline alien
* block tag in wrapper that's not ours --> *inline* alien
* inline tag in structural location --> open wrapper, inline alien
* block tag in structural location --> block alien
* inline tag in content location --> inline alien
* block tag in content location --> *inline* alien
only in the fourth and the last case do we need to use the "wrong" alien type to
preserve document validity, and it will always be inline where block was
expected, which should reduce UI issues.

The condensed version of the above, which is used in the code, is:
* If in a non-wrapper content location, use inline
* If in a wrapper that's not ours, use inline
* Otherwise, decide based on tag name
* Open or close wrapper if needed

ve.dm.Converter:
* Replace isInline logic in createAlien() with the above
* Factor out code to start wrapping (was duplicated) into startWrapping()
* Call startWrapping() if createAlien() returns an alienInline and we're
  in a structural location

Tests:
* Add test cases with aliens at the start and end of unwrapped content
** The first one failed prior to these changes and now passes, the
   second one was already passing
* Fix about group test case, was exhibiting the bug that this commit fixes

Change-Id: I657aa0ff5bc2b57cd48ef8a99c8ca930936c03b8
2012-12-22 12:27:11 +01:00
..
actions Only call showSelecton on undo and redo if there is a returned range. 2012-12-12 12:07:02 -08:00
ce (bug 43098) Prevent alien node contents from floating above phantoms. 2012-12-15 00:58:52 +01:00
dm (bug 43056) Inline tags like <span> are block-alienated sometimes 2012-12-22 12:27:11 +01:00
init Merge "(bug 43040) All edits were being marked as minor" 2012-12-13 04:46:25 +00:00
test (bug 43056) Inline tags like <span> are block-alienated sometimes 2012-12-22 12:27:11 +01:00
ui Fix outdent tooltip calling for a non-existant message 2012-12-14 15:53:53 -08:00
ve.Action.js Mapped tab key to indentation action 2012-11-07 16:26:13 -08:00
ve.ActionFactory.js Add ve.Action, ve.ActionFactory, subclasses 2012-10-26 14:44:17 -07:00
ve.AnnotationSet.js Fix UI for annotation API changes 2012-10-12 17:53:42 -07:00
ve.BranchNode.js Fix constructor names; remove redundant hasOwnProperty. 2012-10-08 06:15:20 +02:00
ve.Command.js Added some more key bindings for IE and Mozilla support 2012-11-07 16:49:34 -08:00
ve.CommandRegistry.js Mapped tab key to indentation action 2012-11-07 16:26:13 -08:00
ve.debug.js Setup variable ve.debug to true when ve.debug.js is loaded. 2012-10-03 18:02:31 -07:00
ve.Document.js Standards: Fix global variables and pass JSHint. 2012-10-23 00:53:48 +02:00
ve.EventEmitter.js Whitespace and comments 2012-09-17 16:53:03 -07:00
ve.Factory.js Refactored commands into a registry 2012-11-07 15:52:30 -08:00
ve.js Init: Fix incorrect context for mw.msg.apply. 2012-12-02 03:45:51 +01:00
ve.LeafNode.js Rename ve_foo_bar back to VeFooBar per discussion 2012-09-06 16:15:55 -07:00
ve.Node.js Rename ve_foo_bar back to VeFooBar per discussion 2012-09-06 16:15:55 -07:00
ve.OrderedHashSet.js Fix constructor names; remove redundant hasOwnProperty. 2012-10-08 06:15:20 +02:00
ve.Position.js Whitespace and comments 2012-09-17 16:53:03 -07:00
ve.Range.js Improve truncate and truncateRange to allow negative values 2012-12-11 11:10:22 -08:00
ve.Registry.js Refactored commands into a registry 2012-11-07 15:52:30 -08:00
ve.Surface.js Added disable/enable methods to ve.Surface 2012-12-11 16:28:39 -08:00