Evil Carbon README window...
Ryan C. Gordon
icculus at clutteredmind.org
Thu May 20 10:50:26 EDT 2004
I made some changes to carbonui.c and carbon/carbonres.* to allow
installation to keep progressing when the README window is displayed.
Previously, it'd block in an event handling loop until the Close button
is clicked, which "worked" but would halt an installation in progress
until the window is gone. This is problematic for two reasons: first,
you want to do as much work as possible while the user is distracted on
an otherwise-idle machine, and two, if they pull up the readme and walk
away for several hours, they'll return to find the installation is still
at, say, 1%.
EULAs and other prompting windows still block in an event loop, since
you presumably want the user's immediate attention before moving on.
The fix wasn't as pretty as I'd like; please let me know if anything
Also, the README window doesn't respect high ascii chars (like that "TM"
trademark character). There's probably a CFString somewhere that is
built with the wrong encoding...MacRoman instead of ISOLatin1, etc.
Other culprits are things like the CFSTR() macro and SetControlData
elements that can take either a null-terminated string or a
CFString...these have to get weeded out so that the create a CFString
with the right encoding and pass that to the system. Any brave souls out
there that wish to fix this should dig into carbon/STUPControl.* and/or
carbon/YASTControl.* (but I took the lazy route and removed the
high-ASCII chars from my README).
Also, the README window's scroll bar doesn't accept the first mouse
click when you try to scroll...you have to try your "grab" of the bar
twice, which really feels like you "missed" the first time, even though
you didn't. Almost certainly a focus issue. I'd love someone other than
me to fix this.
I find it hard to believe that there isn't a scrolling text widget (even
better, a Rich Text widget) exposed _somewhere_ in Carbon, and that it
requires a third-party support implementation (or Cocoa). Greg swears
there isn't, though, and having seen the state of Carbon documentation
on the 'net, even if he's wrong, he might as well not be.
More information about the Lokisetup