Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | - merge trunk - provide _strtoi64 fallback for MSVC6.0 |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | bug-1913750 |
Files: | files | file ages | folders |
SHA1: |
c09cb83001c075450909d438e525556b |
User & Date: | jan.nijtmans 2012-02-23 21:05:15 |
Context
2012-02-25
| ||
08:12 | [Bug 1913750]: tk_chooseDirectory -initialdir internationalization problem check-in: 3e882ee5 user: jan.nijtmans tags: trunk | |
2012-02-23
| ||
21:05 | - merge trunk - provide _strtoi64 fallback for MSVC6.0 Closed-Leaf check-in: c09cb830 user: jan.nijtmans tags: bug-1913750 | |
2012-02-22
| ||
22:58 | Patch for font metrics and colorspace provided by Adrian Robert check-in: 983e48df user: kevin_walzer tags: trunk | |
2012-02-17
| ||
21:47 | [Bug 1913750]: tk_chooseDirectory -initialdir internationalization problem. check-in: 8480020d user: jan.nijtmans tags: bug-1913750 | |
Changes
Changes to ChangeLog.
1 2 3 4 5 6 7 8 9 10 11 | 2012-02-?? Jan Nijtmans <[email protected]> * win/tkWinDialog.c: [Bug 1913750]: tk_chooseDirectory -initialdir internationalization problem. 2012-02-15 Jan Nijtmans <[email protected]> * xlib/xcolors.c: [Bug 3486474]: Inconsistent color scaling * generic/tkColor.c: new internal function TkParseColor * generic/tkInt.h: * generic/tk*.c: Change XParseColor() to TkParseColor() everywhere. | > | 1 2 3 4 5 6 7 8 9 10 11 12 | 2012-02-?? Jan Nijtmans <[email protected]> * win/tkWinDialog.c: [Bug 1913750]: tk_chooseDirectory -initialdir internationalization problem. * xlib/xcolors.c: provide _strtoi64 fallback for MSVC6.0 2012-02-15 Jan Nijtmans <[email protected]> * xlib/xcolors.c: [Bug 3486474]: Inconsistent color scaling * generic/tkColor.c: new internal function TkParseColor * generic/tkInt.h: * generic/tk*.c: Change XParseColor() to TkParseColor() everywhere. |
︙ | ︙ |
Changes to generic/tkColor.c.
︙ | ︙ | |||
828 829 830 831 832 833 834 | #ifndef __WIN32__ /* This function is not necessary for Win32, * since XParseColor already does the right thing */ Status TkParseColor( Display * display, /* The display */ Colormap map, /* Color map */ | | | 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 | #ifndef __WIN32__ /* This function is not necessary for Win32, * since XParseColor already does the right thing */ Status TkParseColor( Display * display, /* The display */ Colormap map, /* Color map */ const char* spec, /* String to be parsed */ XColor * colorPtr) { if (*spec == '#') { char buf[14]; buf[0] = '#'; buf[13] = '\0'; if (!*(++spec) || !*(++spec) || !*(++spec)) { /* Not at least 3 hex digits, so invalid */ |
︙ | ︙ |
Changes to generic/tkConsole.c.
︙ | ︙ | |||
508 509 510 511 512 513 514 | /* * Not checking for utf8 == NULL. Did not check for TCL_ERROR * from Tcl_SetChannelOption() in Tk_InitConsoleChannels() either. * Assumption is utf-8 Tcl_Encoding is reliably present. */ | | | 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 | /* * Not checking for utf8 == NULL. Did not check for TCL_ERROR * from Tcl_SetChannelOption() in Tk_InitConsoleChannels() either. * Assumption is utf-8 Tcl_Encoding is reliably present. */ const char *bytes = Tcl_ExternalToUtfDString(utf8, buf, toWrite, &ds); int numBytes = Tcl_DStringLength(&ds); Tcl_Obj *cmd = Tcl_NewStringObj("tk::ConsoleOutput", -1); Tcl_FreeEncoding(utf8); if (data->type == TCL_STDERR) { |
︙ | ︙ |
Changes to generic/tkInt.h.
︙ | ︙ | |||
1211 1212 1213 1214 1215 1216 1217 | ClientData clientData); MODULE_SCOPE void TkpWarpPointer(TkDisplay *dispPtr); #ifdef __WIN32__ #define TkParseColor XParseColor #else MODULE_SCOPE Status TkParseColor (Display * display, | | | 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 | ClientData clientData); MODULE_SCOPE void TkpWarpPointer(TkDisplay *dispPtr); #ifdef __WIN32__ #define TkParseColor XParseColor #else MODULE_SCOPE Status TkParseColor (Display * display, Colormap map, const char* spec, XColor * colorPtr); #endif /* * Unsupported commands. */ |
︙ | ︙ |
Changes to macosx/tkMacOSXColor.c.
︙ | ︙ | |||
262 263 264 265 266 267 268 | break; } case TRANSPARENT_PIXEL: rgba[3] = 0.0; break; } | > | > | | | 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 | break; } case TRANSPARENT_PIXEL: rgba[3] = 0.0; break; } // this attempts to find something roughly fitting for any display // *c = CGColorCreateGenericRGB(rgba[0], rgba[1], rgba[2], rgba[3]); // may be off for non-main display but in most cases better than prev static CGColorSpaceRef deviceRGBSpace = NULL; if (!deviceRGBSpace) { deviceRGBSpace = CGDisplayCopyColorSpace(CGMainDisplayID()); } *c = CGColorCreate(deviceRGBSpace, rgba ); } return err; } /* *---------------------------------------------------------------------- * |
︙ | ︙ |
Changes to macosx/tkMacOSXFont.c.
︙ | ︙ | |||
225 226 227 228 229 230 231 | { TkFontAttributes *faPtr; TkFontMetrics *fmPtr; NSDictionary *nsAttributes; NSRect bounds; CGFloat kern = 0.0; NSFontRenderingMode renderingMode = NSFontDefaultRenderingMode; | | > | | | | 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 | { TkFontAttributes *faPtr; TkFontMetrics *fmPtr; NSDictionary *nsAttributes; NSRect bounds; CGFloat kern = 0.0; NSFontRenderingMode renderingMode = NSFontDefaultRenderingMode; int ascent, descent/*, dontAA*/; static const UniChar ch[] = {'.', 'W', ' ', 0xc4, 0xc1, 0xc2, 0xc3, 0xc7}; /* ., W, Space, Auml, Aacute, Acirc, Atilde, Ccedilla */ #define nCh (sizeof(ch) / sizeof(UniChar)) CGGlyph glyphs[nCh]; CGRect boundingRects[nCh]; fontPtr->font.fid = (Font) fontPtr; faPtr = &fontPtr->font.fa; if (reqFaPtr) { *faPtr = *reqFaPtr; } else { TkInitFontAttributes(faPtr); } fontPtr->nsFont = nsFont; // some don't like antialiasing on fixed-width even if bigger than limit // dontAA = [nsFont isFixedPitch] && fontPtr->font.fa.size <= 10; if (antialiasedTextEnabled >= 0/* || dontAA*/) { renderingMode = (antialiasedTextEnabled == 0/* || dontAA*/) ? NSFontIntegerAdvancementsRenderingMode : NSFontAntialiasedRenderingMode; } nsFont = [nsFont screenFontWithRenderingMode:renderingMode]; GetTkFontAttributesForNSFont(nsFont, faPtr); fmPtr = &fontPtr->font.fm; fmPtr->ascent = floor([nsFont ascender] + [nsFont leading] + 0.5); |
︙ | ︙ | |||
824 825 826 827 828 829 830 | goto done; } attributedString = [[NSAttributedString alloc] initWithString:string attributes:fontPtr->nsAttributes]; typesetter = CTTypesetterCreateWithAttributedString( (CFAttributedStringRef)attributedString); start = Tcl_NumUtfChars(source, rangeStart); | | | | | 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 | goto done; } attributedString = [[NSAttributedString alloc] initWithString:string attributes:fontPtr->nsAttributes]; typesetter = CTTypesetterCreateWithAttributedString( (CFAttributedStringRef)attributedString); start = Tcl_NumUtfChars(source, rangeStart); len = Tcl_NumUtfChars(source + rangeStart, rangeLength); if (start > 0) { range.length = start; line = CTTypesetterCreateLine(typesetter, range); offset = CTLineGetTypographicBounds(line, NULL, NULL, NULL); CFRelease(line); } if (maxLength < 0) { index = len; range.length = len; line = CTTypesetterCreateLine(typesetter, range); width = CTLineGetTypographicBounds(line, NULL, NULL, NULL); CFRelease(line); } else { double maxWidth = maxLength + offset; NSCharacterSet *cs; index = start; if (flags & TK_WHOLE_WORDS) { index = CTTypesetterSuggestLineBreak(typesetter, start, maxWidth); if (index <= start && (flags & TK_AT_LEAST_ONE)) { flags &= ~TK_WHOLE_WORDS; } } if (index <= start && !(flags & TK_WHOLE_WORDS)) { index = CTTypesetterSuggestClusterBreak(typesetter, start, maxWidth); } cs = (index < len || (flags & TK_WHOLE_WORDS)) ? whitespaceCharacterSet : lineendingCharacterSet; while (index > start && [cs characterIsMember:[string characterAtIndex:(index - 1)]]) { index--; } |
︙ | ︙ | |||
874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 | } if (width < maxWidth && (flags & TK_PARTIAL_OK) && index < len) { range.length = ++index; line = CTTypesetterCreateLine(typesetter, range); width = CTLineGetTypographicBounds(line, NULL, NULL, NULL); CFRelease(line); } } CFRelease(typesetter); [attributedString release]; [string release]; length = ceil(width - offset); fit = (Tcl_UtfAtIndex(source, index) - source) - rangeStart; done: #ifdef TK_MAC_DEBUG_FONTS TkMacOSXDbgMsg("measure: source=\"%s\" range=\"%.*s\" maxLength=%d " "flags='%s%s%s%s' -> width=%d bytesFit=%d\n", source, rangeLength, source+rangeStart, maxLength, flags & TK_PARTIAL_OK ? "partialOk " : "", flags & TK_WHOLE_WORDS ? "wholeWords " : "", flags & TK_AT_LEAST_ONE ? "atLeastOne " : "", flags & TK_ISOLATE_END ? "isolateEnd " : "", length, fit); #endif *lengthPtr = length; return fit; } /* *--------------------------------------------------------------------------- | > > > > > > > > > > > > | 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 | } if (width < maxWidth && (flags & TK_PARTIAL_OK) && index < len) { range.length = ++index; line = CTTypesetterCreateLine(typesetter, range); width = CTLineGetTypographicBounds(line, NULL, NULL, NULL); CFRelease(line); } /* The call to CTTypesetterSuggestClusterBreak above will always return at least one character regardless of whether it exceeded it or not. Clean that up now. */ while (width > maxWidth && !(flags & TK_PARTIAL_OK) && index > start) { range.length = --index; line = CTTypesetterCreateLine(typesetter, range); width = CTLineGetTypographicBounds(line, NULL, NULL, NULL); CFRelease(line); } } CFRelease(typesetter); [attributedString release]; [string release]; length = ceil(width - offset); fit = (Tcl_UtfAtIndex(source, index) - source) - rangeStart; done: #ifdef TK_MAC_DEBUG_FONTS TkMacOSXDbgMsg("measure: source=\"%s\" range=\"%.*s\" maxLength=%d " "flags='%s%s%s%s' -> width=%d bytesFit=%d\n", source, rangeLength, source+rangeStart, maxLength, flags & TK_PARTIAL_OK ? "partialOk " : "", flags & TK_WHOLE_WORDS ? "wholeWords " : "", flags & TK_AT_LEAST_ONE ? "atLeastOne " : "", flags & TK_ISOLATE_END ? "isolateEnd " : "", length, fit); //if (!(rangeLength==1 && rangeStart == 0)) fprintf(stderr, " measure len=%d (max=%d, w=%.0f) from %d (nb=%d): source=\"%s\": index=%d return %d\n",rangeLength,maxLength,width,rangeStart,numBytes, source+rangeStart, index, fit); #endif *lengthPtr = length; return fit; } /* *--------------------------------------------------------------------------- |
︙ | ︙ |
Changes to macosx/tkMacOSXWm.c.
︙ | ︙ | |||
6302 6303 6304 6305 6306 6307 6308 | [window setFrame:[window frameRectForContentRect: screenBounds] display:YES]; wmPtr->flags &= ~WM_SYNC_PENDING; } wmPtr->flags |= WM_FULLSCREEN; } } else { | | | 6302 6303 6304 6305 6306 6307 6308 6309 6310 6311 6312 6313 6314 6315 6316 | [window setFrame:[window frameRectForContentRect: screenBounds] display:YES]; wmPtr->flags &= ~WM_SYNC_PENDING; } wmPtr->flags |= WM_FULLSCREEN; } } else { wmPtr->flags &= ~WM_FULLSCREEN; } TkMacOSXEnterExitFullscreen(winPtr, [window isKeyWindow]); if (wasFullscreen && !(wmPtr->flags & WM_FULLSCREEN)) { UInt64 oldAttributes = wmPtr->attributes; NSRect bounds = NSMakeRect(wmPtr->configX, tkMacOSXZeroScreenHeight - (wmPtr->configY + wmPtr->yInParent + wmPtr->configHeight), wmPtr->xInParent + wmPtr->configWidth, |
︙ | ︙ |
Changes to xlib/xcolors.c.
︙ | ︙ | |||
866 867 868 869 870 871 872 873 874 875 876 877 878 879 | * Returns non-zero on success. * * Side effects: * None. * *---------------------------------------------------------------------- */ Status XParseColor( Display *display, Colormap map, const char *spec, XColor *colorPtr) | > > > > > > > > > > > > > > > > > > > > > > > | 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 | * Returns non-zero on success. * * Side effects: * None. * *---------------------------------------------------------------------- */ #if defined(_MSC_VER) && (_MSC_VER < 1300) static __int64 _strtoi64(const char *spec, char **p, int base) { __int64 result = 0; char c; while ((c = *spec)) { if ((c >= '0') && (c <= '9')) { result = (result << 4) + (c - '0'); } else if ((c >= 'A') && (c <= 'F')) { result = (result << 4) + (c + (10 - 'A')); } else if ((c >= 'a') && (c <= 'f')) { result = (result << 4) + (c + (10 - 'a')); } else { break; } ++spec; } *p = (char *) spec; return result; } #endif Status XParseColor( Display *display, Colormap map, const char *spec, XColor *colorPtr) |
︙ | ︙ |