[racket] Two more focus questions
At Wed, 04 May 2011 12:51:40 +0100, Erich Rast wrote:
> 1.) Is it possible to change the default "gadget order" in a frame%?
> Right now, the first created gets the first focus. I have a text-field
> and a popup menu above a list-box, but would like to have the list-box
> get the default keyboard focus (i.e. when the frame is shown, without
> having to press tab to get there).
There's not currently a way to set the order, but to set the initial
focus, you should be able to call `focus' on a control before showing
the frame.
> 2.) I have a frame% with text% fields in it and would like to bring it
> to the foreground programmatically. However, no combination of show and
> focus I've tried so far seems to actually move the keyboard focus from
> the window that currently has the focus to the frame that is moved to
> the foreground. The frame is moved to the foreground, but text% editors
> remain greyed out and the focus method does not seem to have any effect
> on them.
If I remember correctly, you're usually on a Mac? The `show' method on
frame% should move the focus, too.
Below is the program I tired, where clicking "Switch" switches the
front frame and sets the focus as expected. Does that example fail on
your machine?
----------------------------------------
#lang racket/gui
(define f (new frame% [label "First"]))
(new text-field% [parent f] [label #f])
(new button% [parent f] [label "Switch"]
[callback (lambda (b e) (send g show #t))])
(define g (new frame% [label "Second"]))
(new text-field% [parent g] [label #f])
(new button% [parent g] [label "Switch"]
[callback (lambda (b e) (send f show #t))])
(send f show #t)
(send g show #t)