http://qs1969.pair.com?node_id=256069


in reply to How to bring a Tk window to the top

How come no one has mentioned the focusForce() method? The raise() method will bring a window to the foreground, but another window may have focus. focusForce will force a window to take the focus. Of course, this is not always nice, but that is what rinceWind wants. (:

Hope that helps some,

Theodore Charles III
Network Administrator
Los Angeles Senior High
email->secon_kun@hotmail.com
perl -e "map{print++$_}split//,Mdbnr;"

Replies are listed 'Best First'.
Re: Re: How to bring a Tk window to the top
by converter (Priest) on May 06, 2003 at 23:21 UTC

    From the Tk::focus POD:

    $widget->focusForce Sets the focus of $widget's display to $widget, even if the + appli- cation doesn't currently have the input focus for the displ +ay. This command should be used sparingly, if at all. In norma +l usage, an application should not claim the focus for itself; inst +ead, it should wait for the window manager to give it the focus.

    I've found only one case where focusForce was required to get focus back to one of my windows, and that was after a call to getOpenFile from a composite widget. I'm still not sure if focusForce was required because of something I was doing wrong or a focus bug introduced by getOpenFile (I suspect the former).

    If raising a window doesn't cause the window manager to give it focus, then $widget->focus should be sufficient.