Changeset 2513


Ignore:
Timestamp:
10/02/08 11:18:22 (6 years ago)
Author:
martinkou
Message:

Added magnetic border to drag and drop of dialogs.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • CKEditor/branches/prototype/_source/plugins/dialog/plugin.js

    r2512 r2513  
    211211        })(), 
    212212 
     213        getSize : function() 
     214        { 
     215                return CKEDITOR.tools.extend( {}, this._.size ); 
     216        }, 
     217 
    213218        move : (function() 
    214219        { 
     
    240245        })(), 
    241246 
    242         getScreenPosition : function(){ return this._.position; }, 
     247        getScreenPosition : function(){ return CKEDITOR.tools.extend( {}, this._.position ); }, 
    243248 
    244249        show : function() 
     
    689694        { 
    690695                var lastCoords = null, 
     696                        abstractDialogCoords = null, 
    691697                        element = dialog.getElement().getFirst(), 
    692698                        mouseMoveHandler = function( evt ) 
    693699                        { 
    694                                 var dialogCoords = dialog.getScreenPosition(), 
    695                                         dx = evt.data.$.screenX - lastCoords.x, 
    696                                         dy = evt.data.$.screenY - lastCoords.y; 
    697                                 lastCoords = { x : evt.data.$.screenX, y : evt.data.$.screenY }; 
    698                                 dialog.move( dialogCoords.x + dx, dialogCoords.y + dy ); 
     700                                var dialogSize = dialog.getSize(), 
     701                                        viewPaneSize = CKEDITOR.document.getWindow().getViewPaneSize(), 
     702                                        x = evt.data.$.screenX, 
     703                                        y = evt.data.$.screenY, 
     704                                        dx = x - lastCoords.x, 
     705                                        dy = y - lastCoords.y, 
     706                                        magnetDistance = 20, 
     707                                        realX, realY; 
     708 
     709                                lastCoords = { x : x, y : y }; 
     710                                abstractDialogCoords.x += dx; 
     711                                abstractDialogCoords.y += dy; 
     712 
     713                                if ( abstractDialogCoords.x < magnetDistance ) 
     714                                        realX = 0; 
     715                                else if ( abstractDialogCoords.x > viewPaneSize.width - dialogSize.width - magnetDistance ) 
     716                                        realX = viewPaneSize.width - dialogSize.width; 
     717                                else 
     718                                        realX = abstractDialogCoords.x; 
     719 
     720                                if ( abstractDialogCoords.y < magnetDistance ) 
     721                                        realY = 0; 
     722                                else if ( abstractDialogCoords.y > viewPaneSize.height - dialogSize.height - magnetDistance ) 
     723                                        realY = viewPaneSize.height - dialogSize.height; 
     724                                else 
     725                                        realY = abstractDialogCoords.y; 
     726 
     727                                dialog.move( realX, realY ); 
    699728                        }, 
    700729                        mouseUpHandler = function( evt ) 
     
    717746                                        CKEDITOR.document.on( 'mousemove', mouseMoveHandler ); 
    718747                                        CKEDITOR.document.on( 'mouseup', mouseUpHandler ); 
     748                                        abstractDialogCoords = dialog.getScreenPosition(); 
    719749 
    720750                                        if ( CKEDITOR.env.ie && CKEDITOR.env.version < 7 ) 
Note: See TracChangeset for help on using the changeset viewer.
© 2003 – 2012 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy