From 82db08511e1f42fef57aabbbe621111cc8dba03e Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Thu, 9 Jul 1998 18:09:59 +0000 Subject: [PATCH] . original commit: 0ebde16a0f431e73b7f7a4fe7d01b65f936b6e84 --- collects/tests/mred/choice-list-steps.txt | 16 +++++++++++--- collects/tests/mred/item.ss | 27 ++++++++++++++--------- 2 files changed, 30 insertions(+), 13 deletions(-) diff --git a/collects/tests/mred/choice-list-steps.txt b/collects/tests/mred/choice-list-steps.txt index d4feb663..633cc0af 100644 --- a/collects/tests/mred/choice-list-steps.txt +++ b/collects/tests/mred/choice-list-steps.txt @@ -195,11 +195,13 @@ Multiple Selections >> Multiple-Selection Lists Only << ------------------- Click on each of the three items and make sure that "Selected N" - and "Callback Ok" are printed in the console. + and "Callback Ok" are printed in the console. (For most platforms + selecting an item deselects the other items, but some platforms + preserve the old selections. That's ok.) Click "Check" and verify the item list *and* the selection list. Only one item should be selected, and the only position of that item - (counting frmo 0) should be in the selection list. + (counting from 0) should be in the selection list. Use the shift key to select a second item. The console should show "Selected N" and "Callback Ok" as usual. @@ -215,6 +217,14 @@ Shift-click to select the remaining item. The console should show Control-click on a selected item. It should become unselected (and the other two selected items should remain so). The console should report - "Selected -1", "Deselect", and "Callback Ok". + "Deselected N" and "Callback Ok". +Click "Check" and verify the selection list. + +... + +Simulate should act like clicking, either extending the selection or + restarting it. + +Drag and make sure each selection/desel causes a notification. diff --git a/collects/tests/mred/item.ss b/collects/tests/mred/item.ss index 6d36b430..e75ae9a5 100644 --- a/collects/tests/mred/item.ss +++ b/collects/tests/mred/item.ss @@ -906,7 +906,8 @@ (list wx:const-event-type-listbox-command) (list wx:const-event-type-choice-command))) (define old-list null) - (define multi? (= list-style wx:const-multiple)) + (define multi? (or (= list-style wx:const-multiple) + (= list-style wx:const-extended))) (define callback (lambda (cx e) (when (zero? (send c number)) @@ -915,15 +916,19 @@ (send e get-command-int) (send e get-command-string)) old-list)) - (printf "Selected ~a~n" (send e get-command-int)) (cond - [(and multi? (= -1 (send e get-command-int))) + [(= 0 (send e get-extra-long)) ; deselection - (unless (= -1 (send e get-command-int)) - (error "selection index is not -1")) - (unless (null? (send e get-command-string)) - (error "string selection not null:" (send e get-command-string))) - (printf "Deselect~n")] + (printf "Deselected ~a~n" (send e get-command-int)) + (unless multi? + (error "delselection in a single-selection list")) + (unless (< -1 (send e get-command-int) (length actual-content)) + (error "deselection index is out of range")) + (unless (not (memv (send e get-command-int) (send c get-selections))) + (error "deselected item is actually selected")) + (unless (string=? (send e get-command-string) + (send c get-string (send e get-command-int))) + (error "string selection mismatch:" (send e get-command-string)))] [(= 2 (send e get-extra-long)) ; double-click (unless (= -1 (send e get-command-int)) @@ -933,6 +938,7 @@ (printf "Double-click~n")] [else ; selection + (printf "Selected ~a~n" (send e get-command-int)) (if (or (not multi?) (<= (length (send c get-selections)) 1)) (begin (unless (= (send e get-command-int) @@ -1092,7 +1098,7 @@ (send e set-command-string (if (< -1 p (length actual-content)) (list-ref actual-content p) - "???")) + null)) (when list? (send c set-first-item p)) (send c command e))) " by Simulate" #t)) @@ -1313,7 +1319,8 @@ (send lp stretchable-in-x #f) (make-object mred:button% lp (lambda (b e) (choice-or-list-frame #t wx:const-single #f)) "Make List Frame") (make-object mred:button% lp (lambda (b e) (choice-or-list-frame #t wx:const-single #t)) "Make Empty List Frame") -(make-object mred:button% lp (lambda (b e) (choice-or-list-frame #t wx:const-multiple #f)) "Make Multilist Frame") +(make-object mred:button% lp (lambda (b e) (choice-or-list-frame #t wx:const-multiple #f)) "Make MultiList Frame") +(make-object mred:button% lp (lambda (b e) (choice-or-list-frame #t wx:const-extended #f)) "Make MultiExtendList Frame") (make-object mred:button% ap (lambda (b e) (gauge-frame)) "Make Gauge Frame") (define tp (make-object mred:horizontal-panel% ap)) (send tp stretchable-in-x #f)