From f935266257b22ccb40fa6cde56711b096ae286aa Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Fri, 5 Nov 2010 14:05:31 -0600 Subject: [PATCH] win32: fix combo% on-popup --- collects/mred/private/wx/win32/canvas.rkt | 13 +++++++++---- collects/mred/private/wx/win32/choice.rkt | 4 ---- collects/mred/private/wx/win32/const.rkt | 7 ++++++- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/collects/mred/private/wx/win32/canvas.rkt b/collects/mred/private/wx/win32/canvas.rkt index 9191ba9338..e871aeb2f5 100644 --- a/collects/mred/private/wx/win32/canvas.rkt +++ b/collects/mred/private/wx/win32/canvas.rkt @@ -454,16 +454,21 @@ (define/public (append-combo-item s) (SendMessageW/str combo-hwnd CB_ADDSTRING 0 s)) (define/public (clear-combo-items) - (void)) + (SendMessageW combo-hwnd CB_RESETCONTENT 0 0)) (define/public (on-popup) (void)) (define/override (is-command? cmd) - (= cmd CBN_SELENDOK)) + (or (= cmd CBN_SELENDOK) + (= cmd CBN_DROPDOWN))) (define/public (do-command cmd control-hwnd) - (let ([i (SendMessageW combo-hwnd CB_GETCURSEL 0 0)]) - (queue-window-event this (lambda () (on-combo-select i))))) + (cond + [(= cmd CBN_SELENDOK) + (let ([i (SendMessageW combo-hwnd CB_GETCURSEL 0 0)]) + (queue-window-event this (lambda () (on-combo-select i))))] + [(= cmd CBN_DROPDOWN) + (constrained-reply (get-eventspace) (lambda () (on-popup)) (void))])) (define/override (is-hwnd? a-hwnd) (or (ptr-equal? panel-hwnd a-hwnd) diff --git a/collects/mred/private/wx/win32/choice.rkt b/collects/mred/private/wx/win32/choice.rkt index 4a045e7ac1..b189c0a9a0 100644 --- a/collects/mred/private/wx/win32/choice.rkt +++ b/collects/mred/private/wx/win32/choice.rkt @@ -15,10 +15,6 @@ (provide (protect-out choice%)) -(define CBN_DROPDOWN 7) -(define CBN_CLOSEUP 8) -(define CBN_SELENDCANCEL 10) - (define choice% (class item% (init parent cb label diff --git a/collects/mred/private/wx/win32/const.rkt b/collects/mred/private/wx/win32/const.rkt index ecfcc94193..6f8b4cb8ed 100644 --- a/collects/mred/private/wx/win32/const.rkt +++ b/collects/mred/private/wx/win32/const.rkt @@ -616,6 +616,11 @@ (define CB_INSERTSTRING #x014A) (define CB_SETCURSEL #x014E) (define CB_GETCURSEL #x0147) -(define CBN_SELENDOK 9) (define CB_ADDSTRING #x0143) (define CB_RESETCONTENT #x014B) + +(define CBN_SELENDOK 9) +(define CBN_DROPDOWN 7) +(define CBN_CLOSEUP 8) +(define CBN_SELENDCANCEL 10) +