Hi all,

this is a problem that bothered me for quite a long time. The first call to the Tk libraries within a Windows console application causes that the console application loses focus. Focus goes to the (hidden) main Tk window. (My console app only uses the TclODBC library, so it is otherwise a non-GUI app.)

To prevent this, the Tcl command

  wm attributes . -disabled 1

can be used at application startup. It seems that it does not affect regular windows (like the Browser). The Oz syntax to call this is

  {TkSend wm(attributes '.' '-disabled' 1)}

I don't know whether this problem exists on non-Windows platforms as well, and I have not tested this approach there.

However, I attach a patch to the TkInit.oz initialization script for anyone interested (this does the job, so you don't need to call the command yourself).

In case that this is Windows-specific, the command could perhaps be injected into mozart/platform/wish/winMain.cc instead of TkInit.oz (there already is one similar command in winMain.cc, "wm withdraw .", which hides the main window).

Cheers,
Filip
Index: share/lib/wp/TkInit.oz
===================================================================
RCS file: /services/mozart/CVS/mozart/share/lib/wp/TkInit.oz,v
retrieving revision 1.6
diff -u -r1.6 TkInit.oz
--- share/lib/wp/TkInit.oz      30 Apr 2003 22:05:03 -0000      1.6
+++ share/lib/wp/TkInit.oz      12 Sep 2006 09:58:58 -0000
@@ -21,7 +21,10 @@
 %%% of this file, and for a DISCLAIMER OF ALL
 %%% WARRANTIES.
 %%%
-
+% prevent the main window from stealing focus on startup:
+'
+wm attributes . -disabled 1
+'#
 % make sure
 '
 fconfigure stdout -translation {auto lf}
_________________________________________________________________________________
mozart-users mailing list                               
[email protected]
http://www.mozart-oz.org/mailman/listinfo/mozart-users

Reply via email to