Reverted changes. Caused problems for positioned panels. See ICE-5561.
These are the original changes, in case some customer needs a patch. But be warned that they will break positioned panels.
Index: ../../svn/ossrepo/icefaces/trunk/icefaces/component/src/com/icesoft/faces/component/panelpopup/PanelPopupRenderer.java
===================================================================
— ../../svn/ossrepo/icefaces/trunk/icefaces/component/src/com/icesoft/faces/component/panelpopup/PanelPopupRenderer.java (revision 21005)
+++ ../../svn/ossrepo/icefaces/trunk/icefaces/component/src/com/icesoft/faces/component/panelpopup/PanelPopupRenderer.java (revision 21014)
@@ -253,7 +253,7 @@
// Rebroadcast Javascript to survive refresh
if (dndType != null) {
- JavascriptContext.addJavascriptCall(facesContext, "Ice.DnD.adjustPosition('" + uiComponent.getClientId(facesContext) + "');");
+// JavascriptContext.addJavascriptCall(facesContext, "Ice.DnD.adjustPosition('" + uiComponent.getClientId(facesContext) + "');");
StringBuffer dropCall = new StringBuffer();
String call = addJavascriptCalls(uiComponent, "DRAG", handleId,
facesContext, dropCall);
Index: ../../svn/ossrepo/icefaces/trunk/icefaces/bridge/lib/scriptaculous/dragdrop.js
===================================================================
— ../../svn/ossrepo/icefaces/trunk/icefaces/bridge/lib/scriptaculous/dragdrop.js (revision 18841)
+++ ../../svn/ossrepo/icefaces/trunk/icefaces/bridge/lib/scriptaculous/dragdrop.js (revision 21014)
@@ -188,6 +188,10 @@
updateDrag: function(event) {
if (!this.activeDraggable) return;
+ if (Prototype.Browser.IE && !(event.button % 2))
{
+ this.endDrag(event);
+ return;
+ }
var pointer = [Event.pointerX(event), Event.pointerY(event)];
// Mozilla-based browsers fire successive mousemove events with
// the same coordinates, prevent needless redrawing (moz bug?)
@@ -550,6 +554,28 @@
if ((!this.options.constraint) || (this.options.constraint == 'vertical'))
style.top = p[1] + "px";
+ var vpDims = document.viewport.getDimensions();
+ var dims = this.element.getDimensions();
+ var vpOffset = this.element.viewportOffset();
+ var posOffset = this.element.positionedOffset();
+ var diff = vpOffset.left + dims.width - (vpDims.width - 10);
+ if (diff > 0)
{
+ style.left = (posOffset.left - diff) + "px";
+ }
+ diff = vpOffset.top + dims.height - (vpDims.height - 10);
+ if (diff > 0)
{
+ style.top = (posOffset.top - diff) + "px";
+ }
+ vpOffset = this.element.viewportOffset();
+ posOffset = this.element.positionedOffset();
+ diff = 10 - vpOffset.left;
+ if (diff > 0)
{
+ style.left = (posOffset.left + diff) + "px";
+ }
+ diff = 10 - vpOffset.top;
+ if (diff > 0)
{
+ style.top = (posOffset.top + diff) + "px";
+ }
if (style.visibility == "hidden") style.visibility = ""; // fix gecko rendering
},
Scriptaculous uses the mouse up event to detect the end of dragging. In IE, seems when you drag outside of the viewport, no mouse up event (or any mouse event?) is fired at all. The demo at the Scriptaculous website works the same. See video at http://screencast.com/t/MTRlMWNhOWUt.
In FF, it works as expected. See video at http://screencast.com/t/OTliN2VhMjAt. (In our component we have changed to make the panel snap back into the viewport.)