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:
@@ -1260,27 +1260,46 @@ function svg_edit_setup() {
|
|||||||
// TODO: is there a better way to do this splitter without attaching mouse handlers here?
|
// TODO: is there a better way to do this splitter without attaching mouse handlers here?
|
||||||
$('#svg_editor')
|
$('#svg_editor')
|
||||||
.mouseup(function(){sidedrag=-1;})
|
.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) {
|
.mousemove(function(evt) {
|
||||||
if (sidedrag == -1) return;
|
if (sidedrag == -1) return;
|
||||||
var deltax = sidedrag - evt.pageX;
|
var deltax = sidedrag - evt.pageX;
|
||||||
if (deltax == 0) return;
|
|
||||||
sidedrag = evt.pageX;
|
var sidepanels = $('#sidepanels');
|
||||||
var sidewidth = parseInt($('#sidepanels').css('width'))+deltax;
|
var sidewidth = parseInt(sidepanels.css('width'));
|
||||||
if (sidewidth <= 130 && sidewidth >= 2) {
|
if (sidewidth+deltax > 130) {
|
||||||
var workarea = $('#workarea');
|
deltax = 130 - sidewidth;
|
||||||
var sidepanels = $('#sidepanels');
|
sidewidth = 130;
|
||||||
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();
|
|
||||||
}
|
}
|
||||||
|
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
|
// 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 w = parseInt($('#sidepanels').css('width'));
|
||||||
var deltax = (w > 2 ? 2 : 130) - w;
|
var deltax = (w > 2 || close ? 2 : 130) - w;
|
||||||
var workarea = $('#workarea');
|
var workarea = $('#workarea');
|
||||||
var sidepanels = $('#sidepanels');
|
var sidepanels = $('#sidepanels');
|
||||||
var layerpanel = $('#layerpanel');
|
var layerpanel = $('#layerpanel');
|
||||||
|
|||||||
Reference in New Issue
Block a user