wxDropSource GiveFeedback() in 2.5.1.5

I originally reported this problem on [wxPython-mac] as a Mac problem, but I
was comparing wxPython-Mac 2.5.1.5 to wxPython-Win 2.4.2.4. Now that I have
upgraded my Windows machine to 2.5.1.5, I see it's a 2.5.1.5 problem, as the
same problem occurs on Windows and the Mac.

Let me start from the beginning for those of you who are not on the
wxPython-mac list.

http://www2.wcer.wisc.edu/Transana/Download/DragDropBug.zip

contains a sample program. It shows a wx.TreeCtrl with two sets of Nodes,
Series Nodes and Collection Nodes. The basic gist of this program is that
you can drop a Series onto a Collection but not onto another Series, and you
can drop a Collection onto a Series but not another Collection. The
TreeCtrl doesn't change as a result of the drops, though success or failure
is reported through print Statements.

When this code is run under wxPython 2.4.2.4, two things happen. First off,
the print statement in the wx.DropSource's GiveFeedback method is triggered
repeatedly. Second, because GiveFeedback is getting triggered, the TreeCtrl
gives visual feedback about whether the drop is legal (on the other type of
node) or not (on the same type of node).

When this code is run under wxPython 2.5.1.5, on both Windows and Mac,
neither of these things happens. GiveFeedback is never called, no print
statement is shown, and no visual feedback is shown in the TreeCtrl. The
wx.DropTarget's OnData method incorrectly indicates a successful drop when
the drop should not be allowed.

Is there a way to change my code so that GiveFeedback works, or is it a
wxPython 2.5.1.5 bug?

David Woods
Wisconsin Center for Education Research
University of Wisconsin, Madison
http://www.transana.org

···

-----Original Message-----
From: David Woods [mailto:dwoods@wcer.wisc.edu]
Sent: Monday, April 19, 2004 7:48 PM
To: wxPython-mac@lists.wxwidgets.org
Subject: RE: [wxPython-mac] Three problems with 2.5.1.5 on Mac??

An example of the GiveFeedback Bug is available at:

http://www2.wcer.wisc.edu/Transana/Download/DragDropBug.zip

Run the program on Windows, pick up "Series 1", and drop it on "Collection
1". The tree control won't do anything, but if you watch the console,
you'll see that the GiveFeedback method's print statement fires a lot. You
will also notice that you can't drop "Series 1" on "Series 3" or any other
Series node, but you can drop it on any Collection Node. Likewise, you can
drop a Collection Node only on a Series Node.

Run the program on the Mac, and you will see that the GiveFeedback method's
print statement is never fired, and that you can drop "Series 1" anywhere,
even where you should not be able to. No Feedback means no drop prevention.

Thanks for looking into this.

David Woods

-----Original Message-----
From: David Woods [mailto:dwoods@wcer.wisc.edu]
Sent: Friday, April 16, 2004 3:25 PM
To: wxPython-mac@lists.wxwidgets.org
Subject: RE: [wxPython-mac] Three problems with 2.5.1.5 on Mac??

I'll try to put something together on Monday. (I'm on the road today.) If
I can't get to it then, it might be another week and a half, as I'm
traveling again on Tuesday and won't have a Mac with me.

Thanks for looking into this for me.

David

-----Original Message-----
From: Robin Dunn [mailto:robin@alldunn.com]
Sent: Friday, April 16, 2004 1:00 PM
To: wxPython-mac@lists.wxwidgets.org
Subject: Re: [wxPython-mac] Three problems with 2.5.1.5 on Mac??

David Woods wrote:

There is a 4th issue that I'm too tired to prototype tonight. During Drag
and Drop, the wx.DropSource.GiveFeedback() method is never getting called.
If you want a sample program, let me know and I'll put one together that
demonstrates this as well.

Yes please. It looks like the current code is calling it, (or should be
if I am reading right) so if you send me a sample that fails for you
then I can ensure that it has been fixed for the next release.

--
Robin Dunn
Software Craftsman
http://wxPython.org Java give you jitters? Relax with wxPython!

---------------------------------------------------------------------
To unsubscribe, e-mail: wxPython-mac-unsubscribe@lists.wxwidgets.org
For additional commands, e-mail: wxPython-mac-help@lists.wxwidgets.org

---------------------------------------------------------------------
To unsubscribe, e-mail: wxPython-mac-unsubscribe@lists.wxwidgets.org
For additional commands, e-mail: wxPython-mac-help@lists.wxwidgets.org

---------------------------------------------------------------------
To unsubscribe, e-mail: wxPython-mac-unsubscribe@lists.wxwidgets.org
For additional commands, e-mail: wxPython-mac-help@lists.wxwidgets.org

David Woods wrote:

I originally reported this problem on [wxPython-mac] as a Mac problem, but I
was comparing wxPython-Mac 2.5.1.5 to wxPython-Win 2.4.2.4. Now that I have
upgraded my Windows machine to 2.5.1.5, I see it's a 2.5.1.5 problem, as the
same problem occurs on Windows and the Mac.

Ah ha! This new info led me right to the source of the problem, not sure why I didn't see it before... There was a typo that was preventing the following code from being added to the end DropSource.__init__ method. If you add it to your copy of wx/misc.py then GiveFeedback should be called:

         self._setCallbackInfo(self, DropSource, 0)

It now works for me on all three platforms with current CVS.

···

--
Robin Dunn
Software Craftsman
http://wxPython.org Java give you jitters? Relax with wxPython!

Robin,

That resolves it on both Windows and Mac. I can't tell you how crucial a
fix that is for us.

Thanks so much for your rapid response and an easy solution.

David

···

-----Original Message-----
From: Robin Dunn [mailto:robin@alldunn.com]
Sent: Friday, May 07, 2004 11:55 AM
To: wxPython-users@lists.wxwidgets.org
Subject: Re: [wxPython-users] wxDropSource GiveFeedback() in 2.5.1.5

David Woods wrote:

I originally reported this problem on [wxPython-mac] as a Mac problem, but

I

was comparing wxPython-Mac 2.5.1.5 to wxPython-Win 2.4.2.4. Now that I

have

upgraded my Windows machine to 2.5.1.5, I see it's a 2.5.1.5 problem, as

the

same problem occurs on Windows and the Mac.

Ah ha! This new info led me right to the source of the problem, not
sure why I didn't see it before... There was a typo that was preventing
the following code from being added to the end DropSource.__init__
method. If you add it to your copy of wx/misc.py then GiveFeedback
should be called:

         self._setCallbackInfo(self, DropSource, 0)

It now works for me on all three platforms with current CVS.

--
Robin Dunn
Software Craftsman
http://wxPython.org Java give you jitters? Relax with wxPython!

---------------------------------------------------------------------
To unsubscribe, e-mail: wxPython-users-unsubscribe@lists.wxwidgets.org
For additional commands, e-mail: wxPython-users-help@lists.wxwidgets.org