diff options
author | hobbs <hobbs> | 1999-12-16 21:59:35 (GMT) |
---|---|---|
committer | hobbs <hobbs> | 1999-12-16 21:59:35 (GMT) |
commit | 3bbf2a103c03c7c5f318598f0f8df4576a4872db (patch) | |
tree | 430ef5d08bf9e4fa76ad95f77476a11e1130e693 /win/tkWinCursor.c | |
parent | c9a242023cdce14e45cb94330e1800c7e864e4c2 (diff) | |
download | tk-3bbf2a103c03c7c5f318598f0f8df4576a4872db.zip tk-3bbf2a103c03c7c5f318598f0f8df4576a4872db.tar.gz tk-3bbf2a103c03c7c5f318598f0f8df4576a4872db.tar.bz2 |
* win/tkWinCursor.c: added support for Windows cursors to
TkGetCursorByName (.ani, .cur) using -cursor @<filename>
(Ascher) [Bug: 1350]
* win/tkWinWm.c: fixed 'wm deiconify' to update position of the
toplevel if event is waiting before mapping. (Mao) [Bug: 3687]
This removes the need for 'update idle' before 'wm deiconify' on
Windows.
Diffstat (limited to 'win/tkWinCursor.c')
-rw-r--r-- | win/tkWinCursor.c | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/win/tkWinCursor.c b/win/tkWinCursor.c index 2dfba03..0d200e0 100644 --- a/win/tkWinCursor.c +++ b/win/tkWinCursor.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkWinCursor.c,v 1.3 1999/04/16 01:51:50 stanton Exp $ + * RCS: @(#) $Id: tkWinCursor.c,v 1.4 1999/12/16 21:59:35 hobbs Exp $ */ #include "tkWinInt.h" @@ -109,7 +109,36 @@ TkGetCursorByName(interp, tkwin, string) cursorPtr->winCursor = LoadCursor(Tk_GetHINSTANCE(), string); cursorPtr->system = 0; } + if (string[0] == '@') { + int argc; + char **argv = NULL; + if (Tcl_SplitList(interp, string, &argc, &argv) != TCL_OK) { + return NULL; + } + /* + * Check for system cursor of type @<filename>, where only + * the name is allowed. This accepts either: + * -cursor @/winnt/cursors/globe.ani + * -cursor @C:/Winnt/cursors/E_arrow.cur + * -cursor {@C:/Program\ Files/Cursors/bart.ani} + */ + if ((argc != 1) || (argv[0][0] != '@')) { + ckfree((char *) argv); + goto badCursorSpec; + } + if (Tcl_IsSafe(interp)) { + Tcl_AppendResult(interp, "can't get cursor from a file in", + " a safe interpreter", (char *) NULL); + ckfree((char *) argv); + ckfree((char *)cursorPtr); + return NULL; + } + cursorPtr->winCursor = LoadCursorFromFile(&(argv[0][1])); + cursorPtr->system = 0; + ckfree((char *) argv); + } if (cursorPtr->winCursor == NULL) { + badCursorSpec: ckfree((char *)cursorPtr); Tcl_AppendResult(interp, "bad cursor spec \"", string, "\"", (char *) NULL); |