summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2024-07-10 13:53:49 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2024-07-10 13:53:49 (GMT)
commit569dc6043445e22c0b79c5f860dd2716c0cafef7 (patch)
treee70b34b9c6aafcca166742af3b48bd790566cefa
parent365059dd56e66d2056e28432b1420bfe676c260b (diff)
downloadtk-569dc6043445e22c0b79c5f860dd2716c0cafef7.zip
tk-569dc6043445e22c0b79c5f860dd2716c0cafef7.tar.gz
tk-569dc6043445e22c0b79c5f860dd2716c0cafef7.tar.bz2
Add TkLengthOne() function, just as TclLengthOne() in Tcl, for optimization within Tk internal objTypes. No need to define TCL_OBJTYPE_V0 in tclInt.h anymore (Tcl 8.7+ has it)
-rw-r--r--generic/tkColor.c2
-rw-r--r--generic/tkCursor.c2
-rw-r--r--generic/tkInt.h5
-rw-r--r--generic/tkObj.c11
4 files changed, 12 insertions, 8 deletions
diff --git a/generic/tkColor.c b/generic/tkColor.c
index b23255e..baff5e7 100644
--- a/generic/tkColor.c
+++ b/generic/tkColor.c
@@ -62,7 +62,7 @@ const TkObjType tkColorObjType = {
DupColorObjProc, /* dupIntRepProc */
NULL, /* updateStringProc */
NULL, /* setFromAnyProc */
- TCL_OBJTYPE_V0},
+ TCL_OBJTYPE_V1(TkLengthOne)},
0
};
diff --git a/generic/tkCursor.c b/generic/tkCursor.c
index 9785470..1bed0c4 100644
--- a/generic/tkCursor.c
+++ b/generic/tkCursor.c
@@ -65,7 +65,7 @@ const TkObjType tkCursorObjType = {
DupCursorObjProc, /* dupIntRepProc */
NULL, /* updateStringProc */
NULL, /* setFromAnyProc */
- TCL_OBJTYPE_V0},
+ TCL_OBJTYPE_V1(TkLengthOne)},
0
};
diff --git a/generic/tkInt.h b/generic/tkInt.h
index c293306..6448c92 100644
--- a/generic/tkInt.h
+++ b/generic/tkInt.h
@@ -1069,10 +1069,6 @@ typedef struct {
size_t version;
} TkObjType;
-#ifndef TCL_OBJTYPE_V0
-# define TCL_OBJTYPE_V0 /* just empty */
-#endif
-
MODULE_SCOPE const TkObjType tkBorderObjType;
MODULE_SCOPE const TkObjType tkBitmapObjType;
MODULE_SCOPE const TkObjType tkColorObjType;
@@ -1264,6 +1260,7 @@ MODULE_SCOPE void TkpDrawFrameEx(Tk_Window tkwin, Drawable drawable,
int borderWidth, int relief);
MODULE_SCOPE void TkpShowBusyWindow(TkBusy busy);
MODULE_SCOPE void TkpHideBusyWindow(TkBusy busy);
+MODULE_SCOPE Tcl_Size TkLengthOne(Tcl_Obj *);
MODULE_SCOPE void TkpMakeTransparentWindowExist(Tk_Window tkwin,
Window parent);
MODULE_SCOPE void TkpCreateBusy(Tk_FakeWin *winPtr, Tk_Window tkRef,
diff --git a/generic/tkObj.c b/generic/tkObj.c
index cdea2ed..dcff758 100644
--- a/generic/tkObj.c
+++ b/generic/tkObj.c
@@ -108,10 +108,17 @@ static const TkObjType pixelObjType = {
DupPixelInternalRep, /* dupIntRepProc */
NULL, /* updateStringProc */
NULL, /* setFromAnyProc */
- TCL_OBJTYPE_V0},
+ TCL_OBJTYPE_V1(TkLengthOne)},
0
};
+Tcl_Size
+TkLengthOne(
+ TCL_UNUSED(Tcl_Obj *))
+{
+ return 1;
+}
+
/*
* The following structure defines the implementation of the "pixel" Tcl
* object, used for measuring distances. The pixel object remembers its
@@ -124,7 +131,7 @@ static const TkObjType mmObjType = {
DupMMInternalRep, /* dupIntRepProc */
UpdateStringOfMM, /* updateStringProc */
NULL, /* setFromAnyProc */
- TCL_OBJTYPE_V0},
+ TCL_OBJTYPE_V1(TkLengthOne)},
0
};