From 60611bc081349662d27e3caa13dcdb193a3eba7c Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Sun, 11 Jan 2015 11:05:36 -0700 Subject: [PATCH] cocoa: fix `focus` method Don't confuse "should the Tab key advance the focus to this window?" with "can this window have the focus?". --- gui-lib/mred/private/wx/cocoa/canvas.rkt | 2 +- gui-lib/mred/private/wx/cocoa/item.rkt | 2 +- gui-lib/mred/private/wx/cocoa/message.rkt | 2 +- gui-lib/mred/private/wx/cocoa/tab-panel.rkt | 2 +- gui-lib/mred/private/wx/cocoa/window.rkt | 5 +++-- 5 files changed, 7 insertions(+), 6 deletions(-) diff --git a/gui-lib/mred/private/wx/cocoa/canvas.rkt b/gui-lib/mred/private/wx/cocoa/canvas.rkt index 976d9f00..642b69d9 100644 --- a/gui-lib/mred/private/wx/cocoa/canvas.rkt +++ b/gui-lib/mred/private/wx/cocoa/canvas.rkt @@ -814,7 +814,7 @@ (not (send e button-down? 'left)) (not (on-menu-click? e))))) - (define/override (gets-focus?) + (define/override (can-accept-focus?) wants-focus?) (define/override (can-be-responder?) (and wants-focus? (is-enabled-to-root?))) diff --git a/gui-lib/mred/private/wx/cocoa/item.rkt b/gui-lib/mred/private/wx/cocoa/item.rkt index 6760e2e8..d95dc8bd 100644 --- a/gui-lib/mred/private/wx/cocoa/item.rkt +++ b/gui-lib/mred/private/wx/cocoa/item.rkt @@ -44,7 +44,7 @@ (let ([on? (and on? (is-window-enabled?))]) (tellv (get-cocoa-control) setEnabled: #:type _BOOL on?))) - (define/override (gets-focus?) + (define/override (can-accept-focus?) (tell #:type _BOOL (get-cocoa-control) canBecomeKeyView)) (define/public (command e) diff --git a/gui-lib/mred/private/wx/cocoa/message.rkt b/gui-lib/mred/private/wx/cocoa/message.rkt index 360f4e8f..b8e17b03 100644 --- a/gui-lib/mred/private/wx/cocoa/message.rkt +++ b/gui-lib/mred/private/wx/cocoa/message.rkt @@ -117,7 +117,7 @@ [else (tellv (get-cocoa) setImage: (bitmap->image label))])) - (define/override (gets-focus?) #f) + (define/override (can-accept-focus?) #f) (define/public (set-preferred-size) (tellv (get-cocoa) sizeToFit) diff --git a/gui-lib/mred/private/wx/cocoa/tab-panel.rkt b/gui-lib/mred/private/wx/cocoa/tab-panel.rkt index 7dbb8633..906b6710 100644 --- a/gui-lib/mred/private/wx/cocoa/tab-panel.rkt +++ b/gui-lib/mred/private/wx/cocoa/tab-panel.rkt @@ -206,7 +206,7 @@ (when control-cocoa (tellv control-cocoa setEnabled: #:type _BOOL on?)))) - (define/override (gets-focus?) + (define/override (can-accept-focus?) (and (not control-cocoa) (tell #:type _BOOL tabv-cocoa canBecomeKeyView))) (define/override (get-cocoa-focus) diff --git a/gui-lib/mred/private/wx/cocoa/window.rkt b/gui-lib/mred/private/wx/cocoa/window.rkt index d9850411..8713b301 100644 --- a/gui-lib/mred/private/wx/cocoa/window.rkt +++ b/gui-lib/mred/private/wx/cocoa/window.rkt @@ -751,7 +751,7 @@ (accept-drags-everywhere (or accept-drag? accept-parent-drag?)))) (define/public (set-focus) - (when (and (gets-focus?) + (when (and (can-accept-focus?) (is-enabled-to-root?)) (let ([w (tell cocoa window)]) (when w @@ -912,7 +912,8 @@ (tellv content addCursorRect: #:type _NSRect r cursor: cursor-handle))))) (define/public (get-cursor-width-delta) 0) - (define/public (gets-focus?) #f) + (define/public (can-accept-focus?) #f) + (define/public (gets-focus?) (can-accept-focus?)) (define/public (can-be-responder?) (is-enabled-to-root?)) (define/public (on-color-change)