From: Daniel H. <dh...@gm...> - 2011-10-23 02:31:19
|
matplotlib doesn't support double clicks, and I was wondering if that was a design decision, or something that had been relegated to the "to do" box for someday. Hoping that it was still in the "todo" box, I think I can put most of it in without too much trouble, and supply you with a patch. The changes would be: 1) an extra flag MouseEvent, so that in a button_press_event handler, you can can tell if the press was a result of a double click or not, and 2) code in the backends to catch and set the double click flag properly I looked through the backends, and it was clear what to do in order to support double clicks for all but backend_macosx.py. I might be able to deduce what to do there, but will likely need some support from someone in order to get that one done. To support the double clicks, I would rather not create a new event like 'button_doubleclick_event', for backwards compatibility. I believe that if we just stick with 'button_press_event' and set an extra flag within the MouseEvent, any existing mpl code will still work properly, because the normal sequence of events on a double click are; DOWN, UP, DBLCLICK, UP. In current versions of matplotlib, the DBLCLICK event is treated as a DOWN, and the strategy of just adding a extra flag in MouseEvent would mean that existing mpl code would still see the double click event as a DOWN. Anyway, I want to "throw a feeler" out there, and ask if the patch would be accepted were I to go ahead and do it. I didn't want to spend the time working on it if a decision had already been made a while back to not ever support double clicks. -- Daniel Hyams dh...@gm... |
From: Benjamin R. <ben...@ou...> - 2011-10-23 02:57:47
|
On Saturday, October 22, 2011, Daniel Hyams <dh...@gm...> wrote: > matplotlib doesn't support double clicks, and I was wondering if that > was a design decision, or something that had been relegated to the "to > do" box for someday. Hoping that it was still in the "todo" box, I > think I can put most of it in without too much trouble, and supply you > with a patch. > > The changes would be: > 1) an extra flag MouseEvent, so that in a button_press_event > handler, you can can tell if the press was a result of a double click > or not, and > 2) code in the backends to catch and set the double click flag properly > > I looked through the backends, and it was clear what to do in order to > support double clicks for all but backend_macosx.py. I might be able > to deduce what to do there, but will likely need some support from > someone in order to get that one done. > > To support the double clicks, I would rather not create a new event > like 'button_doubleclick_event', for backwards compatibility. I > believe that if we just stick with 'button_press_event' and set an > extra flag within the MouseEvent, any existing mpl code will still > work properly, because the normal sequence of events on a double click > are; DOWN, UP, DBLCLICK, UP. In current versions of matplotlib, the > DBLCLICK event is treated as a DOWN, and the strategy of just adding a > extra flag in MouseEvent would mean that existing mpl code would still > see the double click event as a DOWN. > > Anyway, I want to "throw a feeler" out there, and ask if the patch > would be accepted were I to go ahead and do it. I didn't want to spend > the time working on it if a decision had already been made a while > back to not ever support double clicks. > My vote would be yes, but I think i would want it as a separate event. Consider some of the widgets like lasso and the zoom bbox. If one were to attach a button_press_event for the purpose of detecting double clicks, I would imagine that there may exist conflicts (or those widget codes would have to be adjusted to exclusively respond only to single clicks). Would existing widgets also fire even if a double-click occured? My 2 cents, Ben Rootl |
From: Daniel H. <dh...@gm...> - 2011-10-24 01:00:55
|
I added double click support in, here in the following issue report: https://github.com/matplotlib/matplotlib/issues/550 I did use the extra flag in MouseEvent, but I can change this to a separate event if all think that it is appropriate; I still favor the flag for backwards compatibility. All backends are done except for cocoagg; see the issue report above for details. On Sat, Oct 22, 2011 at 10:57 PM, Benjamin Root <ben...@ou...> wrote: > > > On Saturday, October 22, 2011, Daniel Hyams <dh...@gm...> wrote: >> matplotlib doesn't support double clicks, and I was wondering if that >> was a design decision, or something that had been relegated to the "to >> do" box for someday. Hoping that it was still in the "todo" box, I >> think I can put most of it in without too much trouble, and supply you >> with a patch. >> >> The changes would be: >> 1) an extra flag MouseEvent, so that in a button_press_event >> handler, you can can tell if the press was a result of a double click >> or not, and >> 2) code in the backends to catch and set the double click flag properly >> >> I looked through the backends, and it was clear what to do in order to >> support double clicks for all but backend_macosx.py. I might be able >> to deduce what to do there, but will likely need some support from >> someone in order to get that one done. >> >> To support the double clicks, I would rather not create a new event >> like 'button_doubleclick_event', for backwards compatibility. I >> believe that if we just stick with 'button_press_event' and set an >> extra flag within the MouseEvent, any existing mpl code will still >> work properly, because the normal sequence of events on a double click >> are; DOWN, UP, DBLCLICK, UP. In current versions of matplotlib, the >> DBLCLICK event is treated as a DOWN, and the strategy of just adding a >> extra flag in MouseEvent would mean that existing mpl code would still >> see the double click event as a DOWN. >> >> Anyway, I want to "throw a feeler" out there, and ask if the patch >> would be accepted were I to go ahead and do it. I didn't want to spend >> the time working on it if a decision had already been made a while >> back to not ever support double clicks. >> > > My vote would be yes, but I think i would want it as a separate event. > Consider some of the widgets like lasso and the zoom bbox. If one were to > attach a button_press_event for the purpose of detecting double clicks, I > would imagine that there may exist conflicts (or those widget codes would > have to be adjusted to exclusively respond only to single clicks). Would > existing widgets also fire even if a double-click occured? > > My 2 cents, > Ben Rootl -- Daniel Hyams dh...@gm... |
From: Benjamin R. <ben...@ou...> - 2011-10-24 01:13:45
|
On Sunday, October 23, 2011, Daniel Hyams <dh...@gm...> wrote: > I added double click support in, here in the following issue report: > > https://github.com/matplotlib/matplotlib/issues/550 > > I did use the extra flag in MouseEvent, but I can change this to a > separate event if all think that it is appropriate; I still favor the > flag for backwards compatibility. All backends are done except for > cocoagg; see the issue report above for details. Thanks, I will look deeper into it tommorow. I am curious about what you mean by backwards compatibility? How do you see having a new event type cause issues? Ben Root |
From: Daniel H. <dh...@gm...> - 2011-10-24 01:46:23
|
Ben: In current versions of matplotlib, the double click event is always just bound to the same handler as a single press. Such as the following code in backends/backend_wx.py: bind(self,wx.EVT_LEFT_DOWN,self._onLeftButtonDown) bind(self,wx.EVT_LEFT_DCLICK,self._onLeftButtonDown) bind(self,wx.EVT_LEFT_UP,self._onLeftButtonUp) so when someone double clicks on a canvas, the events sent would be (except in the case of gtk*) DOWN, UP, DOWN, UP. If a new event is created for the double click, the sequence of events generated would be DOWN,UP,DCLICK,UP. If you use a flag with in MouseEvent to signify the double click, the sequence of events would be DOWN,UP,DOWN.DCLICK,UP basically. This means that old code that relies on double clicks generating a DOWN event would still work, and newer code that wants to use double clicks need only query the MouseEvent.dblclick flag to see if a press was a double click or not. * for gtk, the event sequence for a double click is currently DOWN,UP,DOWN,DOWN,UP. That's the only backend that I've seen that does it this way. With the patch, the event sequence would be DOWN,UP,DOWN,DOWN.DCLICK,UP. On Sun, Oct 23, 2011 at 9:13 PM, Benjamin Root <ben...@ou...> wrote: > > > On Sunday, October 23, 2011, Daniel Hyams <dh...@gm...> wrote: >> I added double click support in, here in the following issue report: >> >> https://github.com/matplotlib/matplotlib/issues/550 >> >> I did use the extra flag in MouseEvent, but I can change this to a >> separate event if all think that it is appropriate; I still favor the >> flag for backwards compatibility. All backends are done except for >> cocoagg; see the issue report above for details. > > Thanks, I will look deeper into it tommorow. I am curious about what you > mean by backwards compatibility? How do you see having a new event type > cause issues? > > Ben Root > -- Daniel Hyams dh...@gm... |