the problem is the following: in Firefox at least, the DragAndDropHandler does not return the correct drop target when the drag source and drop widget are the same. Instead of a TreeVirtual, for example, a HorizontalBoxLayout is passed to the supportsDrop method, which then returns "false" because the horizontal layout has no supportsDropMethod()! So Derrell's changes cannot do anythingabout this wrong behaviour, because the problem is in the DragAndDropHandler.
The code below works around this bug, but is no solution.
When I have time, I will put together a testcase and file a bug.
Thanks, Christian
Di 11 Sep 2007 10:22:37 UTC von Sebastian Werner an qooxdoo Development
Betreff: Re: [qooxdoo-devel] Screencast: Drag & Drop Problem (continued)
I don't understand why you not just modify the things as discussed
previously. The modifications done by Derrell was looking well - or am I
wrong. Please tell me exactly the current situation so that we can find
a solution which fits your needs and let us be as compatible as possible
to the "old" behavior.
Sebastian
bibliograph schrieb:> Some random hacking of the qooxdoo 0.7 code reveals thatt if I patch the
> current 0.7 branch code like this, it does what I want. But this is
> hardly the solution and might have many unintended consequences.
>
> qx.ui.core.Widget.prototype.supportsDrop = function (dragCache)
> {
> var supportsDropMethod = this.getSupportsDropMethod();
> if (supportsDropMethod !== null) {
> return supportsDropMethod.call(this, dragCache);
> }
> return true; // the original code checks for (dragCache.sourceWidget
> == this), but have to return true by default otherwise it will alway
> return false
> };
>
> qx.event.handler.DragAndDropHandler.prototype.getDropTarget =
> qx.core.Variant.select("qx.client",
> {
> "gecko" : function(e)
> {
> var vCurrent = e.getTarget();
>
> // we need to comment out the following bit
> // if (vCurrent == this.__dragCache.sourceWidget) {
> // vCurrent =
> qx.event.handler.EventHandler.getTargetObject(qx.html.ElementFromPoint.getElementFromPoint(e.getPageX(),
> e.getPageY()));
> // } else {
>
>
> vCurrent = qx.event.handler.EventHandler.getTargetObject(null,
> vCurrent);
>
>
> // }
>
> while (vCurrent != null)
> {
>
> if (!vCurrent.supportsDrop(this.__dragCache)) {
> return null;
> }
>
> if (this.supportsDrop(vCurrent)) {
> return vCurrent;
> }
>
> vCurrent = vCurrent.getParent();
> }
>
> return null;
> },
>
> "default" : function(e)
> {
> var vCurrent = egetTarget();
>
> while (vCurrent != null)
> {
> if (!vCurrent.supportsDrop(this.__dragCache)) {
> return null;
> }
>
> if (this.supportsDrop(vCurrent)) {
> return vCurrent;
> }
>
> vCurrent = vCurrent.getParent();
> }
>
> return null;
> }
> });
>
> bibliograph schrieb:
>> Hello Sebastian and others,
>>
>> I am still having the same problem with drag and drop over the tree and
>> both Derrell and I cannot do anything without your input. I have
>> produced a screencast to demonstrate the problem:
>>
>> a href="" TARGET=webcit01http://m41s09.vlinux.de/dragDropProblem.avi/A (Sorry, 2MB)
>>
>> I am using Firefox 2.06. In the screencast, I am monitoring the drag
>> target (variable vCurrent) in
>> qx.event.handler.DragAndDropHandler.getDropTarget() .
>>
>> In seconds 00-11, I am dragging on the source widget (a treevirtual)
>> itself. The drag target is sometimes a label, a hbox layout, or the
>> split pane, but NEVER the TreeVirtual, which it should be. Since the
>> drop Target doesn't find a supportsDrop method, it bubbles up to the
>> client document and then returns false because drop target is identical
>> with drag source.
>>
>> In seconds 11- 21, I am hovering over the left TreeVirtual, and the drop
>> target is correct.
>>
>> I have experimented with the code that retrieves the correct drop type,
>> but I do simply not have the background to know what I am doing there.
>>
>> It is really important to solve this if qooxdoo is to have extensive
>> drag & drop support and I hope you can help.
>>
>> Thanks,
>>
>> Christian
>>
>>
>>
>>
>>
>> -------------------------------------------------------------------------
>> This SF.net email is sponsored by: Splunk Inc.
>> Still grepping through log files to find problems? Stop.
>> Now Search log events and configuration files using AJAX and a browser.
>> Download your FREE copy of Splunk now >> a href="" TARGET=webcit01http://getsplunk.com//A
>> _______________________________________________
>> qooxdoo-devel mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
>>
>
>
> -------------------------------------------------------------------------
> This SF.net email is sponsored by: Splunk Inc.
> Still grepping through log files to find problems? Stop.
> Now Search log events and configuration files using AJAX and a browser.
> Download your FREE copy of Splunk now >> a href="" TARGET=webcit01http://get.splunk.com//A
> _______________________________________________
> qooxdoo-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
a href="" TARGET=webcit01http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01//A
_______________________________________________
qooxdoo-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________ qooxdoo-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
