Changeset 2513


Ignore:
Timestamp:
10/02/08 11:18:22 (7 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 – 2015 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy