From: Michael M. <mic...@na...> - 2004-07-15 14:44:37
|
Thanks Jim. Is "arrow" really the default toplevel cursor? It's not on my Linux machine, and I don't know about any of the other Tcl/Tk implementations. On my Linux machine, the default cursor appears to be "left_ptr", which looks identical to "arrow" on the Mac. I've never messed with cursors much, but can't a user set his own default cursor somehow? If he does, won't Tcl/Tk pick this up? > From: Jim Ingham <ji...@ap...> > Date: Wed, 14 Jul 2004 22:22:45 -0700 > To: Neil Madden <ne...@cs...> > Cc: "'Michael McFarlane'" <mic...@na...>, Jeff Hobbs > <jeffh@ActiveState.com>, tc...@li... > Subject: Re: [MACTCL] BWidget 1.7 Fixes > > Ah, the reason this works on XP is that as a last resort fallback, > TkpSetCursor on Windows does: > > > void > TkpSetCursor(cursor) > TkpCursor cursor; > { > HCURSOR hcursor; > TkWinCursor *winCursor = (TkWinCursor *) cursor; > > if (winCursor == NULL || winCursor->winCursor == NULL) { > hcursor = LoadCursor(NULL, TK_DEFAULT_CURSOR); > ... > > The default cursor for toplevels is NULL. So when we fall all the way > back to TkpSetCursor we have no cursor. On Windows, this forces the > cursor to the arrow cursor. > > On the Mac, we were trying to do the same thing, but this got balled up > with the code that is trying not to change the cursor more than > necessary. > > The following patch should fix things: > > Index: tkMacOSXCursor.c > =================================================================== > RCS file: /cvsroot/tktoolkit/tk/macosx/tkMacOSXCursor.c,v > retrieving revision 1.4 > diff -p -p -r1.4 tkMacOSXCursor.c > *** tkMacOSXCursor.c 11 Feb 2003 07:26:18 -0000 1.4 > --- tkMacOSXCursor.c 15 Jul 2004 05:12:09 -0000 > *************** TkpSetCursor( > *** 431,439 **** > } > > if (cursor == None) { > ! if (gCurrentCursor == NULL) { > ! cursorChanged = 0; > ! } > gCurrentCursor = NULL; > } else { > if (gCurrentCursor == (TkMacOSXCursor *) cursor) { > --- 431,444 ---- > } > > if (cursor == None) { > ! /* > ! * This is a little tricky. We can't really tell whether > ! * gCurrentCursor is NULL because it was NULL last time around > ! * or because we just freed the current cursor. So if the > input > ! * cursor is NULL, we always need to reset it, we can't trust > the > ! * cursorChanged logic. > ! */ > ! > gCurrentCursor = NULL; > } else { > if (gCurrentCursor == (TkMacOSXCursor *) cursor) { > > This seems a bit odd to me, however. The Windows and Mac OS X > TkpSetCursor needs this fallback because the default toplevel cursor is > NULL. But the default toplevel cursor should be the arrow, shouldn't > it? We are enforcing this in TkpSetCursor, but in a backhanded way... > > However, I wouldn't propose messing with the defaults for the 8.4.7 > release. That's too big a change, and maybe I am missing something. > > Jim > > On Jul 14, 2004, at 5:50 PM, Neil Madden wrote: > >> On 14 Jul 2004, at 22:33, Jeff Hobbs wrote: >>> >>> This appears to be a Mac issue, as configure a widget back >>> to the "" cursor should cause an update (it should use >>> whatever cursor the toplevel uses). I do not see this issue >>> on XP. >>> >> Yup - see Tk (Aqua) bug: 894550 (Empty cursor ignored in canvas and >> text widget) >> >> https://sourceforge.net/tracker/? >> func=detail&aid=894550&group_id=12997&atid=112997 >> >> Neil. >> >> >> >> ------------------------------------------------------- >> This SF.Net email is sponsored by BEA Weblogic Workshop >> FREE Java Enterprise J2EE developer tools! >> Get your free copy of BEA WebLogic Workshop 8.1 today. >> http://ads.osdn.com/?ad_id=4721&alloc_id=10040&op=click >> _______________________________________________ >> Tcl-mac mailing list >> Tc...@li... >> https://lists.sourceforge.net/lists/listinfo/tcl-mac >> > _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- > Jim Ingham > ji...@ap... > Developer Tools - gdb > |