Description

When IE8 is set to Document Mode of IE7, dragging and dropping portlets, the entire screen can turn red. This is most likely due to opacity handling.

This issue can be intermittent, but here is the most consistent way to reproduce:
1. Startup Liferay (I was using Trunk Rev127035)
2. Before going to Liferay, set IE8 to be in Browser Mode: IE8, Document Mode: IE7
(see screenshot)
3. Create a new page called "test"
4. Under the "Add" Menu, click More
5. Drag 1 portlet into a column (valid dropzone). (You'll see the blue placeholder.)
6. Drag another portlet somewhere other than a valid dropzone. Be sure to not drag over any valid dropzones (columns). If the blue placeholder displays, you'll need to refresh the page and start again at Step 4.
7. Once you've let go of the mouse. Hover over a valid dropzone. The blue line will now display. Click the mouse to "drop" the portlet.
8. Attempt to drag another portlet. You'll get a red & orange screen as shown in the screenshot.

Byrån Zaugg
added a comment - 07/Nov/12 12:37 PM I was never able to, directly, figure out why < IE9 was breaking alpha(opacity) after a JS error. But, I was able to fix the JS error. And now the opacity bug does not appear.
The problem was instance.appendNode was being set on the first successful drop, but on each unsuccessful drop, instance.appendNode never got updated from the previous value.
So after instance.appendNode usage is done, I see it to null, so on the next drag, it has a "fresh" state.

_onDragEnd was only invoking the _getAppendNode if lazyEvents is false, and when we were not entering a valid drop area it was set to true _onDragStart, that was causing that the instance.appendNode._node reference to be not valid anymore.

Instead of introducing the instance.appendNode on AlloyUI side, is better just to assure that we always force lazyEvents to false _onDragStart, so then it will always invoke the _getAppendNode, therefore, the instance.appendNode will contains a valid node when _onDragEnd executes on portal layout javascript.

Eduardo Lundgren
added a comment - 15/Nov/12 12:28 AM hey guys,
_onDragEnd was only invoking the _getAppendNode if lazyEvents is false, and when we were not entering a valid drop area it was set to true _onDragStart, that was causing that the instance.appendNode._node reference to be not valid anymore.
Instead of introducing the instance.appendNode on AlloyUI side, is better just to assure that we always force lazyEvents to false _onDragStart, so then it will always invoke the _getAppendNode, therefore, the instance.appendNode will contains a valid node when _onDragEnd executes on portal layout javascript.
See https://github.com/brianchandotcom/liferay-portal/pull/7697

_onDragEnd was only invoking the _getAppendNode if lazyEvents is false, and when we were not entering a valid drop area it was set to true _onDragStart, that was causing that the instance.appendNode._node reference to be not valid anymore.

Instead of introducing the instance.appendNode on AlloyUI side, is better just to assure that we always force lazyEvents to false _onDragStart, so then it will always invoke the _getAppendNode, therefore, the instance.appendNode will contains a valid node when _onDragEnd executes on portal layout javascript.

Eduardo Lundgren
added a comment - 15/Nov/12 12:28 AM hey guys,
_onDragEnd was only invoking the _getAppendNode if lazyEvents is false, and when we were not entering a valid drop area it was set to true _onDragStart, that was causing that the instance.appendNode._node reference to be not valid anymore.
Instead of introducing the instance.appendNode on AlloyUI side, is better just to assure that we always force lazyEvents to false _onDragStart, so then it will always invoke the _getAppendNode, therefore, the instance.appendNode will contains a valid node when _onDragEnd executes on portal layout javascript.
See https://github.com/brianchandotcom/liferay-portal/pull/7697