︙ | | |
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
-
+
-
+
|
# a focus follows mouse will not steal away
# the focus if the mouse is moved around.
if {[focus] != $win} {
focus -force $win
}
event generate $win <Key-$keysym>
_pause 50
pause 50
if {[focus] != $win} {
focus -force $win
}
event generate $win <KeyRelease-$keysym>
_pause 50
pause 50
}
# Call _keypress for each character in the given string
proc _keypress_string {win string} {
foreach letter [split $string ""] {
_keypress $win $letter
|
︙ | | |
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
|
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
|
-
+
-
+
|
tkwait visibility $e
_keypress_string $e JUMP
set result [$e get]
event generate $e <Enter>
for {set i 0} {$i < 3} {incr i} {
_pause 100
pause 100
event generate $e <Button-1>
_pause 100
pause 100
event generate $e <ButtonRelease-1>
}
_keypress $e Delete
_keypress_string $e UP
lappend result [$e get]
} -cleanup {
|
︙ | | |
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
|
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
|
-
+
-
+
|
tkwait visibility $e
_keypress_string $e JUMP
set result [$e get 1.0 1.end]
event generate $e <Enter>
for {set i 0} {$i < 3} {incr i} {
_pause 100
pause 100
event generate $e <Button-1>
_pause 100
pause 100
event generate $e <ButtonRelease-1>
}
_keypress $e Delete
_keypress_string $e UP
lappend result [$e get 1.0 1.end]
} -cleanup {
|
︙ | | |
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
|
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
|
-
+
-
+
-
+
-
+
|
# Now drag until selend is highlighted, then click up
set current $anchor
while {[$e compare $current <= $selend]} {
foreach {current_x current_y} [_text_ind_to_x_y $e $current] break
event generate $e <B1-Motion> -x $current_x -y $current_y
set current [$e index [list $current + 1 char]]
_pause 50
pause 50
}
event generate $e <ButtonRelease-1> -x $current_x -y $current_y
_pause 200
pause 200
# Save the position of the insert cursor
lappend result [$e index insert]
# Save the highlighted text
lappend result [_get_selection $e]
# Now click and click and drag to the left, over "Tcl/Tk selection"
event generate $e <Button-1> -x $current_x -y $current_y
while {[$e compare $current >= [list $anchor - 4 char]]} {
foreach {current_x current_y} [_text_ind_to_x_y $e $current] break
event generate $e <B1-Motion> -x $current_x -y $current_y
set current [$e index [list $current - 1 char]]
_pause 50
pause 50
}
event generate $e <ButtonRelease-1> -x $current_x -y $current_y
_pause 200
pause 200
# Save the position of the insert cursor
lappend result [$e index insert]
# Save the highlighted text
lappend result [_get_selection $e]
|
︙ | | |
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
|
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
|
-
+
-
+
-
+
-
+
|
# Now drag until selend is highlighted, then click up
set current $anchor
while {$current <= $selend} {
foreach {current_x current_y} [_text_ind_to_x_y $e $current] break
event generate $e <B1-Motion> -x $current_x -y $current_y
incr current
_pause 50
pause 50
}
event generate $e <ButtonRelease-1> -x $current_x -y $current_y
_pause 200
pause 200
# Save the position of the insert cursor
lappend result [$e index insert]
# Save the highlighted text
lappend result [_get_selection $e]
# Now click and click and drag to the left, over "Tcl/Tk selection"
event generate $e <Button-1> -x $current_x -y $current_y
while {$current >= ($anchor - 4)} {
foreach {current_x current_y} [_text_ind_to_x_y $e $current] break
event generate $e <B1-Motion> -x $current_x -y $current_y
incr current -1
_pause 50
pause 50
}
event generate $e <ButtonRelease-1> -x $current_x -y $current_y
_pause 200
pause 200
# Save the position of the insert cursor
lappend result [$e index insert]
# Save the highlighted text
lappend result [_get_selection $e]
|
︙ | | |
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
|
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
|
-
+
-
+
-
+
-
+
-
+
-
+
|
# Get the x,y coords of the second e in "select"
foreach {anchor_x anchor_y} [_text_ind_to_x_y $e $anchor] break
# Click down, release, then click down again
event generate $e <Enter>
event generate $e <Button-1> -x $anchor_x -y $anchor_y
_pause 50
pause 50
event generate $e <ButtonRelease-1> -x $anchor_x -y $anchor_y
_pause 50
pause 50
event generate $e <Button-1> -x $anchor_x -y $anchor_y
_pause 50
pause 50
# Save the highlighted text
set result [list]
lappend result [_get_selection $e]
# Insert cursor should be at beginning of "select"
lappend result [$e index insert]
# Move mouse one character to the left
set current [$e index [list $anchor - 1 char]]
foreach {current_x current_y} [_text_ind_to_x_y $e $current] break
event generate $e <B1-Motion> -x $current_x -y $current_y
_pause 50
pause 50
# Insert cursor should be before the l in "select"
lappend result [$e index insert]
# Selection should still be the word "select"
lappend result [_get_selection $e]
# Move mouse to the space before the word "select"
set current [$e index [list $current - 3 char]]
foreach {current_x current_y} [_text_ind_to_x_y $e $current] break
event generate $e <B1-Motion> -x $current_x -y $current_y
_pause 200
pause 200
lappend result [$e index insert]
lappend result [_get_selection $e]
# Move mouse to the r in "Word"
set current 1.2
foreach {current_x current_y} [_text_ind_to_x_y $e $current] break
event generate $e <B1-Motion> -x $current_x -y $current_y
_pause 50
pause 50
# Selection should now be "Word select"
lappend result [_get_selection $e]
# Insert cursor should be before the r in "Word"
lappend result [$e index insert]
|
︙ | | |
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
|
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
|
-
+
-
+
-
+
-
+
-
+
-
+
|
# Get the x,y coords of the second e in "select"
foreach {anchor_x anchor_y} [_text_ind_to_x_y $e $anchor] break
# Click down, release, then click down again
event generate $e <Enter>
event generate $e <Button-1> -x $anchor_x -y $anchor_y
_pause 50
pause 50
event generate $e <ButtonRelease-1> -x $anchor_x -y $anchor_y
_pause 50
pause 50
event generate $e <Button-1> -x $anchor_x -y $anchor_y
_pause 50
pause 50
set result [list]
lappend result [_get_selection $e]
# Insert cursor should be at the end of "select"
lappend result [$e index insert]
# Move mouse one character to the left
set current [expr {$anchor - 1}]
foreach {current_x current_y} [_text_ind_to_x_y $e $current] break
event generate $e <B1-Motion> -x $current_x -y $current_y
_pause 50
pause 50
# Insert cursor should be before the l in "select"
lappend result [$e index insert]
# Selection should still be the word "select"
lappend result [_get_selection $e]
# Move mouse to the space before the word "select"
set current [expr {$current - 3}]
foreach {current_x current_y} [_text_ind_to_x_y $e $current] break
event generate $e <B1-Motion> -x $current_x -y $current_y
_pause 50
pause 50
lappend result [$e index insert]
lappend result [_get_selection $e]
# Move mouse to the r in "Word"
set current [expr {$current - 2}]
foreach {current_x current_y} [_text_ind_to_x_y $e $current] break
event generate $e <B1-Motion> -x $current_x -y $current_y
_pause 50
pause 50
# Selection should now be "Word select"
lappend result [_get_selection $e]
# Insert cursor should be before the r in "Word"
lappend result [$e index insert]
|
︙ | | |
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
|
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
|
-
+
-
+
-
+
-
+
-
+
-
+
-
+
|
# Triple click one third line leaving mouse down
foreach {anchor_x anchor_y} [_text_ind_to_x_y $e $anchor] break
event generate $e <Enter>
event generate $e <Button-1> -x $anchor_x -y $anchor_y
_pause 50
pause 50
event generate $e <ButtonRelease-1> -x $anchor_x -y $anchor_y
_pause 50
pause 50
event generate $e <Button-1> -x $anchor_x -y $anchor_y
_pause 50
pause 50
event generate $e <ButtonRelease-1> -x $anchor_x -y $anchor_y
_pause 50
pause 50
event generate $e <Button-1> -x $anchor_x -y $anchor_y
_pause 50
pause 50
set result [list]
lappend result [_get_selection $e]
# Drag up to second line
set current [$e index [list $anchor - 1 line]]
foreach {current_x current_y} [_text_ind_to_x_y $e $current] break
event generate $e <B1-Motion> -x $current_x -y $current_y
_pause 50
pause 50
lappend result [_get_selection $e]
# Drag up to first line
set current [$e index [list $current - 1 line]]
foreach {current_x current_y} [_text_ind_to_x_y $e $current] break
event generate $e <B1-Motion> -x $current_x -y $current_y
_pause 50
pause 50
lappend result [_get_selection $e]
return $result
} -cleanup {
deleteWindows
} -result [list "LINE THREE\n" "LINE TWO\nLINE THREE\n" \
|
︙ | | |
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
|
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
|
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
|
set right_x [expr {($x1 + $width) - 2}]
set right_y $middle_y
# Double click near left hand egde of the letter A
event generate $e <Enter>
event generate $e <Button-1> -x $left_x -y $left_y
_pause 50
pause 50
event generate $e <ButtonRelease-1> -x $left_x -y $left_y
_pause 50
pause 50
event generate $e <Button-1> -x $left_x -y $left_y
_pause 50
pause 50
event generate $e <ButtonRelease-1> -x $left_x -y $left_y
_pause 50
pause 50
set result [list]
lappend result [$e index insert]
lappend result [_get_selection $e]
# Clear selection by clicking at 0,0
event generate $e <Button-1> -x 0 -y 0
_pause 50
pause 50
event generate $e <ButtonRelease-1> -x 0 -y 0
_pause 50
pause 50
# Double click near right hand edge of the letter A
event generate $e <Button-1> -x $right_x -y $right_y
_pause 50
pause 50
event generate $e <ButtonRelease-1> -x $right_x -y $right_y
_pause 50
pause 50
event generate $e <Button-1> -x $right_x -y $right_y
_pause 50
pause 50
event generate $e <ButtonRelease-1> -x $right_x -y $right_y
_pause 50
pause 50
lappend result [$e index insert]
lappend result [_get_selection $e]
return $result
} -cleanup {
deleteWindows
|
︙ | | |
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
|
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
|
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
|
set right_x [expr {($x1 + $width) - 2}]
set right_y $middle_y
# Double click near left hand egde of the letter A
event generate $e <Enter>
event generate $e <Button-1> -x $left_x -y $left_y
_pause 50
pause 50
event generate $e <ButtonRelease-1> -x $left_x -y $left_y
_pause 50
pause 50
event generate $e <Button-1> -x $left_x -y $left_y
_pause 50
pause 50
event generate $e <ButtonRelease-1> -x $left_x -y $left_y
_pause 50
pause 50
set result [list]
lappend result [$e index insert]
lappend result [_get_selection $e]
# Clear selection by clicking at 0,0
event generate $e <Button-1> -x 0 -y 0
_pause 50
pause 50
event generate $e <ButtonRelease-1> -x 0 -y 0
_pause 50
pause 50
# Double click near right hand edge of the letter A
event generate $e <Button-1> -x $right_x -y $right_y
_pause 50
pause 50
event generate $e <ButtonRelease-1> -x $right_x -y $right_y
_pause 50
pause 50
event generate $e <Button-1> -x $right_x -y $right_y
_pause 50
pause 50
event generate $e <ButtonRelease-1> -x $right_x -y $right_y
_pause 50
pause 50
lappend result [$e index insert]
lappend result [_get_selection $e]
return $result
} -cleanup {
deleteWindows
|
︙ | | |
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
|
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
|
-
+
-
+
-
+
-
+
|
} -result {OK}
test event-9.1 {enter . window by destroying a toplevel - bug b1d115fa60} -setup {
set EnterBind [bind . <Enter>]
} -body {
wm geometry . 200x200+300+300
wm deiconify .
_pause 200
pause 200
toplevel .top2 -width 200 -height 200
wm geometry .top2 +[expr {[winfo rootx .]+50}]+[expr {[winfo rooty .]+50}]
update idletasks
wm deiconify .top2
update idletasks
raise .top2
_pause 400
pause 400
event generate .top2 <Motion> -warp 1 -x 50 -y 50
_pause 100
pause 100
bind . <Enter> {lappend res %W}
set res [list ]
destroy .top2
update idletasks
_pause 200
pause 200
set res
} -cleanup {
deleteWindows
bind . <Enter> $EnterBind
} -result {.}
# This test fails sporadically when run on the macOS CI runner. It does
|
︙ | | |
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
|
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
|
-
+
-
+
-
+
-
+
-
+
|
update
set iconified true
}
} -body {
toplevel .top1
wm geometry .top1 200x200+300+300
wm deiconify .top1
_pause 200
pause 200
toplevel .top2 -width 200 -height 200
wm geometry .top2 +[expr {[winfo rootx .top1]+50}]+[expr {[winfo rooty .top1]+50}]
_pause 200
pause 200
wm deiconify .top2
update idletasks
raise .top2
_pause 400
pause 400
event generate .top2 <Motion> -warp 1 -x 50 -y 50
_pause 100
pause 100
bind .top1 <Enter> {lappend res %W}
set res [list ]
destroy .top2
_pause 200
pause 200
set res
} -cleanup {
deleteWindows ; # destroy all children of ".", this already includes .top1
if {$iconified} {
wm deiconify .
update
}
|
︙ | | |
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
|
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
|
-
+
|
test event-9.11 {pointer window container = parent} -setup {
setup_win_mousepointer .one
wm withdraw .one
create_and_pack_frames .one
wm deiconify .one
tkwait visibility .one.f1.f2
_pause 200; # needed for Windows
pause 200; # needed for Windows
update idletasks; # finish display of window
set result "|"
} -body {
bind all <Leave> {append result "<Leave> %d %W|"}
bind all <Enter> {append result "<Enter> %d %W|"}
destroy .one.f1.f2
update
|
︙ | | |
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
|
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
|
-
+
|
wm withdraw .one
create_and_pack_frames .one
pack propagate .one.f1.f2 0
pack [frame .one.g -bg orange -width 80 -height 80] -anchor se -side bottom -in .one.f1.f2
wm deiconify .one
tkwait visibility .one.g
event generate .one <Motion> -warp 1 -x 250 -y 250
_pause 200; # needed for Windows
pause 200; # needed for Windows
set result "|"
} -body {
bind all <Leave> {append result "<Leave> %d %W|"}
bind all <Enter> {append result "<Enter> %d %W|"}
destroy .one.g
update
set result
|
︙ | | |
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
|
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
|
-
+
|
# TkPointerDeadWindow() and subsequent reading in GenerateEnterLeave().
setup_win_mousepointer .one
wm withdraw .one
create_and_pack_frames .one
wm deiconify .one
tkwait visibility .one.f1.f2
update idletasks; # finish displaying window
_pause 200; # needed for Windows
pause 200; # needed for Windows
set result "|"
} -body {
bind all <Leave> {append result "<Leave> %d %W|"}
bind all <Enter> {append result "<Enter> %d %W|"}
destroy .one.f1
update
set result
|
︙ | | |
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
|
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
|
-
+
|
# TkPointerDeadWindow() and subsequent reading in GenerateEnterLeave().
setup_win_mousepointer .one
wm withdraw .one
create_and_pack_frames .one
wm deiconify .one
tkwait visibility .one.f1.f2
update idletasks; # finish displaying window
_pause 200; # needed for Windows
pause 200; # needed for Windows
set result "|"
} -body {
bind all <Leave> {append result "<Leave> %d %W|"}
bind all <Enter> {append result "<Enter> %d %W|"}
destroy .one.f1.f2
update; # make sure window is gone
destroy .one.f1
|
︙ | | |
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
|
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
|
-
+
|
bind all <Enter> {}
unset result
} -result {|}
# cleanup
# macOS sometimes has trouble deleting the test window,
# causing a failure in focus.test.
_pause 200;
pause 200;
deleteWindows
update
unset -nocomplain keypress_lookup
rename _init_keypress_lookup {}
rename _keypress_lookup {}
rename _keypress {}
rename _text_ind_to_x_y {}
|
︙ | | |