Fix dragging of side panel so that it doesn't 'stick' to the mouse pointer - woohoo

git-svn-id: http://svg-edit.googlecode.com/svn/trunk@824 eee81c28-f429-11dd-99c0-75d572ba1ddd
This commit is contained in:
Jeff Schiller
2009-10-14 04:50:17 +00:00
parent 3c3de0c936
commit ca67ea8af2

View File

@@ -1260,27 +1260,46 @@ function svg_edit_setup() {
// TODO: is there a better way to do this splitter without attaching mouse handlers here?
$('#svg_editor')
.mouseup(function(){sidedrag=-1;})
.mouseout(function(evt){
if (sidedrag == -1) return;
// if we've moused out of the browser window, then we can stop dragging
// and close the drawer
if (evt.pageX > this.clientWidth) {
sidedrag = -1;
toggleSidePanel(true);
}
})
.mousemove(function(evt) {
if (sidedrag == -1) return;
var deltax = sidedrag - evt.pageX;
if (deltax == 0) return;
sidedrag = evt.pageX;
var sidewidth = parseInt($('#sidepanels').css('width'))+deltax;
if (sidewidth <= 130 && sidewidth >= 2) {
var workarea = $('#workarea');
var sidepanels = $('#sidepanels');
var layerpanel = $('#layerpanel');
workarea.css('right', parseInt(workarea.css('right'))+deltax);
sidepanels.css('width', parseInt(sidepanels.css('width'))+deltax);
layerpanel.css('width', parseInt(layerpanel.css('width'))+deltax);
centerCanvasIfNeeded();
var sidepanels = $('#sidepanels');
var sidewidth = parseInt(sidepanels.css('width'));
if (sidewidth+deltax > 130) {
deltax = 130 - sidewidth;
sidewidth = 130;
}
else if (sidewidth+deltax < 2) {
deltax = 2 - sidewidth;
sidewidth = 2;
}
if (deltax == 0) return;
sidedrag -= deltax;
var workarea = $('#workarea');
var layerpanel = $('#layerpanel');
workarea.css('right', parseInt(workarea.css('right'))+deltax);
sidepanels.css('width', parseInt(sidepanels.css('width'))+deltax);
layerpanel.css('width', parseInt(layerpanel.css('width'))+deltax);
centerCanvasIfNeeded();
});
// if width is non-zero, then fully close it, otherwise fully open it
var toggleSidePanel = function(){
// the optional close argument forces the side panel closed
var toggleSidePanel = function(close){
var w = parseInt($('#sidepanels').css('width'));
var deltax = (w > 2 ? 2 : 130) - w;
var deltax = (w > 2 || close ? 2 : 130) - w;
var workarea = $('#workarea');
var sidepanels = $('#sidepanels');
var layerpanel = $('#layerpanel');