@@ -813,7 +813,10 @@ def _update_val_from_pos(self, pos):
813
813
val = self ._max_in_bounds (pos )
814
814
self .set_max (val )
815
815
if self ._active_handle :
816
- self ._active_handle .set_xdata ([val ])
816
+ if self .orientation == "vertical" :
817
+ self ._active_handle .set_ydata ([val ])
818
+ else :
819
+ self ._active_handle .set_xdata ([val ])
817
820
818
821
def _update (self , event ):
819
822
"""Update the slider position."""
@@ -834,13 +837,21 @@ def _update(self, event):
834
837
event .canvas .release_mouse (self .ax )
835
838
self ._active_handle = None
836
839
return
837
-
838
- # determine which handle was grabbed
839
- handle = self ._handles [
840
- np .argmin (
841
- np .abs ([h .get_xdata ()[0 ] - event .xdata for h in self ._handles ])
842
- )
843
- ]
840
+
841
+ if self .orientation == "vertical" :
842
+ # determine which handle was grabbed
843
+ handle = self ._handles [
844
+ np .argmin (
845
+ np .abs ([h .get_ydata ()[0 ] - event .ydata for h in self ._handles ])
846
+ )
847
+ ]
848
+ else :
849
+ # determine which handle was grabbed
850
+ handle = self ._handles [
851
+ np .argmin (
852
+ np .abs ([h .get_xdata ()[0 ] - event .xdata for h in self ._handles ])
853
+ )
854
+ ]
844
855
# these checks ensure smooth behavior if the handles swap which one
845
856
# has a higher value. i.e. if one is dragged over and past the other.
846
857
if handle is not self ._active_handle :
@@ -904,14 +915,34 @@ def set_val(self, val):
904
915
xy [2 ] = .75 , val [1 ]
905
916
xy [3 ] = .75 , val [0 ]
906
917
xy [4 ] = .25 , val [0 ]
918
+
919
+ hbottom_pos = self ._handles [0 ].get_ydata ()
920
+ htop_pos = self ._handles [1 ].get_ydata ()
921
+ if hbottom_pos != val [0 ]:
922
+ hbottom_pos [0 ] = val [0 ]
923
+ self ._handles [0 ].set_ydata (hbottom_pos )
924
+ if htop_pos != val [1 ]:
925
+ htop_pos [0 ] = val [1 ]
926
+ self ._handles [1 ].set_ydata (htop_pos )
907
927
else :
908
928
xy [0 ] = val [0 ], .25
909
929
xy [1 ] = val [0 ], .75
910
930
xy [2 ] = val [1 ], .75
911
931
xy [3 ] = val [1 ], .25
912
932
xy [4 ] = val [0 ], .25
933
+
934
+ hleft_pos = self ._handles [0 ].get_xdata ()
935
+ hright_pos = self ._handles [1 ].get_xdata ()
936
+ if hleft_pos != val [0 ]:
937
+ hleft_pos [0 ] = val [0 ]
938
+ self ._handles [0 ].set_xdata (hleft_pos )
939
+ if hright_pos != val [1 ]:
940
+ hright_pos [0 ] = val [1 ]
941
+ self ._handles [1 ].set_xdata (hright_pos )
942
+
913
943
self .poly .xy = xy
914
944
self .valtext .set_text (self ._format (val ))
945
+
915
946
if self .drawon :
916
947
self .ax .figure .canvas .draw_idle ()
917
948
self .val = val
0 commit comments