Only testing drag target hovering periodically, since it can be slow to do it constantly.
This commit is contained in:
parent
11b4af7568
commit
e31775e6de
|
@ -754,6 +754,9 @@ Editor.prototype.start_drag = function ( event ) {
|
||||||
}
|
}
|
||||||
|
|
||||||
Editor.prototype.drag = function( event ) {
|
Editor.prototype.drag = function( event ) {
|
||||||
|
if ( this.drag_target_timer )
|
||||||
|
clearTimeout( this.drag_target_timer );
|
||||||
|
|
||||||
var mouse_position = event.mouse().page;
|
var mouse_position = event.mouse().page;
|
||||||
|
|
||||||
// move the editor based on the original click's offset
|
// move the editor based on the original click's offset
|
||||||
|
@ -763,6 +766,31 @@ Editor.prototype.drag = function( event ) {
|
||||||
"y": mouse_position.y - this.drag_click_offset.y - viewport_position.y
|
"y": mouse_position.y - this.drag_click_offset.y - viewport_position.y
|
||||||
} );
|
} );
|
||||||
|
|
||||||
|
var self = this;
|
||||||
|
|
||||||
|
function hover_drag_targets() {
|
||||||
|
// if the editor is over any drop targets, expand and color them accordingly
|
||||||
|
var drop_targets = getElementsByTagAndClassName( "div", "note_drop_target" );
|
||||||
|
var div_position = getElementPosition( self.div );
|
||||||
|
var div_size = getElementDimensions( self.div );
|
||||||
|
|
||||||
|
for ( var i in drop_targets ) {
|
||||||
|
var drop_target = drop_targets[ i ];
|
||||||
|
var target_position = getElementPosition( drop_target );
|
||||||
|
var target_size = getElementDimensions( drop_target );
|
||||||
|
|
||||||
|
// if the div is wholly above or below the drop target, then it's not overlapping it
|
||||||
|
if ( ( div_position.y < target_position.y && div_position.y + div_size.h < target_position.y ) ||
|
||||||
|
( div_position.y > target_position.y + target_size.h && div_position.y + div_size.h > target_position.y + target_size.h ) )
|
||||||
|
removeElementClass( drop_target, "note_drop_target_hover" );
|
||||||
|
else
|
||||||
|
addElementClass( drop_target, "note_drop_target_hover" );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// testing drag targets for hovering can be slow, so only do it periodically (a split second after the mouse stops moving)
|
||||||
|
this.drag_target_timer = setTimeout( function () { hover_drag_targets(); }, 10 );
|
||||||
|
|
||||||
this.drag_scroll( event.mouse().client );
|
this.drag_scroll( event.mouse().client );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -802,6 +830,8 @@ Editor.prototype.drop = function( event ) {
|
||||||
disconnect( this.drop_signal );
|
disconnect( this.drop_signal );
|
||||||
if ( this.drag_scroll_timer )
|
if ( this.drag_scroll_timer )
|
||||||
clearTimeout( this.drag_scroll_timer );
|
clearTimeout( this.drag_scroll_timer );
|
||||||
|
if ( this.drag_target_timer )
|
||||||
|
clearTimeout( this.drag_target_timer );
|
||||||
|
|
||||||
removeElementClass( this.div, "note_div_dragging" );
|
removeElementClass( this.div, "note_div_dragging" );
|
||||||
removeElementClass( this.holder, "note_holder_dragging" );
|
removeElementClass( this.holder, "note_holder_dragging" );
|
||||||
|
|
Reference in New Issue