https://www.mediawiki.org/wiki/Special:Code/MediaWiki/112833
Revision: 112833
Author: inez
Date: 2012-03-01 20:49:21 +0000 (Thu, 01 Mar 2012)
Log Message:
-----------
Added getSelection method to Surface
Modified Paths:
--------------
trunk/extensions/VisualEditor/modules/ve/ce/ve.es.Surface.js
Modified: trunk/extensions/VisualEditor/modules/ve/ce/ve.es.Surface.js
===================================================================
--- trunk/extensions/VisualEditor/modules/ve/ce/ve.es.Surface.js
2012-03-01 20:04:42 UTC (rev 112832)
+++ trunk/extensions/VisualEditor/modules/ve/ce/ve.es.Surface.js
2012-03-01 20:49:21 UTC (rev 112833)
@@ -123,11 +123,13 @@
ve.es.Surface.prototype.pollContent = function() {
if ( this.poll.compositionStart !== null && this.poll.compositionEnd
!== null ) {
+
var text = ve.es.Surface.getDOMText2( this.poll.node ),
hash = ve.es.Surface.getDOMHash( this.poll.node ),
localOffset = this.poll.compositionEnd;
this.poll.compositionStart = null;
this.poll.compositionEnd = null;
+
} else {
var rangySel = rangy.getSelection();
@@ -183,7 +185,7 @@
nodeOffset + 1 + this.poll.prevText.length -
sameFromRight
) ) );
var newData = text.substring( sameFromLeft, text.length
- sameFromRight ).split( '' );
- var annotations =
this.model.getDocument().getAnnotationsFromOffset( nodeOffset + 1 +
sameFromLeft - 1 );
+ var annotations =
this.model.getDocument().getAnnotationsFromOffset( nodeOffset + 1 +
sameFromLeft );
ve.dm.DocumentNode.addAnnotationsToData( newData,
annotations );
this.model.transact(
this.documentView.model.prepareInsertion(
nodeOffset + 1 + sameFromLeft,
@@ -295,6 +297,20 @@
sel.addRange(range);
};
+ve.es.Surface.prototype.getSelection = function() {
+ var selection = rangy.getSelection();
+
+ if ( selection.anchorNode === selection.focusNode &&
selection.anchorOffset === selection.focusOffset ) {
+ var offset = this.getOffset( selection.anchorNode,
selection.anchorOffset );
+ return new ve.Range( offset, offset );
+ } else {
+ return new ve.Range(
+ this.getOffset( selection.anchorNode,
selection.anchorOffset ),
+ this.getOffset( selection.focusNode,
selection.focusOffset )
+ );
+ }
+};
+
ve.es.Surface.prototype.getLeafNode = function( elem ) {
var $node = $( elem );
while( !$node.hasClass( 'ce-leafNode' ) ) {
_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs