X-Git-Url: http://git.roojs.org/?a=blobdiff_plain;f=Roo%2FResizable.js;h=b0fb9f3b3f0435b26897c56cfb97d7d9820097a9;hb=dc5d9380aff25134bf025953bdafe40b580337ff;hp=f6160708dc1eb6494e0634602382169d2891c026;hpb=bc0e2dbe6a768ab87837fbbde003f4b7504ce38a;p=roojs1 diff --git a/Roo/Resizable.js b/Roo/Resizable.js index f6160708dc..b0fb9f3b3f 100644 --- a/Roo/Resizable.js +++ b/Roo/Resizable.js @@ -28,6 +28,7 @@ Value Description 'sw' southwest 'se' southeast 'ne' northeast + 'hd' horizontal drag 'all' all *

Here's an example showing the creation of a typical Resizable:

@@ -176,6 +177,17 @@ Roo.Resizable = function(el, config) * @param {Roo.EventObject} e The mousedown event */ "beforeresize" : true, + /** + * @event resizing + * Fired a resizing. + * @param {Roo.Resizable} this + * @param {Number} x The new x position + * @param {Number} y The new y position + * @param {Number} w The new w width + * @param {Number} h The new h hight + * @param {Roo.EventObject} e The mouseup event + */ + "resizing" : true, /** * @event resize * Fired after a resize. @@ -308,6 +320,7 @@ Roo.extend(Roo.Resizable, Roo.util.Observable, { // private updateChildSize : function(){ + if(this.resizeChild){ var el = this.el; var child = this.resizeChild; @@ -333,7 +346,9 @@ Roo.extend(Roo.Resizable, Roo.util.Observable, { // private snap : function(value, inc, min){ - if(!inc || !value) return value; + if(!inc || !value) { + return value; + } var newValue = value; var m = value % inc; if(m > 0){ @@ -373,6 +388,7 @@ Roo.extend(Roo.Resizable, Roo.util.Observable, { // private onMouseMove : function(e){ + if(this.enabled){ try{// try catch so if something goes wrong the user doesn't get hung @@ -418,14 +434,26 @@ Roo.extend(Roo.Resizable, Roo.util.Observable, { y += diffY; h -= diffY; break; + case "hdrag": + + if (wi) { + var adiffX = Math.abs(diffX); + var sub = (adiffX % wi); // how much + if (sub > (wi/2)) { // far enough to snap + diffX = (diffX > 0) ? diffX-sub + wi : diffX+sub - wi; + } else { + // remove difference.. + diffX = (diffX > 0) ? diffX-sub : diffX+sub; + } + } + x += diffX; + x = Math.max(this.minX, x); + break; case "west": diffX = this.constrain(w, diffX, mw, mxw); x += diffX; w -= diffX; break; - case "hdrag": - x += diffX; - break; case "northeast": w += diffX; w = Math.min(Math.max(mw, w), mxw); @@ -463,7 +491,6 @@ Roo.extend(Roo.Resizable, Roo.util.Observable, { case "southwest": x -= sw - w; break; - case "hdrag": case "west": x -= sw - w; break; @@ -524,17 +551,21 @@ Roo.extend(Roo.Resizable, Roo.util.Observable, { h = Math.min(Math.max(mh, h), mxh); w = ow * (h/oh); y += th - h; - x += tw - w; + x += tw - w; break; } } + if (pos == 'hdrag') { + w = ow; + } this.proxy.setBounds(x, y, w, h); if(this.dynamic){ this.resizeElement(); } }catch(e){} } + this.fireEvent("resizing", this, x, y, w, h, e); }, // private @@ -566,7 +597,10 @@ Roo.extend(Roo.Resizable, Roo.util.Observable, { getResizeChild : function(){ return this.resizeChild; }, - + groupHandler : function() + { + + }, /** * Destroys this resizable. If the element was wrapped and * removeEl is not true then the element remains. @@ -613,8 +647,12 @@ Roo.Resizable.Handle = function(rz, pos, disableTrackOver, transparent){ this.position = pos; this.rz = rz; // show north drag fro topdra - var handlepos = pos == 'hdrag' ? 'north' : pos;; + var handlepos = pos == 'hdrag' ? 'north' : pos; + this.el = this.tpl.append(rz.el.dom, [handlepos], true); + if (pos == 'hdrag') { + this.el.setStyle('cursor', 'pointer'); + } this.el.unselectable(); if(transparent){ this.el.setOpacity(0); @@ -629,6 +667,7 @@ Roo.Resizable.Handle = function(rz, pos, disableTrackOver, transparent){ // private Roo.Resizable.Handle.prototype = { afterResize : function(rz){ + Roo.log('after?'); // do nothing }, // private