@@ -346,11 +346,34 @@ def button_press_event(self, event, dblclick=False):
346346
347347 num = getattr (event , 'num' , None )
348348 if sys .platform == 'darwin' : # 2 and 3 are reversed.
349- num = {2 : 3 , 3 : 2 }.get (num , num )
350- MouseEvent ("button_press_event" , self ,
349+ if num == 2 :
350+ num = 3
351+
352+ mpl_event = MouseEvent ("button_press_event" , self ,
351353 * self ._event_mpl_coords (event ), num , dblclick = dblclick ,
352354 modifiers = self ._mpl_modifiers (event ),
353- guiEvent = event )._process ()
355+ guiEvent = event )
356+
357+ if num == 3 :
358+ for ax in self .figure .axes :
359+ if ax .contains (mpl_event )[0 ] and ax .name == '3d' :
360+ self .show_context_menu (event , ax )
361+ return
362+ mpl_event ._process ()
363+
364+ def show_context_menu (self , event , ax ):
365+ menu = tk .Menu (tearoff = False )
366+
367+ def set_view (elev , azim ):
368+ ax .view_init (azim = azim , elev = elev , roll = 0 )
369+ self .draw_idle ()
370+
371+ menu .add_command (label = "X-Y View" , command = lambda : set_view (90 ,- 90 ))
372+ menu .add_command (label = "Y-Z View" , command = lambda : set_view (0 ,0 ))
373+ menu .add_command (label = "X-Z View" , command = lambda : set_view (0 ,- 90 ))
374+
375+ menu .post (event .x_root , event .y_root )
376+
354377
355378 def button_dblclick_event (self , event ):
356379 self .button_press_event (event , dblclick = True )
0 commit comments