diff options
Diffstat (limited to 'macosx')
| -rw-r--r-- | macosx/GNUmakefile | 16 | ||||
| -rw-r--r-- | macosx/Wish-Info.plist.in | 2 | ||||
| -rw-r--r-- | macosx/tkMacOSX.h | 2 | ||||
| -rw-r--r-- | macosx/tkMacOSXBitmap.c | 6 | ||||
| -rw-r--r-- | macosx/tkMacOSXClipboard.c | 87 | ||||
| -rw-r--r-- | macosx/tkMacOSXColor.c | 2 | ||||
| -rw-r--r-- | macosx/tkMacOSXCursor.c | 2 | ||||
| -rw-r--r-- | macosx/tkMacOSXDialog.c | 16 | ||||
| -rw-r--r-- | macosx/tkMacOSXEmbed.c | 6 | ||||
| -rw-r--r-- | macosx/tkMacOSXFont.c | 4 | ||||
| -rw-r--r-- | macosx/tkMacOSXImage.c | 12 | ||||
| -rw-r--r-- | macosx/tkMacOSXInit.c | 65 | ||||
| -rw-r--r-- | macosx/tkMacOSXInt.h | 2 | ||||
| -rw-r--r-- | macosx/tkMacOSXMouseEvent.c | 6 | ||||
| -rw-r--r-- | macosx/tkMacOSXRegion.c | 70 | ||||
| -rw-r--r-- | macosx/tkMacOSXScale.c | 470 | ||||
| -rw-r--r-- | macosx/tkMacOSXTest.c | 2 | ||||
| -rw-r--r-- | macosx/tkMacOSXWindowEvent.c | 11 | ||||
| -rw-r--r-- | macosx/tkMacOSXWm.c | 73 | ||||
| -rw-r--r-- | macosx/ttkMacOSXTheme.c | 86 |
20 files changed, 324 insertions, 616 deletions
diff --git a/macosx/GNUmakefile b/macosx/GNUmakefile index 42c0067..8f87e55 100644 --- a/macosx/GNUmakefile +++ b/macosx/GNUmakefile @@ -272,14 +272,18 @@ else rm -rf Frameworks/Tcl.framework/{,/Versions/${TCL_VERSION}}/{Headers,PrivateHeaders,*_debug,lib*.a,*Config.sh} && \ rm -rf Frameworks/Tk.framework/{,/Versions/${VERSION}}/{Headers,PrivateHeaders,*_debug,lib*.a,*Config.sh} && \ fix_install_id ( ) { \ - chmod -RH a+w "$$1"; \ - install_name_tool -id $$(otool -L "$$1" | awk "/$$2\.framework.*[^:]\$$/ {sub(\"^.*/Frameworks\",\"@executable_path/../Frameworks\",\$$1); print \$$1}") "$$1"; \ - chmod -RH a-w "$$1"; \ + chmod -RH a+w "$$1"; \ + OLD=$$(otool -L "$$1" | awk "/$$2\\.framework.*[^:]\$$/ {print \$$1}"); \ + NEW=$$(echo "$$OLD" | sed "s|^.*/Frameworks|@executable_path/../Frameworks|"); \ + install_name_tool -id "$$NEW" "$$1"; \ + chmod -RH a-w "$$1"; \ } && \ fix_install_name ( ) { \ - chmod -RH a+w "$$1"; \ - install_name_tool -change $$(otool -L "$$1" | awk "/$$2\.framework.*[^:]\$$/ {print \$$1; sub(\"^.*/Frameworks\",\"@executable_path/../Frameworks\",\$$1); print \$$1}") "$$1"; \ - chmod -RH a-w "$$1"; \ + chmod -RH a+w "$$1"; \ + OLD=$$(otool -L "$$1" | awk "/$$2\\.framework.*[^:]\$$/ {print \$$1}"); \ + NEW=$$(echo "$$OLD" | sed "s|^.*/Frameworks|@executable_path/../Frameworks|"); \ + install_name_tool -change "$$OLD" "$$NEW" "$$1"; \ + chmod -RH a-w "$$1"; \ } && \ fix_install_id Frameworks/Tcl.framework/Tcl Tcl && fix_install_id Frameworks/Tk.framework/Tk Tk && \ fix_install_name MacOS/Wish Tcl && fix_install_name MacOS/Wish Tk diff --git a/macosx/Wish-Info.plist.in b/macosx/Wish-Info.plist.in index 32e9cda..8578da5 100644 --- a/macosx/Wish-Info.plist.in +++ b/macosx/Wish-Info.plist.in @@ -89,7 +89,7 @@ <key>OSAScriptingDefinition</key> <string>Wish.sdef</string> <key>NSHighResolutionCapable</key> - <string>True</string> + <true/> <key>NSServices</key> <array> <dict> diff --git a/macosx/tkMacOSX.h b/macosx/tkMacOSX.h index e80199b..dfaa4ad 100644 --- a/macosx/tkMacOSX.h +++ b/macosx/tkMacOSX.h @@ -29,6 +29,6 @@ typedef int (Tk_MacOSXEmbedMakeContainerExistProc) (Tk_Window window); typedef void (Tk_MacOSXEmbedGetClipProc) (Tk_Window window, void *rgn); typedef void (Tk_MacOSXEmbedGetOffsetInParentProc) (Tk_Window window, void *ulCorner); -#include "tkPlatDecls.h" +#include "tkPlatDecls.h" /* IWYU pragma: export */ #endif /* _TKMAC */ diff --git a/macosx/tkMacOSXBitmap.c b/macosx/tkMacOSXBitmap.c index 33b1960..1d4461d 100644 --- a/macosx/tkMacOSXBitmap.c +++ b/macosx/tkMacOSXBitmap.c @@ -361,7 +361,7 @@ TkMacOSXIconBitmapObjCmd( name = Tcl_GetStringFromObj(objv[i++], &len); if (!len) { Tcl_SetObjResult(interp, Tcl_NewStringObj("empty bitmap name", TCL_INDEX_NONE)); - Tcl_SetErrorCode(interp, "TK", "MACBITMAP", "BAD", NULL); + Tcl_SetErrorCode(interp, "TK", "MACBITMAP", "BAD", (char *)NULL); goto end; } if (Tcl_GetIntFromObj(interp, objv[i++], &ib.width) != TCL_OK) { @@ -377,7 +377,7 @@ TkMacOSXIconBitmapObjCmd( value = Tcl_GetStringFromObj(objv[i++], &len); if (!len) { Tcl_SetObjResult(interp, Tcl_NewStringObj("empty bitmap value", TCL_INDEX_NONE)); - Tcl_SetErrorCode(interp, "TK", "MACBITMAP", "EMPTY", NULL); + Tcl_SetErrorCode(interp, "TK", "MACBITMAP", "EMPTY", (char *)NULL); goto end; } #if 0 @@ -392,7 +392,7 @@ TkMacOSXIconBitmapObjCmd( if (len > 4) { Tcl_SetObjResult(interp, Tcl_NewStringObj( "invalid bitmap value", TCL_INDEX_NONE)); - Tcl_SetErrorCode(interp, "TK", "MACBITMAP", "INVALID", NULL); + Tcl_SetErrorCode(interp, "TK", "MACBITMAP", "INVALID", (char *)NULL); goto end; } } diff --git a/macosx/tkMacOSXClipboard.c b/macosx/tkMacOSXClipboard.c index 8d5f727..c5c60e5 100644 --- a/macosx/tkMacOSXClipboard.c +++ b/macosx/tkMacOSXClipboard.c @@ -16,7 +16,7 @@ #include "tkSelect.h" static NSInteger changeCount = -1; -static Tk_Window clipboardOwner = NULL; +static Tk_Window tkClipboardOwner = NULL; #pragma mark TKApplication(TKClipboard) @@ -26,7 +26,6 @@ static Tk_Window clipboardOwner = NULL; provideDataForType: (NSString *) type { NSMutableString *string = [NSMutableString new]; - if (dispPtr && dispPtr->clipboardActive && [type isEqualToString:NSStringPboardType]) { for (TkClipboardTarget *targetPtr = dispPtr->clipTargetPtr; targetPtr; @@ -36,8 +35,8 @@ static Tk_Window clipboardOwner = NULL; for (TkClipboardBuffer *cbPtr = targetPtr->firstBufferPtr; cbPtr; cbPtr = cbPtr->nextPtr) { NSString *s = [[TKNSString alloc] - initWithTclUtfBytes:cbPtr->buffer - length:(NSUInteger)cbPtr->length]; + initWithTclUtfBytes:cbPtr->buffer + length:(NSUInteger)cbPtr->length]; [string appendString:s]; [s release]; } @@ -46,6 +45,7 @@ static Tk_Window clipboardOwner = NULL; } } [sender setString:string forType:type]; + changeCount = [sender changeCount]; [string release]; } @@ -61,26 +61,28 @@ static Tk_Window clipboardOwner = NULL; - (void) pasteboard: (NSPasteboard *) sender provideDataForType: (NSString *) type { - [self tkProvidePasteboard:TkGetDisplayList() pasteboard:sender - provideDataForType:type]; + TkDisplay *dispPtr = TkGetDisplayList(); + [self tkProvidePasteboard:dispPtr + pasteboard:[NSPasteboard generalPasteboard] + provideDataForType:NSStringPboardType]; } - (void) tkCheckPasteboard { - if (clipboardOwner && [[NSPasteboard generalPasteboard] changeCount] != + if (tkClipboardOwner && [[NSPasteboard generalPasteboard] changeCount] != changeCount) { TkDisplay *dispPtr = TkGetDisplayList(); if (dispPtr) { XEvent event; event.xany.type = SelectionClear; - event.xany.serial = NextRequest(Tk_Display(clipboardOwner)); + event.xany.serial = NextRequest(Tk_Display(tkClipboardOwner)); event.xany.send_event = False; - event.xany.window = Tk_WindowId(clipboardOwner); - event.xany.display = Tk_Display(clipboardOwner); + event.xany.window = Tk_WindowId(tkClipboardOwner); + event.xany.display = Tk_Display(tkClipboardOwner); event.xselectionclear.selection = dispPtr->clipboardAtom; Tk_QueueWindowEvent(&event, TCL_QUEUE_TAIL); } - clipboardOwner = NULL; + tkClipboardOwner = NULL; } } @end @@ -144,7 +146,7 @@ TkSelGetSelection( "%s selection doesn't exist or form \"%s\" not defined", Tk_GetAtomName(tkwin, selection), Tk_GetAtomName(tkwin, target))); - Tcl_SetErrorCode(interp, "TK", "SELECTION", "EXISTS", NULL); + Tcl_SetErrorCode(interp, "TK", "SELECTION", "EXISTS", (char *)NULL); } return result; } @@ -176,10 +178,9 @@ XSetSelectionOwner( TkDisplay *dispPtr = TkGetDisplayList(); if (dispPtr && selection == dispPtr->clipboardAtom) { - clipboardOwner = owner ? Tk_IdToWindow(display, owner) : NULL; + tkClipboardOwner = owner ? Tk_IdToWindow(display, owner) : NULL; if (!dispPtr->clipboardActive) { NSPasteboard *pb = [NSPasteboard generalPasteboard]; - changeCount = [pb declareTypes:[NSArray array] owner:NSApp]; } } @@ -198,7 +199,7 @@ XSetSelectionOwner( * None. * * Side effects: - * clipboardOwner is cleared. + * tkClipboardOwner is cleared. * *---------------------------------------------------------------------- */ @@ -207,8 +208,8 @@ void TkMacOSXSelDeadWindow( TkWindow *winPtr) { - if (winPtr && winPtr == (TkWindow *)clipboardOwner) { - clipboardOwner = NULL; + if (winPtr && winPtr == (TkWindow *)tkClipboardOwner) { + tkClipboardOwner = NULL; } } @@ -218,27 +219,63 @@ TkMacOSXSelDeadWindow( * TkSelUpdateClipboard -- * * This function is called to force the clipboard to be updated after new - * data is added. + * data is added or the clipboard has been cleared. + * + * The nil Object is declared to be the owner. This is done in a way + * which triggers an incremeent of the pasteboard's changeCount property, + * notifying clipboard managers that the value has changed. * * Results: * None. * * Side effects: - * None. + * Ownership contents and attributes of the general NSPasteboard + * may change. * *---------------------------------------------------------------------- */ +/* + * Apple says that the changeCount is incremented whenever the ownership + * of a pasteboard type changes. They actually mean that the changeCount + * is incremented when declareTypes is called, but is left unchanged when + * addTypes is called. (Both methods can change ownership in some sense + * and both return the new changeCount.) + * + * Apple also says that addTypes "promises" that the owner object (if not nil) + * will provide data of the specified type, while declareTypes "prepares" the + * pasteboard. Maybe that explains something. + */ + void TkSelUpdateClipboard( - TCL_UNUSED(TkWindow *), /* Window associated with clipboard. */ - TCL_UNUSED(TkClipboardTarget *)) - /* Info about the content. */ + TCL_UNUSED(TkWindow*), /* Window associated with clipboard. */ + clipboardOption option) /* option passed to clipboard command */ { NSPasteboard *pb = [NSPasteboard generalPasteboard]; + switch (option) { + case CLIPBOARD_APPEND: + /* + * This increments the changeCount so that clipboard managers will be + * able to see and manage the clip. + */ - changeCount = [pb addTypes:[NSArray arrayWithObject:NSStringPboardType] - owner:NSApp]; + changeCount = [pb declareTypes:[NSArray arrayWithObject:NSStringPboardType] + owner:nil]; + [NSApp tkProvidePasteboard: TkGetDisplayList() + pasteboard: (NSPasteboard *) pb + provideDataForType: (NSString *) NSStringPboardType]; + break; + case CLIPBOARD_CLEAR: + changeCount = [pb declareTypes:[NSArray arrayWithObject:NSStringPboardType] + owner:nil]; + [NSApp tkProvidePasteboard: TkGetDisplayList() + pasteboard: (NSPasteboard *) pb + provideDataForType: (NSString *) NSStringPboardType]; + break; + default: + break; + } } /* @@ -264,7 +301,7 @@ TkSelEventProc( * SelectionRequest, or SelectionNotify. */ { if (eventPtr->type == SelectionClear) { - clipboardOwner = NULL; + tkClipboardOwner = NULL; TkSelClearSelection(tkwin, eventPtr); } } diff --git a/macosx/tkMacOSXColor.c b/macosx/tkMacOSXColor.c index 6263356..f0a3265 100644 --- a/macosx/tkMacOSXColor.c +++ b/macosx/tkMacOSXColor.c @@ -600,7 +600,7 @@ TkMacOSXSetColorInContext( TkColor * TkpGetColor( Tk_Window tkwin, /* Window in which color will be used. */ - Tk_Uid name) /* Name of color to be allocated (in form + const char *name) /* Name of color to be allocated (in form * suitable for passing to XParseColor). */ { Display *display = NULL; diff --git a/macosx/tkMacOSXCursor.c b/macosx/tkMacOSXCursor.c index eb3edbc..7d0708b 100644 --- a/macosx/tkMacOSXCursor.c +++ b/macosx/tkMacOSXCursor.c @@ -393,7 +393,7 @@ TkGetCursorByName( macCursorPtr->type != NONE)) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( "bad cursor spec \"%s\"", string)); - Tcl_SetErrorCode(interp, "TK", "VALUE", "CURSOR", NULL); + Tcl_SetErrorCode(interp, "TK", "VALUE", "CURSOR", (char *)NULL); if (macCursorPtr) { ckfree(macCursorPtr); macCursorPtr = NULL; diff --git a/macosx/tkMacOSXDialog.c b/macosx/tkMacOSXDialog.c index f3923f1..a6230be 100644 --- a/macosx/tkMacOSXDialog.c +++ b/macosx/tkMacOSXDialog.c @@ -492,7 +492,7 @@ Tk_ChooseColorObjCmd( if (i + 1 == objc) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( "value for \"%s\" missing", Tcl_GetString(objv[i]))); - Tcl_SetErrorCode(interp, "TK", "COLORDIALOG", "VALUE", NULL); + Tcl_SetErrorCode(interp, "TK", "COLORDIALOG", "VALUE", (char *)NULL); goto end; } value = Tcl_GetString(objv[i + 1]); @@ -750,7 +750,7 @@ Tk_GetOpenFileObjCmd( if (i + 1 == objc) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( "value for \"%s\" missing", Tcl_GetString(objv[i]))); - Tcl_SetErrorCode(interp, "TK", "FILEDIALOG", "VALUE", NULL); + Tcl_SetErrorCode(interp, "TK", "FILEDIALOG", "VALUE", (char *)NULL); goto end; } switch (index) { @@ -1036,7 +1036,7 @@ Tk_GetSaveFileObjCmd( if (i + 1 == objc) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( "value for \"%s\" missing", Tcl_GetString(objv[i]))); - Tcl_SetErrorCode(interp, "TK", "FILEDIALOG", "VALUE", NULL); + Tcl_SetErrorCode(interp, "TK", "FILEDIALOG", "VALUE", (char *)NULL); goto end; } switch (index) { @@ -1278,7 +1278,7 @@ Tk_ChooseDirectoryObjCmd( if (i + 1 == objc) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( "value for \"%s\" missing", Tcl_GetString(objv[i]))); - Tcl_SetErrorCode(interp, "TK", "DIRDIALOG", "VALUE", NULL); + Tcl_SetErrorCode(interp, "TK", "DIRDIALOG", "VALUE", (char *)NULL); goto end; } switch (index) { @@ -1462,7 +1462,7 @@ Tk_MessageBoxObjCmd( if (i + 1 == objc) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( "value for \"%s\" missing", Tcl_GetString(objv[i]))); - Tcl_SetErrorCode(interp, "TK", "MSGBOX", "VALUE", NULL); + Tcl_SetErrorCode(interp, "TK", "MSGBOX", "VALUE", (char *)NULL); goto end; } switch (index) { @@ -1547,7 +1547,7 @@ Tk_MessageBoxObjCmd( if (!defaultNativeButtonIndex) { Tcl_SetObjResult(interp, Tcl_NewStringObj("Illegal default option", TCL_INDEX_NONE)); - Tcl_SetErrorCode(interp, "TK", "MSGBOX", "DEFAULT", NULL); + Tcl_SetErrorCode(interp, "TK", "MSGBOX", "DEFAULT", (char *)NULL); goto end; } } @@ -1910,7 +1910,7 @@ FontchooserConfigureCmd( if (i + 1 == objc) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( "value for \"%s\" missing", Tcl_GetString(objv[i]))); - Tcl_SetErrorCode(interp, "TK", "FONTDIALOG", "VALUE", NULL); + Tcl_SetErrorCode(interp, "TK", "FONTDIALOG", "VALUE", (char *)NULL); return TCL_ERROR; } switch (optionIndex) { @@ -1919,7 +1919,7 @@ FontchooserConfigureCmd( "\"-visible\": use the show or hide command"; Tcl_SetObjResult(interp, Tcl_NewStringObj(msg, TCL_INDEX_NONE)); - Tcl_SetErrorCode(interp, "TK", "FONTDIALOG", "READONLY", NULL); + Tcl_SetErrorCode(interp, "TK", "FONTDIALOG", "READONLY", (char *)NULL); return TCL_ERROR; } case FontchooserParent: { diff --git a/macosx/tkMacOSXEmbed.c b/macosx/tkMacOSXEmbed.c index 8b556ba..f0e178c 100644 --- a/macosx/tkMacOSXEmbed.c +++ b/macosx/tkMacOSXEmbed.c @@ -214,7 +214,7 @@ Tk_UseWindow( if (winPtr->window != None) { Tcl_SetObjResult(interp, Tcl_NewStringObj( "can't modify container after widget is created", TCL_INDEX_NONE)); - Tcl_SetErrorCode(interp, "TK", "EMBED", "POST_CREATE", NULL); + Tcl_SetErrorCode(interp, "TK", "EMBED", "POST_CREATE", (char *)NULL); return TCL_ERROR; } @@ -236,14 +236,14 @@ Tk_UseWindow( if (interp != NULL) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( "couldn't create child of window \"%s\"", string)); - Tcl_SetErrorCode(interp, "TK", "EMBED", "NO_TARGET", NULL); + Tcl_SetErrorCode(interp, "TK", "EMBED", "NO_TARGET", (char *)NULL); } return TCL_ERROR; } else if (!(usePtr->flags & TK_CONTAINER)) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( "window \"%s\" doesn't have -container option set", usePtr->pathName)); - Tcl_SetErrorCode(interp, "TK", "EMBED", "CONTAINER", NULL); + Tcl_SetErrorCode(interp, "TK", "EMBED", "CONTAINER", (char *)NULL); return TCL_ERROR; } diff --git a/macosx/tkMacOSXFont.c b/macosx/tkMacOSXFont.c index de2b94d..4fb3875 100644 --- a/macosx/tkMacOSXFont.c +++ b/macosx/tkMacOSXFont.c @@ -463,7 +463,7 @@ startOfClusterObjCmd( Tcl_SetObjResult(interp, Tcl_ObjPrintf( "bad index \"%s\": must be integer?[+-]integer?, end?[+-]integer?, or \"\"", Tcl_GetString(objv[2]))); - Tcl_SetErrorCode(interp, "TK", "VALUE", "INDEX", NULL); + Tcl_SetErrorCode(interp, "TK", "VALUE", "INDEX", (char *)NULL); return TCL_ERROR; } if (idx >= ulen) { @@ -522,7 +522,7 @@ endOfClusterObjCmd( Tcl_SetObjResult(interp, Tcl_ObjPrintf( "bad index \"%s\": must be integer?[+-]integer?, end?[+-]integer?, or \"\"", Tcl_GetString(objv[2]))); - Tcl_SetErrorCode(interp, "TK", "VALUE", "INDEX", NULL); + Tcl_SetErrorCode(interp, "TK", "VALUE", "INDEX", (char *)NULL); return TCL_ERROR; } if (idx >= ulen) { diff --git a/macosx/tkMacOSXImage.c b/macosx/tkMacOSXImage.c index aa16f27..05aef64 100644 --- a/macosx/tkMacOSXImage.c +++ b/macosx/tkMacOSXImage.c @@ -689,7 +689,7 @@ CreateCGImageFromDrawableRect( //CGImageGetBytesPerRow(cg_image), // wastes space? CGImageGetBitsPerPixel(cg_image) * width / 8, colorspace, - CGImageGetAlphaInfo(cg_image)); + CGImageGetBitmapInfo(cg_image)); CGColorSpaceRelease(colorspace); if (cg_context) { // Extract the subimage in the specified rectangle. @@ -1472,7 +1472,7 @@ TkMacOSXNSImageConfigureModel( if (modelPtr->sourceObj == NULL) { Tcl_SetObjResult(interp, Tcl_NewStringObj("-source is required.", TCL_INDEX_NONE)); - Tcl_SetErrorCode(interp, "TK", "IMAGE", "SYSTEM", "BAD_VALUE", NULL); + Tcl_SetErrorCode(interp, "TK", "IMAGE", "SYSTEM", "BAD_VALUE", (char *)NULL); goto errorExit; } @@ -1483,7 +1483,7 @@ TkMacOSXNSImageConfigureModel( Tcl_SetObjResult(interp, Tcl_NewStringObj( "Unknown interpretation for source in -as option. " "Should be name, file, path, or filetype.", TCL_INDEX_NONE)); - Tcl_SetErrorCode(interp, "TK", "IMAGE", "SYSTEM", "BAD_VALUE", NULL); + Tcl_SetErrorCode(interp, "TK", "IMAGE", "SYSTEM", "BAD_VALUE", (char *)NULL); goto errorExit; } @@ -1544,18 +1544,18 @@ TkMacOSXNSImageConfigureModel( Tcl_SetObjResult(interp, Tcl_NewStringObj("Unknown named NSImage.\n" "Try omitting ImageName, " "e.g. use NSCaution for NSImageNameCaution.", TCL_INDEX_NONE)); - Tcl_SetErrorCode(interp, "TK", "IMAGE", "SYSTEM", "BAD_VALUE", NULL); + Tcl_SetErrorCode(interp, "TK", "IMAGE", "SYSTEM", "BAD_VALUE", (char *)NULL); goto errorExit; case FILE_SOURCE: Tcl_SetObjResult(interp, Tcl_NewStringObj( "Failed to load image file.\n", TCL_INDEX_NONE)); - Tcl_SetErrorCode(interp, "TK", "IMAGE", "SYSTEM", "BAD_VALUE", NULL); + Tcl_SetErrorCode(interp, "TK", "IMAGE", "SYSTEM", "BAD_VALUE", (char *)NULL); goto errorExit; default: Tcl_SetObjResult(interp, Tcl_NewStringObj( "Unrecognized file type.\n" "If using a filename extension, do not include the dot.\n", TCL_INDEX_NONE)); - Tcl_SetErrorCode(interp, "TK", "IMAGE", "SYSTEM", "BAD_VALUE", NULL); + Tcl_SetErrorCode(interp, "TK", "IMAGE", "SYSTEM", "BAD_VALUE", (char *)NULL); goto errorExit; } } diff --git a/macosx/tkMacOSXInit.c b/macosx/tkMacOSXInit.c index 00c04f1..c472fbb 100644 --- a/macosx/tkMacOSXInit.c +++ b/macosx/tkMacOSXInit.c @@ -42,6 +42,8 @@ static char scriptPath[PATH_MAX + 1] = ""; static Tcl_ObjCmdProc2 TkMacOSXGetAppPathObjCmd; static Tcl_ObjCmdProc2 TkMacOSVersionObjCmd; +static Tcl_ObjCmdProc2 TkMacOSXGetInfoAsJSONObjCmd; + #pragma mark TKApplication(TKInit) @@ -270,7 +272,10 @@ static Tcl_ObjCmdProc2 TkMacOSVersionObjCmd; struct utsname name; char *endptr; if (uname(&name) == 0) { - majorVersion = (int)strtol(name.release, &endptr, 10) - 9; + majorVersion = (int)strtol(name.release, &endptr, 10) + 1; + if (majorVersion < 26) { + majorVersion -= 10; + } minorVersion = 0; } } @@ -701,6 +706,8 @@ TkpInit( TkMacOSXIconBitmapObjCmd, NULL, NULL); Tcl_CreateObjCommand2(interp, "::tk::mac::GetAppPath", TkMacOSXGetAppPathObjCmd, NULL, NULL); + Tcl_CreateObjCommand2(interp, "::tk::mac::GetInfoAsJSON", + TkMacOSXGetInfoAsJSONObjCmd, NULL, NULL); Tcl_CreateObjCommand2(interp, "::tk::mac::macOSVersion", TkMacOSVersionObjCmd, NULL, NULL); MacSystrayInit(interp); @@ -727,7 +734,7 @@ TkpInit( static int TkMacOSXGetAppPathObjCmd( - TCL_UNUSED(void *), + TCL_UNUSED(void *), /* clientData */ Tcl_Interp *interp, Tcl_Size objc, Tcl_Obj *const objv[]) @@ -815,7 +822,7 @@ TkpGetAppName( static int TkMacOSVersionObjCmd( - TCL_UNUSED(void *), + TCL_UNUSED(void *), /* clientData */ Tcl_Interp *interp, Tcl_Size objc, Tcl_Obj *const objv[]) @@ -835,6 +842,58 @@ TkMacOSVersionObjCmd( /* *---------------------------------------------------------------------- * + * TkMacOSXGetInfoAsJSONObjCmd -- + * + * Returns the contents of the Info.plist file in the application + * bundle as a JSON-encoded Tcl string. + * + * Results: + * Returns the JSON encoding of the Info.plist file.. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +static int +TkMacOSXGetInfoAsJSONObjCmd( + TCL_UNUSED(void *), /* clientData */ + Tcl_Interp *interp, + Tcl_Size objc, + Tcl_Obj *const objv[]) +{ + static char *bytes = NULL; + + if (objc != 1) { + Tcl_WrongNumArgs(interp, 1, objv, NULL); + return TCL_ERROR; + } + + if (bytes == NULL) { + NSJSONWritingOptions opt = NSJSONWritingPrettyPrinted; + NSDictionary<NSString *, id> *infoDict = [[NSBundle mainBundle] + infoDictionary]; + NSData *infoAsJSON = [NSJSONSerialization + dataWithJSONObject: infoDict + options:opt + error:nil]; + if (infoAsJSON.length) { + int buffer_size = (int) infoAsJSON.length + 1; + bytes = malloc(buffer_size); + strlcpy(bytes, infoAsJSON.bytes, buffer_size); + } + } + if (bytes) { + Tcl_SetObjResult(interp, Tcl_NewStringObj(bytes, TCL_INDEX_NONE)); + return TCL_OK; + } + return TCL_ERROR; +} + +/* + *---------------------------------------------------------------------- + * * TkpDisplayWarning -- * * This routines is called from Tk_Main to display warning messages that diff --git a/macosx/tkMacOSXInt.h b/macosx/tkMacOSXInt.h index feb6a32..69e3826 100644 --- a/macosx/tkMacOSXInt.h +++ b/macosx/tkMacOSXInt.h @@ -165,7 +165,7 @@ MODULE_SCOPE Bool TkTestLogDisplay(Drawable drawable); * Include the stubbed internal platform-specific API. */ -#include "tkIntPlatDecls.h" +#include "tkIntPlatDecls.h" /* IWYU pragma: export */ #endif /* _TKMACINT */ diff --git a/macosx/tkMacOSXMouseEvent.c b/macosx/tkMacOSXMouseEvent.c index ac94e1f..2e6bb1f 100644 --- a/macosx/tkMacOSXMouseEvent.c +++ b/macosx/tkMacOSXMouseEvent.c @@ -545,7 +545,7 @@ enum { } } else { static unsigned long scrollCounter = 0; - int delta; + unsigned delta; CGFloat Delta; Bool deltaIsPrecise = [theEvent hasPreciseScrollingDeltas]; XEvent xEvent = {0}; @@ -557,8 +557,8 @@ enum { xEvent.xany.display = Tk_Display(target); xEvent.xany.window = Tk_WindowId(target); if (deltaIsPrecise) { - int deltaX = [theEvent scrollingDeltaX]; - int deltaY = [theEvent scrollingDeltaY]; + unsigned deltaX = (unsigned)(int)[theEvent scrollingDeltaX]; + unsigned deltaY = (unsigned)(int)[theEvent scrollingDeltaY]; delta = (deltaX << 16) | (deltaY & 0xffff); if (delta != 0) { xEvent.type = TouchpadScroll; diff --git a/macosx/tkMacOSXRegion.c b/macosx/tkMacOSXRegion.c index d094aaf..585f990 100644 --- a/macosx/tkMacOSXRegion.c +++ b/macosx/tkMacOSXRegion.c @@ -498,6 +498,74 @@ TkMacOSHIShapeDifferenceWithRect( return result; } +/* + *---------------------------------------------------------------------- + * + * XEqualRegion -- + * + * Although the undocumented function + * + * Boolean __attribute__((overloadable)) + * __HIShapeEqual(void const *inShape1, void const *inShape2) + * + * is probably more optimal than the approach used here, + * it is "non-external" and so not easily usable by Tk Aqua. + * + *---------------------------------------------------------------------- + */ +Bool +XEqualRegion( + Region r1, + Region r2) +{ + HIShapeRef hsa = (HIShapeRef)r1, hsb = (HIShapeRef)r2; + if (hsa == hsb) { + return True; + } + CGRect ba, bb; + HIShapeGetBounds(hsa, &ba); + HIShapeGetBounds(hsb, &bb); + if (!CGRectEqualToRect(ba, bb)) { + return False; + } + HIShapeRef hsx = HIShapeCreateXor(hsa, hsb); + Bool result = HIShapeIsEmpty(hsx); + CFRelease(hsx); + return result; +} + +int +XUnionRegion( + Region srca, + Region srcb, + Region dr_return) +{ + ChkErr(HIShapeUnion, (HIShapeRef)srca, (HIShapeRef)srcb, + (HIMutableShapeRef)dr_return); + return 1; +} + +int +XXorRegion( + Region sra, + Region srb, + Region dr_return) +{ + ChkErr(HIShapeXor, (HIShapeRef)sra, (HIShapeRef)srb, + (HIMutableShapeRef)dr_return); + return 0; +} + +Bool +XPointInRegion( + Region r, + int x, + int y) +{ + CGPoint p = CGPointMake(x, y); + return HIShapeContainsPoint((HIShapeRef)r, &p); +} + static OSStatus rectCounter( TCL_UNUSED(int), @@ -518,7 +586,7 @@ rectPrinter( TCL_UNUSED(void *)) { if (rect) { - fprintf(stderr, " %s\n", NSStringFromRect(*rect).UTF8String); + fprintf(stderr, " %s\n", NSStringFromRect(NSRectFromCGRect(*rect)).UTF8String); } return noErr; } diff --git a/macosx/tkMacOSXScale.c b/macosx/tkMacOSXScale.c deleted file mode 100644 index 1442236..0000000 --- a/macosx/tkMacOSXScale.c +++ /dev/null @@ -1,470 +0,0 @@ -/* - * tkMacOSXScale.c -- - * - * This file implements the Macintosh specific portion of the - * scale widget. - * - * Copyright © 1996 Sun Microsystems, Inc. - * Copyright © 1998-2000 Scriptics Corporation. - * Copyright © 2006-2009 Daniel A. Steffen <das@users.sourceforge.net> - * Copyright © 2008-2009 Apple Inc. - * - * See the file "license.terms" for information on usage and redistribution - * of this file, and for a DISCLAIMER OF ALL WARRANTIES. - */ - -#include "tkMacOSXPrivate.h" -#include "tkScale.h" - -#ifdef MAC_OSX_TK_TODO -/* -#ifdef TK_MAC_DEBUG -#define TK_MAC_DEBUG_SCALE -#endif -*/ - -/* - * Defines used in this file. - */ - -#define slider 1110 -#define inSlider 1 -#define inInc 2 -#define inDecr 3 - -/* - * Declaration of Macintosh specific scale structure. - */ - -typedef struct MacScale { - TkScale info; /* Generic scale info. */ - int flags; /* Flags. */ - ControlRef scaleHandle; /* Handle to the Scale control struct. */ -} MacScale; - -/* - * Globals uses locally in this file. - */ -static ControlActionUPP scaleActionProc = NULL; /* Pointer to func. */ - -/* - * Forward declarations for procedures defined later in this file: - */ - -static void MacScaleEventProc(void *clientData, - XEvent *eventPtr); -static pascal void ScaleActionProc(ControlRef theControl, - ControlPartCode partCode); - -/* - *---------------------------------------------------------------------- - * - * TkpCreateScale -- - * - * Allocate a new TkScale structure. - * - * Results: - * Returns a newly allocated TkScale structure. - * - * Side effects: - * None. - * - *---------------------------------------------------------------------- - */ - -TkScale * -TkpCreateScale( - Tk_Window tkwin) -{ - MacScale *macScalePtr = (MacScale *)ckalloc(sizeof(MacScale)); - - macScalePtr->scaleHandle = NULL; - if (scaleActionProc == NULL) { - scaleActionProc = NewControlActionUPP(ScaleActionProc); - } - - Tk_CreateEventHandler(tkwin, ButtonPressMask, - MacScaleEventProc, macScalePtr); - - return (TkScale *) macScalePtr; -} - -/* - *---------------------------------------------------------------------- - * - * TkpDestroyScale -- - * - * Free Macintosh specific resources. - * - * Results: - * None - * - * Side effects: - * The slider control is destroyed. - * - *---------------------------------------------------------------------- - */ - -void -TkpDestroyScale( - TkScale *scalePtr) -{ - MacScale *macScalePtr = (MacScale *) scalePtr; - - /* - * Free Macintosh control. - */ - - if (macScalePtr->scaleHandle != NULL) { - DisposeControl(macScalePtr->scaleHandle); - } -} - -/* - *---------------------------------------------------------------------- - * - * TkpDisplayScale -- - * - * This procedure is invoked as an idle handler to redisplay the contents - * of a scale widget. - * - * Results: - * None. - * - * Side effects: - * The scale gets redisplayed. - * - *---------------------------------------------------------------------- - */ - -void -TkpDisplayScale( - void *clientData) /* Widget record for scale. */ -{ - TkScale *scalePtr = clientData; - Tk_Window tkwin = scalePtr->tkwin; - Tcl_Interp *interp = scalePtr->interp; - int result; - char string[TCL_DOUBLE_SPACE]; - MacScale *macScalePtr = clientData; - Rect r; - WindowRef windowRef; - MacDrawable *macDraw; - SInt32 initialValue, minValue, maxValue; - UInt16 numTicks; - Tcl_DString buf; - -#ifdef TK_MAC_DEBUG_SCALE - TkMacOSXDbgMsg("TkpDisplayScale"); -#endif - scalePtr->flags &= ~REDRAW_PENDING; - if ((scalePtr->tkwin == NULL) || !Tk_IsMapped(scalePtr->tkwin)) { - goto done; - } - - /* - * Invoke the scale's command if needed. - */ - - Tcl_Preserve(scalePtr); - if ((scalePtr->flags & INVOKE_COMMAND) && (scalePtr->commandObj != NULL)) { - Tcl_Preserve(interp); - if (snprintf(string, TCL_DOUBLE_SPACE, scalePtr->format, - scalePtr->value) < 0) { - string[TCL_DOUBLE_SPACE - 1] = '\0'; - } - Tcl_DStringInit(&buf); - Tcl_DStringAppend(&buf, Tcl_GetString(scalePtr->commandObj), TCL_INDEX_NONE); - Tcl_DStringAppend(&buf, " ", TCL_INDEX_NONE); - Tcl_DStringAppend(&buf, string, TCL_INDEX_NONE); - result = Tcl_EvalEx(interp, Tcl_DStringValue(&buf), TCL_INDEX_NONE, TCL_EVAL_GLOBAL); - Tcl_DStringFree(&buf); - if (result != TCL_OK) { - Tcl_AddErrorInfo(interp, "\n (command executed by scale)"); - Tcl_BackgroundException(interp, result); - } - Tcl_Release(interp); - } - scalePtr->flags &= ~INVOKE_COMMAND; - if (scalePtr->flags & SCALE_DELETED) { - Tcl_Release(scalePtr); - return; - } - Tcl_Release(scalePtr); - - /* - * Now handle the part of redisplay that is the same for horizontal and - * vertical scales: border and traversal highlight. - */ - - if (scalePtr->highlightWidth > 0) { - GC gc = Tk_GCForColor(scalePtr->highlightColorPtr, Tk_WindowId(tkwin)); - - Tk_DrawFocusHighlight(tkwin, gc, scalePtr->highlightWidth, - Tk_WindowId(tkwin)); - } - Tk_Draw3DRectangle(tkwin, Tk_WindowId(tkwin), scalePtr->bgBorder, - scalePtr->highlightWidth, scalePtr->highlightWidth, - Tk_Width(tkwin) - 2*scalePtr->highlightWidth, - Tk_Height(tkwin) - 2*scalePtr->highlightWidth, - scalePtr->borderWidth, scalePtr->relief); - - /* - * Set up port for drawing Macintosh control. - */ - - macDraw = (MacDrawable *)Tk_WindowId(tkwin); - windowRef = TkMacOSXGetNSWindowForDrawable(Tk_WindowId(tkwin)); - - /* - * Create Macintosh control. - */ - -#define MAC_OSX_SCROLL_WIDTH 10 - - if (scalePtr->orient == ORIENT_HORIZONTAL) { - int offset = (Tk_Height(tkwin) - MAC_OSX_SCROLL_WIDTH) / 2; - - if (offset < 0) { - offset = 0; - } - - r.left = macDraw->xOff + scalePtr->inset; - r.top = macDraw->yOff + offset; - r.right = macDraw->xOff+Tk_Width(tkwin) - scalePtr->inset; - r.bottom = macDraw->yOff + offset + MAC_OSX_SCROLL_WIDTH/2; - } else { - int offset = (Tk_Width(tkwin) - MAC_OSX_SCROLL_WIDTH) / 2; - - if (offset < 0) { - offset = 0; - } - - r.left = macDraw->xOff + offset; - r.top = macDraw->yOff + scalePtr->inset; - r.right = macDraw->xOff + offset + MAC_OSX_SCROLL_WIDTH/2; - r.bottom = macDraw->yOff + Tk_Height(tkwin) - scalePtr->inset; - } - - if (macScalePtr->scaleHandle == NULL) { -#ifdef TK_MAC_DEBUG_SCALE - TkMacOSXDbgMsg("Initialising scale"); -#endif - initialValue = scalePtr->value; - if (scalePtr->orient == ORIENT_HORIZONTAL) { - minValue = scalePtr->fromValue; - maxValue = scalePtr->toValue; - } else { - minValue = scalePtr->fromValue; - maxValue = scalePtr->toValue; - } - - if (scalePtr->tickInterval == 0) { - numTicks = 0; - } else { - numTicks = (maxValue - minValue)/scalePtr->tickInterval; - } - - CreateSliderControl(windowRef, &r, initialValue, minValue, maxValue, - kControlSliderPointsDownOrRight, numTicks, 1, scaleActionProc, - &macScalePtr->scaleHandle); - SetControlReference(macScalePtr->scaleHandle, (UInt32) scalePtr); - - if (IsWindowActive(windowRef)) { - macScalePtr->flags |= ACTIVE; - } - } else { - SetControlBounds(macScalePtr->scaleHandle, &r); - SetControl32BitValue(macScalePtr->scaleHandle, scalePtr->value); - SetControl32BitMinimum(macScalePtr->scaleHandle, scalePtr->fromValue); - SetControl32BitMaximum(macScalePtr->scaleHandle, scalePtr->toValue); - } - - /* - * Finally draw the control. - */ - - SetControlVisibility(macScalePtr->scaleHandle, true, true); - HiliteControl(macScalePtr->scaleHandle, 0); - Draw1Control(macScalePtr->scaleHandle); - -done: - scalePtr->flags &= ~REDRAW_ALL; -} - -/* - *---------------------------------------------------------------------- - * - * TkpScaleElement -- - * - * Determine which part of a scale widget lies under a given point. - * - * Results: - * The return value is either TROUGH1, SLIDER, TROUGH2, or OTHER, - * depending on which of the scale's active elements (if any) is under the - * point at (x,y). - * - * Side effects: - * None. - * - *---------------------------------------------------------------------- - */ - -int -TkpScaleElement( - TkScale *scalePtr, /* Widget record for scale. */ - int x, int y) /* Coordinates within scalePtr's window. */ -{ - MacScale *macScalePtr = (MacScale *) scalePtr; - ControlPartCode part; - Point where; - Rect bounds; - -#ifdef TK_MAC_DEBUG_SCALE - TkMacOSXDbgMsg("TkpScaleElement"); -#endif - - /* - * All of the calculations in this procedure mirror those in - * DisplayScrollbar. Be sure to keep the two consistent. - */ - - TkMacOSXWinBounds((TkWindow *) scalePtr->tkwin, &bounds); - where.h = x + bounds.left; - where.v = y + bounds.top; - part = TestControl(macScalePtr->scaleHandle, where); - -#ifdef TK_MAC_DEBUG_SCALE - fprintf (stderr,"ScalePart %d, pos ( %d %d )\n", part, where.h, where.v ); -#endif - - switch (part) { - case inSlider: - return SLIDER; - case inInc: - if (scalePtr->orient == ORIENT_VERTICAL) { - return TROUGH1; - } else { - return TROUGH2; - } - case inDecr: - if (scalePtr->orient == ORIENT_VERTICAL) { - return TROUGH2; - } else { - return TROUGH1; - } - default: - return OTHER; - } -} - -/* - *-------------------------------------------------------------- - * - * MacScaleEventProc -- - * - * This procedure is invoked by the Tk dispatcher for ButtonPress events - * on scales. - * - * Results: - * None. - * - * Side effects: - * When the window gets deleted, internal structures get cleaned up. When - * it gets exposed, it is redisplayed. - * - *-------------------------------------------------------------- - */ - -static void -MacScaleEventProc( - void *clientData, /* Information about window. */ - XEvent *eventPtr) /* Information about event. */ -{ - MacScale *macScalePtr = (MacScale *) clientData; - Point where; - Rect bounds; - int part; - -#ifdef TK_MAC_DEBUG_SCALE - fprintf(stderr,"MacScaleEventProc\n" ); -#endif - - /* - * To call Macintosh control routines we must have the port set to the - * window containing the control. We will then test which part of the - * control was hit and act accordingly. - */ - - TkMacOSXDbgMsg("calling TestControl"); -#endif - part = TestControl(macScalePtr->scaleHandle, where); - if (part == 0) { - return; - } - - TkMacOSXTrackingLoop(1); - part = HandleControlClick(macScalePtr->scaleHandle, where, - TkMacOSXModifierState(), scaleActionProc); - TkMacOSXTrackingLoop(0); - - /* - * Update the value for the widget. - */ - - macScalePtr->info.value = GetControlValue(macScalePtr->scaleHandle); - /* TkScaleSetValue(&macScalePtr->info, macScalePtr->info.value, 1, 0); */ - - /* - * The HandleControlClick call will "eat" the ButtonUp event. We now - * generate a ButtonUp event so Tk will unset implicit grabs etc. - */ - - TkGenerateButtonEventForXPointer(Tk_WindowId(macScalePtr->info.tkwin)); -} - -/* - *-------------------------------------------------------------- - * - * ScaleActionProc -- - * - * Callback procedure used by the Macintosh toolbox call - * HandleControlClick. This call will update the display while the - * scrollbar is being manipulated by the user. - * - * Results: - * None. - * - * Side effects: - * May change the display. - * - *-------------------------------------------------------------- - */ - -static pascal void -ScaleActionProc( - ControlRef theControl, /* Handle to scrollbat control */ - ControlPartCode partCode) /* Part of scrollbar that was "hit" */ -{ - int value; - TkScale *scalePtr = (TkScale *) GetControlReference(theControl); - -#ifdef TK_MAC_DEBUG_SCALE - TkMacOSXDbgMsg("ScaleActionProc"); -#endif - value = GetControlValue(theControl); - TkScaleSetValue(scalePtr, value, 1, 1); - Tcl_Preserve(scalePtr); - TkMacOSXRunTclEventLoop(); - Tcl_Release(scalePtr); -} -#endif - -/* - * Local Variables: - * mode: objc - * c-basic-offset: 4 - * fill-column: 79 - * coding: utf-8 - * End: - */ diff --git a/macosx/tkMacOSXTest.c b/macosx/tkMacOSXTest.c index 59ddb15..2650e55 100644 --- a/macosx/tkMacOSXTest.c +++ b/macosx/tkMacOSXTest.c @@ -342,7 +342,7 @@ TestinjectkeyeventObjCmd( if (Tcl_GetIntFromObj(interp, objv[2], &keysym) != TCL_OK) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( "keysym must be an integer")); - Tcl_SetErrorCode(interp, "TK", "TEST", "INJECT", "KEYSYM", NULL); + Tcl_SetErrorCode(interp, "TK", "TEST", "INJECT", "KEYSYM", (char *)NULL); return TCL_ERROR; } macKC.uint = XKeysymToKeycode(NULL, keysym); diff --git a/macosx/tkMacOSXWindowEvent.c b/macosx/tkMacOSXWindowEvent.c index 1663e00..7674e66 100644 --- a/macosx/tkMacOSXWindowEvent.c +++ b/macosx/tkMacOSXWindowEvent.c @@ -1260,6 +1260,17 @@ static const char *const accentNames[] = { Tk_SendVirtualEvent(tkwin, "AppearanceChanged", Tcl_NewStringObj(data, TCL_INDEX_NONE)); // Force a redraw of the view. [self setFrameSize:self.frame.size]; + + /* + * Create the *Tglswitch*.trough and *Tglswitch*.slider + * elements for the Toggleswitch* styles if necessary + */ + Tcl_Interp *interp = Tk_Interp(tkwin); + int code = Tcl_EvalEx(interp, "ttk::toggleswitch::CondUpdateElements", + TCL_INDEX_NONE, TCL_EVAL_GLOBAL); + if (code != TCL_OK) { + Tcl_BackgroundException(interp, code); + } } - (void)observeValueForKeyPath:(NSString *)keyPath diff --git a/macosx/tkMacOSXWm.c b/macosx/tkMacOSXWm.c index 23bcead..cb19de3 100644 --- a/macosx/tkMacOSXWm.c +++ b/macosx/tkMacOSXWm.c @@ -1468,7 +1468,7 @@ Tk_WmObjCmd( if (winPtr->wmInfoPtr->window != NULL) { Tcl_SetObjResult(interp, Tcl_NewStringObj( "Cannot change the class after the mac window is created.",-1)); - Tcl_SetErrorCode(interp, "TK", "CLASS_CHANGE", NULL); + Tcl_SetErrorCode(interp, "TK", "CLASS_CHANGE", (char *)NULL); return TCL_ERROR; } } else { @@ -1630,7 +1630,7 @@ WmAspectCmd( (denom2 <= 0)) { Tcl_SetObjResult(interp, Tcl_NewStringObj( "aspect number can't be <= 0", TCL_INDEX_NONE)); - Tcl_SetErrorCode(interp, "TK", "WM", "ASPECT", NULL); + Tcl_SetErrorCode(interp, "TK", "WM", "ASPECT", (char *)NULL); return TCL_ERROR; } wmPtr->minAspect.x = numer1; @@ -1792,7 +1792,7 @@ WmSetAttribute( Tcl_SetObjResult(interp, Tcl_ObjPrintf( "styleMask bit \"%s\" can only be used with an NSPanel", styleMaskBits[index].bitname)); - Tcl_SetErrorCode(interp, "TK", "INVALID_STYLEMASK_BIT", NULL); + Tcl_SetErrorCode(interp, "TK", "INVALID_STYLEMASK_BIT", (char *)NULL); return TCL_ERROR; } else { styleMaskValue |= styleMaskBits[index].bitvalue; @@ -1860,7 +1860,7 @@ WmSetAttribute( if ([NSApp macOSVersion] < 101300) { Tcl_SetObjResult(interp, Tcl_NewStringObj( "Tabbing identifiers require macOS 10.13", TCL_INDEX_NONE)); - Tcl_SetErrorCode(interp, "TK", "WM", "TABBINGID", NULL); + Tcl_SetErrorCode(interp, "TK", "WM", "TABBINGID", (char *)NULL); return TCL_ERROR; } valueString = Tcl_GetStringFromObj(value, &length); @@ -2155,7 +2155,7 @@ WmAttributesCmd( if (!winPtr) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( "Only -class, -tabbingid, or -tabbingmode can be set before the window exists.")); - Tcl_SetErrorCode(interp, "TK", "NO_WINDOW", NULL); + Tcl_SetErrorCode(interp, "TK", "NO_WINDOW", (char *)NULL); return TCL_ERROR; } if (winPtr && winPtr->window == None) { @@ -2440,13 +2440,13 @@ WmDeiconifyCmd( Tcl_SetObjResult(interp, Tcl_ObjPrintf( "can't deiconify %s: it is an icon for %s", Tcl_GetString(objv[2]), Tk_PathName(wmPtr->iconFor))); - Tcl_SetErrorCode(interp, "TK", "WM", "DEICONIFY", "ICON", NULL); + Tcl_SetErrorCode(interp, "TK", "WM", "DEICONIFY", "ICON", (char *)NULL); return TCL_ERROR; } else if (winPtr->flags & TK_EMBEDDED) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( "can't deiconify %s: it is an embedded window", winPtr->pathName)); - Tcl_SetErrorCode(interp, "TK", "WM", "DEICONIFY", "EMBEDDED", NULL); + Tcl_SetErrorCode(interp, "TK", "WM", "DEICONIFY", "EMBEDDED", (char *)NULL); return TCL_ERROR; } @@ -2812,7 +2812,7 @@ WmGridCmd( error: Tcl_SetObjResult(interp, Tcl_NewStringObj(errorMsg, TCL_INDEX_NONE)); - Tcl_SetErrorCode(interp, "TK", "WM", "GRID", NULL); + Tcl_SetErrorCode(interp, "TK", "WM", "GRID", (char *)NULL); return TCL_ERROR; } @@ -3059,19 +3059,19 @@ WmIconifyCmd( } else if (wmPtr->container != NULL) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( "can't iconify \"%s\": it is a transient", winPtr->pathName)); - Tcl_SetErrorCode(interp, "TK", "WM", "ICONIFY", "TRANSIENT", NULL); + Tcl_SetErrorCode(interp, "TK", "WM", "ICONIFY", "TRANSIENT", (char *)NULL); return TCL_ERROR; } else if (wmPtr->iconFor != NULL) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( "can't iconify \"%s\": it is an icon for \"%s\"", winPtr->pathName, Tk_PathName(wmPtr->iconFor))); - Tcl_SetErrorCode(interp, "TK", "WM", "ICONIFY", "ICON", NULL); + Tcl_SetErrorCode(interp, "TK", "WM", "ICONIFY", "ICON", (char *)NULL); return TCL_ERROR; } else if (winPtr->flags & TK_EMBEDDED) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( "can't iconify \"%s\": it is an embedded window", winPtr->pathName)); - Tcl_SetErrorCode(interp, "TK", "WM", "ICONIFY", "EMBEDDED", NULL); + Tcl_SetErrorCode(interp, "TK", "WM", "ICONIFY", "EMBEDDED", (char *)NULL); return TCL_ERROR; } @@ -3280,7 +3280,7 @@ WmIconphotoCmd( Tcl_SetObjResult(interp, Tcl_ObjPrintf( "can't use \"%s\" as iconphoto: not a photo image", icon)); - Tcl_SetErrorCode(interp, "TK", "WM", "ICONPHOTO", "PHOTO", NULL); + Tcl_SetErrorCode(interp, "TK", "WM", "ICONPHOTO", "PHOTO", (char *)NULL); return TCL_ERROR; } @@ -3293,7 +3293,7 @@ WmIconphotoCmd( if (newIcon == NULL) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( "failed to create an iconphoto with image \"%s\"", icon)); - Tcl_SetErrorCode(interp, "TK", "WM", "ICONPHOTO", "IMAGE", NULL); + Tcl_SetErrorCode(interp, "TK", "WM", "ICONPHOTO", "IMAGE", (char *)NULL); return TCL_ERROR; } [NSApp setApplicationIconImage: newIcon]; @@ -3424,7 +3424,7 @@ WmIconwindowCmd( Tcl_SetObjResult(interp, Tcl_ObjPrintf( "%s is already an icon for %s", Tcl_GetString(objv[3]), Tk_PathName(wmPtr2->iconFor))); - Tcl_SetErrorCode(interp, "TK", "WM", "ICONWINDOW", "ICON", NULL); + Tcl_SetErrorCode(interp, "TK", "WM", "ICONWINDOW", "ICON", (char *)NULL); return TCL_ERROR; } if (wmPtr->icon != NULL) { @@ -3502,7 +3502,7 @@ WmManageCmd( "window \"%s\" is not manageable: must be a" " frame, labelframe or toplevel", Tk_PathName(frameWin))); - Tcl_SetErrorCode(interp, "TK", "WM", "MANAGE", NULL); + Tcl_SetErrorCode(interp, "TK", "WM", "MANAGE", (char *)NULL); return TCL_ERROR; } @@ -4085,19 +4085,19 @@ WmStackorderCmd( Tcl_SetObjResult(interp, Tcl_ObjPrintf( "window \"%s\" isn't a top-level window", winPtr2->pathName)); - Tcl_SetErrorCode(interp, "TK", "WM", "STACK", "TOPLEVEL", NULL); + Tcl_SetErrorCode(interp, "TK", "WM", "STACK", "TOPLEVEL", (char *)NULL); return TCL_ERROR; } if (!Tk_IsMapped(winPtr)) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( "window \"%s\" isn't mapped", winPtr->pathName)); - Tcl_SetErrorCode(interp, "TK", "WM", "STACK", "MAPPED", NULL); + Tcl_SetErrorCode(interp, "TK", "WM", "STACK", "MAPPED", (char *)NULL); return TCL_ERROR; } else if (!Tk_IsMapped(winPtr2)) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( "window \"%s\" isn't mapped", winPtr2->pathName)); - Tcl_SetErrorCode(interp, "TK", "WM", "STACK", "MAPPED", NULL); + Tcl_SetErrorCode(interp, "TK", "WM", "STACK", "MAPPED", (char *)NULL); return TCL_ERROR; } @@ -4110,7 +4110,7 @@ WmStackorderCmd( if (windows == NULL) { Tcl_SetObjResult(interp, Tcl_NewStringObj( "TkWmStackorderToplevel failed", TCL_INDEX_NONE)); - Tcl_SetErrorCode(interp, "TK", "WM", "STACK", "FAIL", NULL); + Tcl_SetErrorCode(interp, "TK", "WM", "STACK", "FAIL", (char *)NULL); return TCL_ERROR; } @@ -4186,14 +4186,14 @@ WmStateCmd( Tcl_SetObjResult(interp, Tcl_ObjPrintf( "can't change state of \"%s\": it is an icon for \"%s\"", Tcl_GetString(objv[2]), Tk_PathName(wmPtr->iconFor))); - Tcl_SetErrorCode(interp, "TK", "WM", "STATE", "ICON", NULL); + Tcl_SetErrorCode(interp, "TK", "WM", "STATE", "ICON", (char *)NULL); return TCL_ERROR; } if (winPtr->flags & TK_EMBEDDED) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( "can't change state of \"%s\": it is an embedded window", winPtr->pathName)); - Tcl_SetErrorCode(interp, "TK", "WM", "STATE", "EMBEDDED", NULL); + Tcl_SetErrorCode(interp, "TK", "WM", "STATE", "EMBEDDED", (char *)NULL); return TCL_ERROR; } @@ -4375,7 +4375,7 @@ WmTransientCmd( Tcl_SetObjResult(interp, Tcl_ObjPrintf( "can't make \"%s\" a transient: it is an icon for %s", Tcl_GetString(objv[2]), Tk_PathName(wmPtr->iconFor))); - Tcl_SetErrorCode(interp, "TK", "WM", "TRANSIENT", "ICON", NULL); + Tcl_SetErrorCode(interp, "TK", "WM", "TRANSIENT", "ICON", (char *)NULL); return TCL_ERROR; } @@ -4389,7 +4389,7 @@ WmTransientCmd( Tcl_SetObjResult(interp, Tcl_ObjPrintf( "can't make \"%s\" a container: it is an icon for %s", Tcl_GetString(objv[3]), Tk_PathName(wmPtr2->iconFor))); - Tcl_SetErrorCode(interp, "TK", "WM", "TRANSIENT", "ICON", NULL); + Tcl_SetErrorCode(interp, "TK", "WM", "TRANSIENT", "ICON", (char *)NULL); return TCL_ERROR; } @@ -4399,7 +4399,7 @@ WmTransientCmd( Tcl_SetObjResult(interp, Tcl_ObjPrintf( "can't set \"%s\" as container: would cause management loop", Tk_PathName(containerPtr))); - Tcl_SetErrorCode(interp, "TK", "WM", "TRANSIENT", "SELF", NULL); + Tcl_SetErrorCode(interp, "TK", "WM", "TRANSIENT", "SELF", (char *)NULL); return TCL_ERROR; } } @@ -4529,7 +4529,7 @@ WmWithdrawCmd( Tcl_SetObjResult(interp, Tcl_ObjPrintf( "can't withdraw %s: it is an icon for %s", Tcl_GetString(objv[2]), Tk_PathName(wmPtr->iconFor))); - Tcl_SetErrorCode(interp, "TK", "WM", "WITHDRAW", "ICON", NULL); + Tcl_SetErrorCode(interp, "TK", "WM", "WITHDRAW", "ICON", (char *)NULL); return TCL_ERROR; } @@ -5205,7 +5205,7 @@ ParseGeometry( error: Tcl_SetObjResult(interp, Tcl_ObjPrintf( "bad geometry specifier \"%s\"", string)); - Tcl_SetErrorCode(interp, "TK", "VALUE", "GEOMETRY", NULL); + Tcl_SetErrorCode(interp, "TK", "VALUE", "GEOMETRY", (char *)NULL); return TCL_ERROR; } @@ -6062,15 +6062,15 @@ TkMacOSXGrowToplevel( void TkSetWMName( TkWindow *winPtr, - Tk_Uid titleUid) + const char *title) { if (Tk_IsEmbedded(winPtr)) { return; } - NSString *title = [[TKNSString alloc] initWithTclUtfBytes:titleUid length:TCL_INDEX_NONE]; - [TkMacOSXGetNSWindowForDrawable(winPtr->window) setTitle:title]; - [title release]; + NSString *nstitle = [[TKNSString alloc] initWithTclUtfBytes:title length:TCL_INDEX_NONE]; + [TkMacOSXGetNSWindowForDrawable(winPtr->window) setTitle:nstitle]; + [nstitle release]; } /* @@ -6291,7 +6291,7 @@ TkUnsupported1ObjCmd( if (!(winPtr->flags & TK_TOP_LEVEL)) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( "window \"%s\" isn't a top-level window", winPtr->pathName)); - Tcl_SetErrorCode(interp, "TK", "WINDOWSTYLE", "TOPLEVEL", NULL); + Tcl_SetErrorCode(interp, "TK", "WINDOWSTYLE", "TOPLEVEL", (char *)NULL); return TCL_ERROR; } @@ -6315,7 +6315,7 @@ TkUnsupported1ObjCmd( Tcl_SetObjResult(interp, Tcl_NewStringObj( "Window appearances cannot be changed before OSX 10.14.", -1)); - Tcl_SetErrorCode(interp, "TK", "WINDOWSTYLE", "APPEARANCE", NULL); + Tcl_SetErrorCode(interp, "TK", "WINDOWSTYLE", "APPEARANCE", (char *)NULL); return TCL_ERROR; } return WmWinAppearance(interp, winPtr, objc, objv); @@ -7243,17 +7243,16 @@ XSetInputFocus( *---------------------------------------------------------------------- */ -int +size_t TkpChangeFocus( TkWindow *winPtr, /* Window that is to receive the X focus. */ int force) /* Non-zero means claim the focus even if it * didn't originally belong to topLevelPtr's * application. */ { - if (!winPtr || - (winPtr->flags & TK_ALREADY_DEAD) || - !Tk_IsMapped(winPtr) || - winPtr->atts.override_redirect) { + if (!winPtr || (winPtr->flags & TK_ALREADY_DEAD) + || !Tk_IsMapped(winPtr) || + winPtr->atts.override_redirect) { return 0; } if (Tk_IsTopLevel(winPtr) && !Tk_IsEmbedded(winPtr)) { diff --git a/macosx/ttkMacOSXTheme.c b/macosx/ttkMacOSXTheme.c index 44259e0..df32035 100644 --- a/macosx/ttkMacOSXTheme.c +++ b/macosx/ttkMacOSXTheme.c @@ -3568,67 +3568,67 @@ static int AquaTheme_Init( * Elements: */ - Ttk_RegisterElementSpec(themePtr, "background", &BackgroundElementSpec, + Ttk_RegisterElement(NULL, themePtr, "background", &BackgroundElementSpec, 0); - Ttk_RegisterElementSpec(themePtr, "fill", &FillElementSpec, 0); - Ttk_RegisterElementSpec(themePtr, "field", &FieldElementSpec, 0); - Ttk_RegisterElementSpec(themePtr, "Toolbar.background", + Ttk_RegisterElement(NULL, themePtr, "fill", &FillElementSpec, 0); + Ttk_RegisterElement(NULL, themePtr, "field", &FieldElementSpec, 0); + Ttk_RegisterElement(NULL, themePtr, "Toolbar.background", &ToolbarBackgroundElementSpec, 0); - Ttk_RegisterElementSpec(themePtr, "Button.button", + Ttk_RegisterElement(NULL, themePtr, "Button.button", &ButtonElementSpec, &PushButtonParams); - Ttk_RegisterElementSpec(themePtr, "InlineButton.button", + Ttk_RegisterElement(NULL, themePtr, "InlineButton.button", &ButtonElementSpec, &InlineButtonParams); - Ttk_RegisterElementSpec(themePtr, "RoundedRectButton.button", + Ttk_RegisterElement(NULL, themePtr, "RoundedRectButton.button", &ButtonElementSpec, &RoundedRectButtonParams); - Ttk_RegisterElementSpec(themePtr, "Checkbutton.button", + Ttk_RegisterElement(NULL, themePtr, "Checkbutton.button", &ButtonElementSpec, &CheckBoxParams); - Ttk_RegisterElementSpec(themePtr, "Radiobutton.button", + Ttk_RegisterElement(NULL, themePtr, "Radiobutton.button", &ButtonElementSpec, &RadioButtonParams); - Ttk_RegisterElementSpec(themePtr, "RecessedButton.button", + Ttk_RegisterElement(NULL, themePtr, "RecessedButton.button", &ButtonElementSpec, &RecessedButtonParams); - Ttk_RegisterElementSpec(themePtr, "SidebarButton.button", + Ttk_RegisterElement(NULL, themePtr, "SidebarButton.button", &ButtonElementSpec, &SidebarButtonParams); - Ttk_RegisterElementSpec(themePtr, "Toolbutton.border", + Ttk_RegisterElement(NULL, themePtr, "Toolbutton.border", &ButtonElementSpec, &BevelButtonParams); - Ttk_RegisterElementSpec(themePtr, "Menubutton.button", + Ttk_RegisterElement(NULL, themePtr, "Menubutton.button", &ButtonElementSpec, &PopupButtonParams); - Ttk_RegisterElementSpec(themePtr, "DisclosureButton.button", + Ttk_RegisterElement(NULL, themePtr, "DisclosureButton.button", &ButtonElementSpec, &DisclosureButtonParams); - Ttk_RegisterElementSpec(themePtr, "HelpButton.button", + Ttk_RegisterElement(NULL, themePtr, "HelpButton.button", &ButtonElementSpec, &HelpButtonParams); - Ttk_RegisterElementSpec(themePtr, "GradientButton.button", + Ttk_RegisterElement(NULL, themePtr, "GradientButton.button", &ButtonElementSpec, &GradientButtonParams); - Ttk_RegisterElementSpec(themePtr, "Spinbox.uparrow", + Ttk_RegisterElement(NULL, themePtr, "Spinbox.uparrow", &SpinButtonUpElementSpec, 0); - Ttk_RegisterElementSpec(themePtr, "Spinbox.downarrow", + Ttk_RegisterElement(NULL, themePtr, "Spinbox.downarrow", &SpinButtonDownElementSpec, 0); - Ttk_RegisterElementSpec(themePtr, "Combobox.button", + Ttk_RegisterElement(NULL, themePtr, "Combobox.button", &ComboboxElementSpec, 0); - Ttk_RegisterElementSpec(themePtr, "Treeitem.indicator", + Ttk_RegisterElement(NULL, themePtr, "Treeitem.indicator", &DisclosureElementSpec, &DisclosureParams); - Ttk_RegisterElementSpec(themePtr, "Treeheading.cell", + Ttk_RegisterElement(NULL, themePtr, "Treeheading.cell", &TreeHeaderElementSpec, &ListHeaderParams); - Ttk_RegisterElementSpec(themePtr, "Treeview.treearea", + Ttk_RegisterElement(NULL, themePtr, "Treeview.treearea", &TreeAreaElementSpec, 0); - Ttk_RegisterElementSpec(themePtr, "Notebook.tab", &TabElementSpec, 0); - Ttk_RegisterElementSpec(themePtr, "Notebook.client", &PaneElementSpec, 0); + Ttk_RegisterElement(NULL, themePtr, "Notebook.tab", &TabElementSpec, 0); + Ttk_RegisterElement(NULL, themePtr, "Notebook.client", &PaneElementSpec, 0); - Ttk_RegisterElementSpec(themePtr, "Labelframe.border", &GroupElementSpec, + Ttk_RegisterElement(NULL, themePtr, "Labelframe.border", &GroupElementSpec, 0); - Ttk_RegisterElementSpec(themePtr, "Entry.field", &EntryElementSpec, + Ttk_RegisterElement(NULL, themePtr, "Entry.field", &EntryElementSpec, &EntryFieldParams); - Ttk_RegisterElementSpec(themePtr, "Searchbox.field", &EntryElementSpec, + Ttk_RegisterElement(NULL, themePtr, "Searchbox.field", &EntryElementSpec, &SearchboxFieldParams); - Ttk_RegisterElementSpec(themePtr, "Spinbox.field", &EntryElementSpec, + Ttk_RegisterElement(NULL, themePtr, "Spinbox.field", &EntryElementSpec, &EntryFieldParams); - Ttk_RegisterElementSpec(themePtr, "separator", &SeparatorElementSpec, 0); - Ttk_RegisterElementSpec(themePtr, "hseparator", &SeparatorElementSpec, 0); - Ttk_RegisterElementSpec(themePtr, "vseparator", &SeparatorElementSpec, 0); + Ttk_RegisterElement(NULL, themePtr, "separator", &SeparatorElementSpec, 0); + Ttk_RegisterElement(NULL, themePtr, "hseparator", &SeparatorElementSpec, 0); + Ttk_RegisterElement(NULL, themePtr, "vseparator", &SeparatorElementSpec, 0); - Ttk_RegisterElementSpec(themePtr, "sizegrip", &SizegripElementSpec, 0); + Ttk_RegisterElement(NULL, themePtr, "sizegrip", &SizegripElementSpec, 0); /* * <<NOTE-TRACKS>> @@ -3637,20 +3637,20 @@ static int AquaTheme_Init( * of the progress bar, so we just have a single element called ".track". */ - Ttk_RegisterElementSpec(themePtr, "Progressbar.track", &PbarElementSpec, + Ttk_RegisterElement(NULL, themePtr, "Progressbar.track", &PbarElementSpec, 0); - Ttk_RegisterElementSpec(themePtr, "Scale.trough", &TrackElementSpec, + Ttk_RegisterElement(NULL, themePtr, "Scale.trough", &TrackElementSpec, &ScaleData); - Ttk_RegisterElementSpec(themePtr, "Scale.slider", &SliderElementSpec, 0); + Ttk_RegisterElement(NULL, themePtr, "Scale.slider", &SliderElementSpec, 0); - Ttk_RegisterElementSpec(themePtr, "Vertical.Scrollbar.trough", + Ttk_RegisterElement(NULL, themePtr, "Vertical.Scrollbar.trough", &TroughElementSpec, 0); - Ttk_RegisterElementSpec(themePtr, "Vertical.Scrollbar.thumb", + Ttk_RegisterElement(NULL, themePtr, "Vertical.Scrollbar.thumb", &ThumbElementSpec, 0); - Ttk_RegisterElementSpec(themePtr, "Horizontal.Scrollbar.trough", + Ttk_RegisterElement(NULL, themePtr, "Horizontal.Scrollbar.trough", &TroughElementSpec, 0); - Ttk_RegisterElementSpec(themePtr, "Horizontal.Scrollbar.thumb", + Ttk_RegisterElement(NULL, themePtr, "Horizontal.Scrollbar.thumb", &ThumbElementSpec, 0); /* @@ -3658,13 +3658,13 @@ static int AquaTheme_Init( * displayed. */ - Ttk_RegisterElementSpec(themePtr, "Vertical.Scrollbar.uparrow", + Ttk_RegisterElement(NULL, themePtr, "Vertical.Scrollbar.uparrow", &ArrowElementSpec, 0); - Ttk_RegisterElementSpec(themePtr, "Vertical.Scrollbar.downarrow", + Ttk_RegisterElement(NULL, themePtr, "Vertical.Scrollbar.downarrow", &ArrowElementSpec, 0); - Ttk_RegisterElementSpec(themePtr, "Horizontal.Scrollbar.leftarrow", + Ttk_RegisterElement(NULL, themePtr, "Horizontal.Scrollbar.leftarrow", &ArrowElementSpec, 0); - Ttk_RegisterElementSpec(themePtr, "Horizontal.Scrollbar.rightarrow", + Ttk_RegisterElement(NULL, themePtr, "Horizontal.Scrollbar.rightarrow", &ArrowElementSpec, 0); /* |
