Author: a.izobov
Date: 2007-03-17 10:15:26 -0400 (Sat, 17 Mar 2007)
New Revision: 95
Modified:
trunk/richfaces/modal-panel/src/main/resources/org/richfaces/renderkit/html/scripts/modalPanel.js
trunk/richfaces/modal-panel/src/main/resources/org/richfaces/renderkit/html/scripts/modalPanelBorders.js
Log:
RFA-247 fixed
Modified:
trunk/richfaces/modal-panel/src/main/resources/org/richfaces/renderkit/html/scripts/modalPanel.js
===================================================================
---
trunk/richfaces/modal-panel/src/main/resources/org/richfaces/renderkit/html/scripts/modalPanel.js 2007-03-17
13:15:06 UTC (rev 94)
+++
trunk/richfaces/modal-panel/src/main/resources/org/richfaces/renderkit/html/scripts/modalPanel.js 2007-03-17
14:15:26 UTC (rev 95)
@@ -427,20 +427,25 @@
doResizeOrMove: function(diff) {
var vetoes = {};
var cssHash = {};
+
+ var winSize = Richfaces.getWindowSize();
var vetoeChange = false;
var newSize = Richfaces.getComputedStyleSize(this.cdiv, "width");
var oldSize = newSize;
+ var maxX = winSize.width - oldSize - 1;
newSize += diff.deltaWidth || 0;
if (newSize >= this.minWidth) {
if (diff.deltaWidth) {
cssHash.width = newSize + 'px';
+ maxX = winSize.width - newSize -1;
}
} else {
if (diff.deltaWidth) {
cssHash.width = this.minWidth + 'px';
+ maxX = winSize.width - this.minWidth -1;
vetoes.vx = oldSize - this.minWidth;
}
@@ -460,26 +465,34 @@
if (this.cdiv.mpUseExpr) {
newPos = this.cdiv.mpLeft || 0;
newPos += diff.deltaX;
+ if (newPos<0) newPos = 0;
+ if (newPos>maxX) newPos = maxX;
this.cdiv.mpLeft = newPos;
} else {
newPos = Richfaces.getComputedStyleSize(this.cdiv, "left");
newPos += diff.deltaX;
+ if (newPos<0) newPos = 0;
+ if (newPos>maxX) newPos = maxX;
+
cssHash.left = newPos + 'px';
}
}
var newSize = Richfaces.getComputedStyleSize(this.cdiv, "height");
var oldSize = newSize;
+ var maxY = winSize.height - oldSize - 1;
newSize += diff.deltaHeight || 0;
if (newSize >= this.minHeight) {
if (diff.deltaHeight) {
cssHash.height = newSize + 'px';
+ maxY = winSize.height - newSize -1;
}
} else {
if (diff.deltaHeight) {
cssHash.height = this.minHeight + 'px';
+ maxY = winSize.heigth - this.minHeight -1;
vetoes.vy = oldSize - this.minHeight;
}
@@ -500,11 +513,16 @@
if (this.cdiv.mpUseExpr) {
newPos = this.cdiv.mpTop || 0;
newPos += diff.deltaY;
+ if (newPos<0) newPos = 0;
+ if (newPos>maxY) newPos = maxY;
this.cdiv.mpTop = newPos;
} else {
newPos = Richfaces.getComputedStyleSize(this.cdiv, "top");
newPos += diff.deltaY;
+ if (newPos<0) newPos = 0;
+ if (newPos>maxY) newPos = maxY;
+
cssHash.top = newPos + 'px';
}
}
Modified:
trunk/richfaces/modal-panel/src/main/resources/org/richfaces/renderkit/html/scripts/modalPanelBorders.js
===================================================================
---
trunk/richfaces/modal-panel/src/main/resources/org/richfaces/renderkit/html/scripts/modalPanelBorders.js 2007-03-17
13:15:06 UTC (rev 94)
+++
trunk/richfaces/modal-panel/src/main/resources/org/richfaces/renderkit/html/scripts/modalPanelBorders.js 2007-03-17
14:15:26 UTC (rev 95)
@@ -27,6 +27,10 @@
this.dragX = event.clientX;
this.dragY = event.clientY;
+
+ this.startX = event.clientX-Richfaces.getComputedStyleSize(this.modalPanel.cdiv,
"left");
+ this.startY = event.clientY-Richfaces.getComputedStyleSize(this.modalPanel.cdiv,
"top");
+ this.winSize = Richfaces.getWindowSize();
Event.observe(document, 'mousemove', this.boundDoDrag);
Event.observe(document, 'mouseup', this.boundEndDrag);
@@ -45,11 +49,41 @@
var evtX = event.clientX;
var evtY = event.clientY;
+ if (evtX<0) evtX=0;
+ if (evtY<0) evtY=0;
+ if (evtX>=this.winSize.width) evtX=this.winSize.width-1;
+ if (evtY>=this.winSize.height) evtY=this.winSize.height-1;
+
var dx = evtX - this.dragX;
var dy = evtY - this.dragY;
if (dx != 0 || dy != 0) {
var diff = this.sizer.doDiff(dx, dy);
+ if (diff.deltaWidth == 0 && diff.deltaHeight==0) {
+ var delX = evtX-Richfaces.getComputedStyleSize(this.modalPanel.cdiv,
"left");
+ if (dx>0) {
+ if (delX<this.startX) {
+ dx = Math.max(delX+dx-this.startX,0);
+ }
+ } else {
+ if (delX>this.startX) {
+ dx = Math.min(delX+dx-this.startX,0);
+ }
+ }
+ diff.deltaX = dx;
+ var delY = evtY-Richfaces.getComputedStyleSize(this.modalPanel.cdiv,
"top");
+ if (dy>0) {
+ if (delY<this.startY) {
+ dy = Math.max(delY+dy-this.startY,0);
+ }
+ } else {
+ if (delY>this.startY) {
+ dy = Math.min(delY+dy-this.startY,0);
+ }
+ }
+ diff.deltaY = dy;
+ }
+
var vetoes = this.modalPanel.doResizeOrMove(diff);
if (!vetoes.x) {
Show replies by date