summaryrefslogtreecommitdiffstats
path: root/macosx
diff options
context:
space:
mode:
Diffstat (limited to 'macosx')
-rw-r--r--macosx/GNUmakefile16
-rw-r--r--macosx/Wish-Info.plist.in2
-rw-r--r--macosx/tkMacOSX.h2
-rw-r--r--macosx/tkMacOSXBitmap.c6
-rw-r--r--macosx/tkMacOSXClipboard.c87
-rw-r--r--macosx/tkMacOSXColor.c2
-rw-r--r--macosx/tkMacOSXCursor.c2
-rw-r--r--macosx/tkMacOSXDialog.c16
-rw-r--r--macosx/tkMacOSXEmbed.c6
-rw-r--r--macosx/tkMacOSXFont.c4
-rw-r--r--macosx/tkMacOSXImage.c12
-rw-r--r--macosx/tkMacOSXInit.c65
-rw-r--r--macosx/tkMacOSXInt.h2
-rw-r--r--macosx/tkMacOSXMouseEvent.c6
-rw-r--r--macosx/tkMacOSXRegion.c70
-rw-r--r--macosx/tkMacOSXScale.c470
-rw-r--r--macosx/tkMacOSXTest.c2
-rw-r--r--macosx/tkMacOSXWindowEvent.c11
-rw-r--r--macosx/tkMacOSXWm.c73
-rw-r--r--macosx/ttkMacOSXTheme.c86
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);
/*