Inez Korczynski
85cf0c27e2
Implementation of static function es.DocumentViewNode.getSplitableNode
2011-11-18 06:49:00 +00:00
Inez Korczynski
9bfee0642c
Temporary handle listitems merging/spliting logic in SurfaceView until it will be fixed in transaction preparation (prepareRemoval)
2011-11-18 06:45:11 +00:00
Inez Korczynski
9df503e788
Proper handling for "delete" & "backspace" keys
2011-11-18 06:43:42 +00:00
Inez Korczynski
d02ed50211
Proper handling for "enter" key
2011-11-18 06:17:14 +00:00
Inez Korczynski
307ab3506b
Start from removing selected content if there is any when typing
2011-11-18 05:51:50 +00:00
Inez Korczynski
d0d8e35f34
Code cleanup in SurfaceView - no any major changes
2011-11-18 05:44:24 +00:00
Inez Korczynski
44d42babe6
Comment out line that is throwing "Object has no method" when trying to assign output of method to "index" variable, which is not used later anyway.
2011-11-18 05:35:08 +00:00
Inez Korczynski
383e4e324a
Added static function es.DocumentNode.traverseUpstream
2011-11-18 05:18:48 +00:00
Trevor Parscal
098c9118f2
Added first node preservation when rebuilding
2011-11-18 00:26:54 +00:00
Trevor Parscal
a9d29af962
Using overwrite instead of build and swap method for line data in es.ContentView objects - this way line data is valid between renders
2011-11-17 23:43:53 +00:00
Trevor Parscal
48e7f4c3c6
Initial checkin of new es.HistoryModel (needs tests)
2011-11-17 22:44:11 +00:00
Trevor Parscal
6fded56cec
Renamed es.Transaction to es.TransactionModel
2011-11-17 22:42:18 +00:00
Roan Kattouw
117c785d85
Improve the merging logic in prepareRemoval() to also allow merging nested nodes, e.g. by deleting </p></li><li><p>
2011-11-17 19:23:15 +00:00
Trevor Parscal
2497e96ccc
Added documentation to getScope and made it a little less confusing to read
2011-11-17 19:19:02 +00:00
Trevor Parscal
c3521b00fd
Fixed the last of the rendering to much bugs - now things are rendered when needed only
2011-11-17 19:05:06 +00:00
Trevor Parscal
a0d7c14238
Fixed passing global offset to emit event, preventing render from re-rendering because it thought the render-from point was well past it's length
2011-11-17 18:54:52 +00:00
Trevor Parscal
284082b5d3
Simplified documentation
2011-11-17 18:26:00 +00:00
Trevor Parscal
5784d5f6f5
Added some new documentation for the new merging rules
2011-11-17 18:23:53 +00:00
Trevor Parscal
824cea173a
Fix for r103479 - had sign backwards! :(
2011-11-17 18:16:02 +00:00
Trevor Parscal
b93a69c1bc
Addressing another issue in r103447 - minor adjustment to loop
2011-11-17 18:14:14 +00:00
Trevor Parscal
e30c2f8135
Addressed some issues identified in review of r103447 - this could be cleaner, but it's trying to be optimized so the UI doesn't flicker during a remove/insert (such as splitting a block)
2011-11-17 18:11:48 +00:00
Trevor Parscal
38d6673e09
Fix for issue identified in review of r103377 - this will make it so insertion at a structural offset will work even if the parent isn't the document
2011-11-17 18:05:14 +00:00
Roan Kattouw
f8fd9fd840
Add an extra offset parameter to selectNodes() and use it in the recursion, so the results of recursive calls don't need to have their globalRanges translated
2011-11-17 18:00:16 +00:00
Trevor Parscal
43de57840e
Commented out some console.log statements
2011-11-17 17:59:15 +00:00
Roan Kattouw
41ace08026
Replace prepareRemoval() with a fixed-up version of my rewrite (which was commented out previously)
2011-11-17 16:44:44 +00:00
Roan Kattouw
be994da373
Make selectNodes() also descend (recurse) into child nodes when only the start or only the end is in the middle of a child node. Without this, it was stuff like ranges with only openings and no closings.
2011-11-17 15:01:47 +00:00
Roan Kattouw
2c21250c70
Make selectNodes() not return an empty array when encountering a zero-length selection in a structural location (we don't do this for zero-length selections in content locations either, and the empty array is breaking an assumption I was making in my prepareRemoval rewrite)
2011-11-17 14:50:38 +00:00
Roan Kattouw
61082fa3c1
Whitespace fix
2011-11-17 14:43:11 +00:00
Trevor Parscal
566ff61283
Reduced (dramatically) the number of re-renders on insert (but there's still more duplication being done atm, especially on load)
2011-11-17 08:03:14 +00:00
Inez Korczynski
8f459b5f01
Improve handling for enter, backspace, delete
2011-11-17 00:28:40 +00:00
Trevor Parscal
a55f52c2c7
Made it so <p>|</p> is not considered to be a structural offset
2011-11-16 23:57:12 +00:00
Inez Korczynski
17cad00776
Added support for enter key in elements with attributes - like headings, listitems.
2011-11-16 23:34:58 +00:00
Trevor Parscal
b89d7d7eeb
Removed some accidental globals
2011-11-16 23:32:57 +00:00
Inez Korczynski
62e399ef2e
Added splitRules for DocumentView
2011-11-16 23:19:29 +00:00
Inez Korczynski
a5a09d42d8
Minor fix.
2011-11-16 23:18:22 +00:00
Inez Korczynski
243189a009
Basic support for enter key in heading and paragraphs
2011-11-16 23:16:02 +00:00
Inez Korczynski
3bf8a244f1
Added basic support for deleting selection with delete key.
2011-11-16 22:01:41 +00:00
Inez Korczynski
fe3ef45f56
Improved support for combination of ctrl/alt/metakey + up/down/left/right - especially for mac vs. windows.
2011-11-16 21:59:22 +00:00
Inez Korczynski
13775c5116
Added basic support for deleting selection with backspace.
2011-11-16 21:25:48 +00:00
Trevor Parscal
5f4a2b2141
* Added support for inserting content at a structural offset
...
* Broke rebuildNodes into 2 parts so insert can use just buildNodes when inserting whole nodes
* Added getIndexFromOffset to es.DocumentModelBranchNode objects, which returns an index of a child node from an offset
2011-11-16 20:39:48 +00:00
Trevor Parscal
5b12384431
Fixed issue in processing removal transactions - globalRange is now defined always, so we need to check for range instead
2011-11-16 20:01:12 +00:00
Inez Korczynski
a43288be29
Support for moving cursor up and down by "unit" distance when control key pressed down.
2011-11-16 19:51:02 +00:00
Roan Kattouw
5de3778803
Drop droppable (oh, how meta!) attribute introduced in r103211. Will convert prepareRemoval() later
2011-11-16 19:28:13 +00:00
Roan Kattouw
17df2a174a
Fix breakage in prepareRemoval() from r103271 and demonstrated by the tests in r103356. Also add, in a comment, a somewhat functional rewrite of prepareRemoval() to be used after we drop droppability
2011-11-16 19:17:58 +00:00
Roan Kattouw
27ddd1263f
In selectNodes(), also set globalRange for fully-covered nodes. There is no sane value for range in this case, but there sure is a sane value for globalRange so we might as well return it. I also use this in my prepareRemoval() fixes in my next commit
2011-11-16 19:02:23 +00:00
Trevor Parscal
3ac24949ce
Fixed incorrect registration object being used
2011-11-16 18:54:05 +00:00
Trevor Parscal
e559922da0
Fixed incorrect symbolic name being used for nodeRules registration on tableCell and tableRow model nodes. Roan noticed this in r103211
2011-11-16 18:17:24 +00:00
Roan Kattouw
9060cd6161
Fix stupid mistake that broke traverseLeafNodes() in IE
2011-11-16 12:51:31 +00:00
Inez Korczynski
ace69887ee
Fix typo: "annotation" => "annotations"
2011-11-16 06:13:17 +00:00
Trevor Parscal
3ec0976f5d
Made leaf nodes listen for updates from their content views and emit updates themselves in response.
2011-11-16 00:24:46 +00:00
Trevor Parscal
8a2e8b4aab
Rewrote prepareRemoval to support dropping nodes that are considered droppable (not tableCells) and are covered completely by the range - otherwise nodes are stripped of content
2011-11-16 00:03:17 +00:00
Trevor Parscal
a7cdee541c
Fixed typo - insert/remove operations have a data property, not a content property.
2011-11-16 00:02:27 +00:00
Trevor Parscal
cc8e1d02fc
Changed nodes to selectedNodes for clarity
2011-11-16 00:01:35 +00:00
Trevor Parscal
455afe25be
Added a "droppable" bit to each model so that prepareRemoval can avoid dropping table cells (for instance) when removing nodes that are completely covered (which it can't do yet)
2011-11-15 19:01:47 +00:00
Trevor Parscal
4f1f6699ee
Tweaks to make jshint happy
2011-11-15 18:42:34 +00:00
Trevor Parscal
79ef19da42
Fixed documentation and use of es.arrayIndexOf to match the actual API of $.inArray (value, array, fromIndex). Renamed function to inArray to reduce confusion about how the function works.
2011-11-15 18:17:26 +00:00
Trevor Parscal
a4e3b3922d
Using jQuery.inArray implementation of indexOf instead of our own
...
Fixed a wrong class name bug
2011-11-15 17:54:52 +00:00
Roan Kattouw
5d619ac6cf
Fixed the last array indexOf call that I could find
2011-11-15 16:27:14 +00:00
Roan Kattouw
eff198ff1d
Move .indexOf() from es.DocumentModelBranchNode to es.DocumentBranchNode and use it in .traverseLeafNodes()
2011-11-15 16:24:33 +00:00
Roan Kattouw
c484afe87a
Fix IE-specific test breakages. Two tests were broken because Array.prototype.indexOf() was used, another one because Array.prototype.splice() is broken in IE:
...
>>[1,2,3].slice(0).length
3
>>[1,2,3].slice(0, undefined).length
0
2011-11-15 16:21:45 +00:00
Roan Kattouw
ec8e92029a
Followup r103161: make reverse work
2011-11-15 13:23:04 +00:00
Roan Kattouw
f7ef40fb7a
Rewrite traverseLeafNodes() with an iterative traversal, and add support for from. Support for reverse is not implemented yet.
2011-11-15 12:55:31 +00:00
Roan Kattouw
7d8741e6e3
Add a wrapper for Array.prototype.indexOf(), needed for my traverseLeafNodes() rewrite
2011-11-15 12:54:18 +00:00
Roan Kattouw
fee2d48b2b
Add very basic implementation of traverseNodes(), with tests. This doesn't respect the from parameter (so tests 3-6 fail); I will rewrite it from recursive to iterative so it can support that.
2011-11-15 11:12:06 +00:00
Roan Kattouw
32c04b3e41
Add es.compareArrays(), needed for test cases I'm about to add
2011-11-15 11:10:21 +00:00
Trevor Parscal
a7c1524fe0
Added empty method to es.DocumentBranchNode called traverseLeafNodes
2011-11-15 01:31:46 +00:00
Inez Korczynski
098f2ae616
Refactor moveCursor code
2011-11-15 01:30:39 +00:00
Trevor Parscal
ff07930171
Added test for prepareRemoval which fails atm, because strip doesn't drop nodes that are covered completely. Also cleaned up some comments in prepareRemoval
2011-11-15 01:15:21 +00:00
Trevor Parscal
0e1d3c08fd
Added split rules to view classes
2011-11-14 23:59:36 +00:00
Trevor Parscal
8a884ee3b8
Fixed emitting updates when deleting content from the inside of a node
2011-11-14 23:47:07 +00:00
Trevor Parscal
2494c40297
Moved transaction processing code to new class, es.TransactionProcessor
2011-11-14 23:04:36 +00:00
Trevor Parscal
96a8598ec5
Added scope function to transaction processing so inserting </p></li><li><p> works
...
Fixed off-by-one in splicing dom nodes into view branches
2011-11-14 21:54:53 +00:00
Trevor Parscal
dcbc801f0f
Don't render deleted nodes
2011-11-14 20:04:46 +00:00
Trevor Parscal
e93d050d6f
Only re-render nodes that were inserted
2011-11-14 20:00:40 +00:00
Trevor Parscal
5b1298a6ca
Removed alert() - dude, use console.log, and don't leave it in the SVN plz! :P
2011-11-14 19:52:05 +00:00
Inez Korczynski
1359c19cbb
Add comments for mouse interaction states
2011-11-14 19:51:04 +00:00
Trevor Parscal
773d97cb1d
Using splice.apply because it's faster and actually works (the loop was incorrect anyways)
2011-11-14 19:51:00 +00:00
Trevor Parscal
71c3f7d1a7
Fixed documentation for inheritance
2011-11-14 19:50:28 +00:00
Trevor Parscal
872d2bdb9d
Fixed onAfterSplice in es.DocumentViewBranchNode to update the DOM correctly
...
Fixed issue where events were being listened to from this instead of this.model
Added rendering calls after structural changes
2011-11-14 19:50:04 +00:00
Trevor Parscal
521a0644ff
Added extra condition to prevent undefined object errors
2011-11-14 19:48:25 +00:00
Trevor Parscal
fabaff5fc1
Fixed order of operations and added missing attach operation to splicing nodes in a model branch
2011-11-14 19:47:44 +00:00
Inez Korczynski
5acd21638a
Support for moving cursor with control or alt pressed down
2011-11-11 03:06:47 +00:00
Inez Korczynski
c03e5fbc49
Minor fix
2011-11-11 00:28:25 +00:00
Inez Korczynski
807d9530ac
Added support for word selection when shift + ( ctrl || alt ) pressed
2011-11-11 00:26:30 +00:00
Inez Korczynski
8b3880d524
Improvements to selecting with mouse (double, triple clicks)
2011-11-10 23:30:29 +00:00
Inez Korczynski
662907a5df
Make getWordBoundaries returns null if given offset refers to element data. Also if given offset is beginning of the word then search for not beginning of the word offsets around (and other way round).
2011-11-10 21:43:28 +00:00
Trevor Parscal
713a80596d
Added es.DocumentLeafNode, which like es.DocumentBranchNode is a mixin-like class (we may want to switch to using a more natural composition mechanism than es.extendClass in the future) - now es.DocumentNode also has an abstract method called hasChildren which returns a boolean and can indicate if a node is a leaf or a branch.
2011-11-10 19:26:02 +00:00
Roan Kattouw
a4f71ace69
Rewrite the remove() function in es.DocumentModel.operations such that the tests added in r102564 pass now
2011-11-10 15:50:59 +00:00
Roan Kattouw
f3eab4dec2
Fix JS error when getElementType() is called on a document node
2011-11-10 15:13:57 +00:00
Roan Kattouw
94b30ed0cc
Fix doc comment
2011-11-10 14:00:46 +00:00
Roan Kattouw
14b56c1202
Fix selectNodes(), can't recurse into leaf nodes because they aren't DocumentBranchNodes and don't have the selectNodes function. The pattern of certain functions just not existing for leaf nodes is starting to annoy me, I'll discuss this with Trevor.
2011-11-10 13:51:01 +00:00
Roan Kattouw
aa7a6e2605
Add globalRange property to the output of selectNodes(), which translates the range property to be relative to the root rather than to the node. Update tests for this, and fix the test case numbering for selectNodes
2011-11-10 13:15:55 +00:00
Alexandre Emsenhuber
fa172d1592
svn:eol-style native
2011-11-10 11:51:42 +00:00
Trevor Parscal
a8b80bc1fd
Added very basic support for highlighting formatting tools when the cursor is over content which is formatted that way
2011-11-10 01:28:01 +00:00
Inez Korczynski
8daf92ee48
Support for word selection with keyboard
2011-11-10 01:23:21 +00:00
Inez Korczynski
4b34eaad0e
Support for selecting words and nodes with mouse
2011-11-10 01:13:56 +00:00
Trevor Parscal
92443d5f9d
Improved optimization, was previously limited to merging sets of 2
2011-11-09 23:39:11 +00:00
Trevor Parscal
6c745687fc
Fixed prepareRemove to work again after getNodeFromOffset was changed.
2011-11-09 23:38:36 +00:00
Inez Korczynski
915104d6f2
Another way of supporting double and triple clicks in VisualEditor
2011-11-09 23:36:56 +00:00
Inez Korczynski
7fcdcb41df
Added support for double click (to select word) and triple click (to select entire node) in VisualEditor
2011-11-09 22:01:42 +00:00