@@ -240,7 +240,6 @@ def get_width():
240
240
self .assert_sidebar_n_lines (1 )
241
241
self .assertEqual (get_width (), 1 )
242
242
243
- @unittest .skipIf (platform == 'darwin' , 'test tk version dependent' )
244
243
def test_click_selection (self ):
245
244
self .linenumber .show_sidebar ()
246
245
self .text .insert ('1.0' , 'one\n two\n three\n four\n ' )
@@ -254,44 +253,47 @@ def test_click_selection(self):
254
253
255
254
self .assertEqual (self .get_selection (), ('2.0' , '3.0' ))
256
255
257
- @unittest .skipIf (platform == 'darwin' , 'test tk version dependent' )
258
- def test_drag_selection_down (self ):
259
- self .linenumber .show_sidebar ()
260
- self .text .insert ('1.0' , 'one\n two\n three\n four\n five\n ' )
261
- self .root .update ()
256
+ def simulate_drag (self , start_line , end_line ):
257
+ start_x , start_y = self .get_line_screen_position (start_line )
258
+ end_x , end_y = self .get_line_screen_position (end_line )
262
259
263
- # Drag from the second line to the fourth line.
264
- start_x , start_y = self .get_line_screen_position (2 )
265
- end_x , end_y = self .get_line_screen_position (4 )
266
260
self .linenumber .sidebar_text .event_generate ('<Button-1>' ,
267
261
x = start_x , y = start_y )
268
- self .linenumber .sidebar_text .event_generate ('<B1-Motion>' ,
269
- x = start_x , y = start_y )
270
- self .linenumber .sidebar_text .event_generate ('<B1-Motion>' ,
271
- x = end_x , y = end_y )
262
+ self .root .update ()
263
+
264
+ def lerp (a , b , steps ):
265
+ """linearly interpolate from a to b (inclusive) in equal steps"""
266
+ last_step = steps - 1
267
+ for i in range (steps ):
268
+ yield ((last_step - i ) / last_step ) * a + (i / last_step ) * b
269
+
270
+ for x , y in zip (
271
+ map (int , lerp (start_x , end_x , steps = 11 )),
272
+ map (int , lerp (start_y , end_y , steps = 11 )),
273
+ ):
274
+ self .linenumber .sidebar_text .event_generate ('<B1-Motion>' , x = x , y = y )
275
+ self .root .update ()
276
+
272
277
self .linenumber .sidebar_text .event_generate ('<ButtonRelease-1>' ,
273
278
x = end_x , y = end_y )
274
279
self .root .update ()
280
+
281
+ def test_drag_selection_down (self ):
282
+ self .linenumber .show_sidebar ()
283
+ self .text .insert ('1.0' , 'one\n two\n three\n four\n five\n ' )
284
+ self .root .update ()
285
+
286
+ # Drag from the second line to the fourth line.
287
+ self .simulate_drag (2 , 4 )
275
288
self .assertEqual (self .get_selection (), ('2.0' , '5.0' ))
276
289
277
- @unittest .skipIf (platform == 'darwin' , 'test tk version dependent' )
278
290
def test_drag_selection_up (self ):
279
291
self .linenumber .show_sidebar ()
280
292
self .text .insert ('1.0' , 'one\n two\n three\n four\n five\n ' )
281
293
self .root .update ()
282
294
283
295
# Drag from the fourth line to the second line.
284
- start_x , start_y = self .get_line_screen_position (4 )
285
- end_x , end_y = self .get_line_screen_position (2 )
286
- self .linenumber .sidebar_text .event_generate ('<Button-1>' ,
287
- x = start_x , y = start_y )
288
- self .linenumber .sidebar_text .event_generate ('<B1-Motion>' ,
289
- x = start_x , y = start_y )
290
- self .linenumber .sidebar_text .event_generate ('<B1-Motion>' ,
291
- x = end_x , y = end_y )
292
- self .linenumber .sidebar_text .event_generate ('<ButtonRelease-1>' ,
293
- x = end_x , y = end_y )
294
- self .root .update ()
296
+ self .simulate_drag (4 , 2 )
295
297
self .assertEqual (self .get_selection (), ('2.0' , '5.0' ))
296
298
297
299
def test_scroll (self ):
0 commit comments