@@ -73,14 +73,14 @@ def onselect(epress, erelease):
73
73
ax ._got_onselect = True
74
74
assert epress .xdata == 100
75
75
assert epress .ydata == 100
76
- assert erelease .xdata == 200
77
- assert erelease .ydata == 200
76
+ assert erelease .xdata == 199
77
+ assert erelease .ydata == 199
78
78
79
79
tool = widgets .RectangleSelector (ax , onselect , ** kwargs )
80
80
event = get_event (ax , xdata = 100 , ydata = 100 , button = 1 )
81
81
tool .press (event )
82
82
83
- event = get_event (ax , xdata = 125 , ydata = 125 , button = 1 )
83
+ event = get_event (ax , xdata = 199 , ydata = 199 , button = 1 )
84
84
tool .onmove (event )
85
85
86
86
# purposely drag outside of axis for release
@@ -99,6 +99,50 @@ def test_rectangle_selector():
99
99
check_rectangle (rectprops = dict (fill = True ))
100
100
101
101
102
+ def test_rectangle_modifiers ():
103
+ # TODO: add tests for center, square, center, shift+drag
104
+ pass
105
+
106
+
107
+ def test_rectangle_handles ():
108
+ fig , ax = plt .subplots (1 , 1 )
109
+ ax .plot ([0 , 200 ], [0 , 200 ])
110
+ ax .figure .canvas .draw ()
111
+
112
+ def onselect (epress , erelease ):
113
+ pass
114
+
115
+ tool = widgets .RectangleSelector (ax , onselect = onselect ,
116
+ maxdist = 10 )
117
+ event = get_event (ax , xdata = 100 , ydata = 100 , button = 1 )
118
+ tool .press (event )
119
+
120
+ tool .extents = (100 , 150 , 100 , 150 )
121
+
122
+ assert tool .corners == (
123
+ (100 , 150 , 150 , 100 ), (100 , 100 , 150 , 150 ))
124
+ assert tool .extents == (100 , 150 , 100 , 150 )
125
+ assert tool .edge_centers == (
126
+ (100 , 125.0 , 150 , 125.0 ), (125.0 , 100 , 125.0 , 150 ))
127
+ assert tool .extents == (100 , 150 , 100 , 150 )
128
+
129
+ # grab a corner and move it
130
+ event = get_event (ax , xdata = 100 , ydata = 100 )
131
+ tool .press (event )
132
+ event = get_event (ax , xdata = 120 , ydata = 120 )
133
+ tool .onmove (event )
134
+ tool .release (event )
135
+ assert tool .extents == (120 , 150 , 120 , 150 )
136
+
137
+ # create a new rectangle
138
+ event = get_event (ax , xdata = 10 , ydata = 10 )
139
+ tool .press (event )
140
+ event = get_event (ax , xdata = 100 , ydata = 100 )
141
+ tool .onmove (event )
142
+ tool .release (event )
143
+ assert tool .extents == (10 , 100 , 10 , 100 )
144
+
145
+
102
146
@cleanup
103
147
def check_span (* args , ** kwargs ):
104
148
fig , ax = plt .subplots (1 , 1 )
0 commit comments