http://www.mediawiki.org/wiki/Special:Code/MediaWiki/89840
Revision: 89840
Author: tparscal
Date: 2011-06-10 19:00:40 +0000 (Fri, 10 Jun 2011)
Log Message:
-----------
Replaced closestToOffset plugin with much simpler function that only takes
vertical axis into account.
Modified Paths:
--------------
trunk/parsers/wikidom/demos/surface/index.html
trunk/parsers/wikidom/lib/jquery.editSurface.js
Removed Paths:
-------------
trunk/parsers/wikidom/lib/jquery.closestToOffset.js
Modified: trunk/parsers/wikidom/demos/surface/index.html
===================================================================
--- trunk/parsers/wikidom/demos/surface/index.html 2011-06-10 18:48:16 UTC
(rev 89839)
+++ trunk/parsers/wikidom/demos/surface/index.html 2011-06-10 19:00:40 UTC
(rev 89840)
@@ -12,7 +12,6 @@
<!-- EditSurface -->
<script type="text/javascript"
src="../../lib/jquery.js"></script>
- <script type="text/javascript"
src="../../lib/jquery.closestToOffset.js"></script>
<script type="text/javascript"
src="../../lib/jquery.flow.js"></script>
<script type="text/javascript"
src="../../lib/jquery.editSurface.js"></script>
Deleted: trunk/parsers/wikidom/lib/jquery.closestToOffset.js
===================================================================
--- trunk/parsers/wikidom/lib/jquery.closestToOffset.js 2011-06-10 18:48:16 UTC
(rev 89839)
+++ trunk/parsers/wikidom/lib/jquery.closestToOffset.js 2011-06-10 19:00:40 UTC
(rev 89840)
@@ -1,33 +0,0 @@
-$.fn.closestToOffset = function( offset ) {
- var $e = null,
- x = offset.left,
- y = offset.top,
- o,
- d,
- dx,
- dy,
- md;
- this.each( function() {
- var o = $(this).offset();
- if ( ( x >= o.left ) && ( x <= o.right ) && ( y >= o.top ) && (
y <= o.bottom ) ) {
- $e = $(this);
- return false;
- }
- var offsets = [
- [o.left, o.top],
- [o.right, o.top],
- [o.left, o.bottom],
- [o.right, o.bottom]
- ];
- for ( var i = 0; i < offsets.length; i++ ) {
- dx = offsets[i][0] - x;
- dy = offsets[i][1] - y;
- d = Math.sqrt( ( dx * dx ) + ( dy * dy ) );
- if ( md === undefined || d < md ) {
- md = d;
- $e = $(this);
- }
- }
- } );
- return $e;
-};
Modified: trunk/parsers/wikidom/lib/jquery.editSurface.js
===================================================================
--- trunk/parsers/wikidom/lib/jquery.editSurface.js 2011-06-10 18:48:16 UTC
(rev 89839)
+++ trunk/parsers/wikidom/lib/jquery.editSurface.js 2011-06-10 19:00:40 UTC
(rev 89840)
@@ -32,7 +32,7 @@
'mousedown': function( e ) {
var $target = $( e.target );
if ( $target.is( '.editSurface-paragraph' ) ) {
- $target = $target.children().closestToOffset( {
'left': e.pageX, 'top': e.pageY } );
+ $target = getNearestLine( $target.children(),
e.pageY );
}
if ( !$target.is( '.editSurface-line' ) ) {
var $line = $target.closest(
'.editSurface-line' );
@@ -81,14 +81,9 @@
if ( sel.active ) {
var $target = $( e.target );
if ( !$target.is( '.editSurface-line' ) ) {
- $target =
sel.start.$target.parent().children().closestToOffset(
- { 'left': e.pageX, 'top':
e.pageY }
- );
+ $target = getNearestLine(
sel.start.$target.parent().children(), e.pageY );
}
sel.end = getCursorPosition( e.pageX, e.pageY,
$target );
- //console.log( [sel.start.char, sel.end.char] );
- //console.log( [sel.start.word, sel.end.word] );
- //console.log( [sel.start.line, sel.end.line] );
if ( sel.start.line < sel.end.line
|| ( sel.start.line ===
sel.end.line
&&
sel.start.char < sel.end.char ) ) {
@@ -105,6 +100,26 @@
} );
// Functions
+ function getNearestLine( $lines, y ) {
+ var $line,
+ minDistance;
+ $lines.each( function() {
+ var top = $(this).offset().top;
+ var bottom = top + $(this).height();
+ // Inside test
+ if ( y > top && y < bottom ) {
+ $line = $(this);
+ return false;
+ }
+ // Distance test
+ var distance = Math.abs( y - top );
+ if ( minDistance === undefined || distance <
minDistance ) {
+ minDistance = distance;
+ $line = $(this);
+ }
+ } );
+ return $line;
+ }
function getSelectionText() {
var text;
if ( sel.from && sel.to ) {
_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs