summaryrefslogtreecommitdiffstats
path: root/win/ttkWinXPTheme.c
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2020-03-24 07:56:41 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2020-03-24 07:56:41 (GMT)
commitbc56730d2abae5198c3667a55729e01684f3cb29 (patch)
treea67f18bf70f2081877ab48b4aecd142c54848262 /win/ttkWinXPTheme.c
parentabbe37191732849b4d22072a8572f29205025457 (diff)
downloadtk-bc56730d2abae5198c3667a55729e01684f3cb29.zip
tk-bc56730d2abae5198c3667a55729e01684f3cb29.tar.gz
tk-bc56730d2abae5198c3667a55729e01684f3cb29.tar.bz2
Replace all instances of Tcl_WinTCharToUtf()/Tcl_WinUtfToTChar() with Tcl_UniCharToUtfDString()/Tcl_UtfToUniCharDString(), if possible (only for -DTCL_UTF_MAX=3, which is the default and only supported option)
Backported, as far as possible, from 8.7. This helps moving away from Tcl_WinTCharToUtf()/Tcl_WinUtfToTChar(), even though it only becomes deprecated in 8.7.
Diffstat (limited to 'win/ttkWinXPTheme.c')
-rw-r--r--win/ttkWinXPTheme.c81
1 files changed, 44 insertions, 37 deletions
diff --git a/win/ttkWinXPTheme.c b/win/ttkWinXPTheme.c
index 23e4923..8f071d5 100644
--- a/win/ttkWinXPTheme.c
+++ b/win/ttkWinXPTheme.c
@@ -106,7 +106,7 @@ LoadXPThemeProcs(HINSTANCE *phlib)
* We have successfully loaded the library. Proceed in storing the
* addresses of the functions we want to use.
*/
- XPThemeProcs *procs = ckalloc(sizeof(XPThemeProcs));
+ XPThemeProcs *procs = (XPThemeProcs *)ckalloc(sizeof(XPThemeProcs));
#define LOADPROC(name) \
(0 != (procs->name = (name ## Proc *)(void *)GetProcAddress(handle, #name) ))
@@ -138,7 +138,7 @@ LoadXPThemeProcs(HINSTANCE *phlib)
static void
XPThemeDeleteProc(void *clientData)
{
- XPThemeData *themeData = clientData;
+ XPThemeData *themeData = (XPThemeData *)clientData;
FreeLibrary(themeData->hlibrary);
ckfree(clientData);
}
@@ -146,9 +146,11 @@ XPThemeDeleteProc(void *clientData)
static int
XPThemeEnabled(Ttk_Theme theme, void *clientData)
{
- XPThemeData *themeData = clientData;
+ XPThemeData *themeData = (XPThemeData *)clientData;
int active = themeData->procs->IsThemeActive();
int themed = themeData->procs->IsAppThemed();
+ (void)theme;
+
return (active && themed);
}
@@ -382,12 +384,12 @@ typedef struct /* XP element specifications */
int partId; /* BP_PUSHBUTTON, BP_CHECKBUTTON, etc. */
Ttk_StateTable *statemap; /* Map Tk states to XP states */
Ttk_Padding padding; /* See NOTE-GetThemeMargins */
- int flags;
-# define IGNORE_THEMESIZE 0x80000000 /* See NOTE-GetThemePartSize */
-# define PAD_MARGINS 0x40000000 /* See NOTE-GetThemeMargins */
-# define HEAP_ELEMENT 0x20000000 /* ElementInfo is on heap */
-# define HALF_HEIGHT 0x10000000 /* Used by GenericSizedElements */
-# define HALF_WIDTH 0x08000000 /* Used by GenericSizedElements */
+ unsigned flags;
+# define IGNORE_THEMESIZE 0x80000000U /* See NOTE-GetThemePartSize */
+# define PAD_MARGINS 0x40000000U /* See NOTE-GetThemeMargins */
+# define HEAP_ELEMENT 0x20000000U /* ElementInfo is on heap */
+# define HALF_HEIGHT 0x10000000U /* Used by GenericSizedElements */
+# define HALF_WIDTH 0x08000000U /* Used by GenericSizedElements */
} ElementInfo;
typedef struct
@@ -413,7 +415,7 @@ typedef struct
static ElementData *
NewElementData(XPThemeProcs *procs, ElementInfo *info)
{
- ElementData *elementData = ckalloc(sizeof(ElementData));
+ ElementData *elementData = (ElementData *)ckalloc(sizeof(ElementData));
elementData->procs = procs;
elementData->info = info;
@@ -429,12 +431,12 @@ NewElementData(XPThemeProcs *procs, ElementInfo *info)
*/
static void DestroyElementData(void *clientData)
{
- ElementData *elementData = clientData;
+ ElementData *elementData = (ElementData *)clientData;
if (elementData->info->flags & HEAP_ELEMENT) {
- ckfree(elementData->info->statemap);
- ckfree(elementData->info->className);
- ckfree(elementData->info->elementName);
- ckfree(elementData->info);
+ ckfree((char *)elementData->info->statemap);
+ ckfree((char *)elementData->info->className);
+ ckfree((char *)elementData->info->elementName);
+ ckfree((char *)elementData->info);
}
ckfree(clientData);
}
@@ -497,9 +499,10 @@ static void GenericElementSize(
void *clientData, void *elementRecord, Tk_Window tkwin,
int *widthPtr, int *heightPtr, Ttk_Padding *paddingPtr)
{
- ElementData *elementData = clientData;
+ ElementData *elementData = (ElementData *)clientData;
HRESULT result;
SIZE size;
+ (void)elementRecord;
if (!InitElementData(elementData, tkwin, 0))
return;
@@ -533,8 +536,9 @@ static void GenericElementDraw(
void *clientData, void *elementRecord, Tk_Window tkwin,
Drawable d, Ttk_Box b, unsigned int state)
{
- ElementData *elementData = clientData;
+ ElementData *elementData = (ElementData *)clientData;
RECT rc;
+ (void)elementRecord;
if (!InitElementData(elementData, tkwin, d)) {
return;
@@ -578,7 +582,7 @@ GenericSizedElementSize(
void *clientData, void *elementRecord, Tk_Window tkwin,
int *widthPtr, int *heightPtr, Ttk_Padding *paddingPtr)
{
- ElementData *elementData = clientData;
+ ElementData *elementData = (ElementData *)clientData;
if (!InitElementData(elementData, tkwin, 0))
return;
@@ -614,7 +618,7 @@ SpinboxArrowElementSize(
void *clientData, void *elementRecord, Tk_Window tkwin,
int *widthPtr, int *heightPtr, Ttk_Padding *paddingPtr)
{
- ElementData *elementData = clientData;
+ ElementData *elementData = (ElementData *)clientData;
if (!InitElementData(elementData, tkwin, 0))
return;
@@ -643,9 +647,10 @@ static void ThumbElementDraw(
void *clientData, void *elementRecord, Tk_Window tkwin,
Drawable d, Ttk_Box b, unsigned int state)
{
- ElementData *elementData = clientData;
+ ElementData *elementData = (ElementData *)clientData;
unsigned stateId = Ttk_StateTableLookup(elementData->info->statemap, state);
RECT rc = BoxToRect(b);
+ (void)elementRecord;
/*
* Don't draw the thumb if we are disabled.
@@ -682,7 +687,7 @@ static void PbarElementSize(
void *clientData, void *elementRecord, Tk_Window tkwin,
int *widthPtr, int *heightPtr, Ttk_Padding *paddingPtr)
{
- ElementData *elementData = clientData;
+ ElementData *elementData = (ElementData *)clientData;
int nBars = 3;
GenericElementSize(clientData, elementRecord, tkwin,
@@ -722,9 +727,10 @@ static void TabElementDraw(
void *clientData, void *elementRecord, Tk_Window tkwin,
Drawable d, Ttk_Box b, unsigned int state)
{
- ElementData *elementData = clientData;
+ ElementData *elementData = (ElementData *)clientData;
int partId = elementData->info->partId;
RECT rc = BoxToRect(b);
+ (void)elementRecord;
if (!InitElementData(elementData, tkwin, d))
return;
@@ -812,7 +818,7 @@ typedef struct
Tcl_Obj *fontObj;
} TextElement;
-static Ttk_ElementOptionSpec TextElementOptions[] =
+static const Ttk_ElementOptionSpec TextElementOptions[] =
{
{ "-text", TK_OPTION_STRING,
Tk_Offset(TextElement,textObj), "" },
@@ -837,13 +843,13 @@ static void TextElementSize(
return;
src = Tcl_GetStringFromObj(element->textObj, &len);
- Tcl_WinUtfToTChar(src, len, &ds);
+ Tcl_DStringInit(&ds);
hr = elementData->procs->GetThemeTextExtent(
elementData->hTheme,
elementData->hDC,
elementData->info->partId,
Ttk_StateTableLookup(elementData->info->statemap, 0),
- (WCHAR *) Tcl_DStringValue(&ds),
+ Tcl_UtfToWCharDString(src, len, &ds),
-1,
DT_LEFT,// | DT_BOTTOM | DT_NOPREFIX,
NULL,
@@ -876,13 +882,13 @@ static void TextElementDraw(
return;
src = Tcl_GetStringFromObj(element->textObj, &len);
- Tcl_WinUtfToTChar(src, len, &ds);
+ Tcl_DStringInit(&ds);
hr = elementData->procs->DrawThemeText(
elementData->hTheme,
elementData->hDC,
elementData->info->partId,
Ttk_StateTableLookup(elementData->info->statemap, state),
- (WCHAR *) Tcl_DStringValue(&ds),
+ Tcl_UtfToWCharDString(src, len, &ds),
-1,
DT_LEFT,// | DT_BOTTOM | DT_NOPREFIX,
(state & TTK_STATE_DISABLED) ? DTT_GRAYED : 0,
@@ -1058,7 +1064,7 @@ static ElementInfo ElementInfoTable[] = {
static int
GetSysFlagFromObj(Tcl_Interp *interp, Tcl_Obj *objPtr, int *resultPtr)
{
- static const char *names[] = {
+ static const char *const names[] = {
"SM_CXBORDER", "SM_CYBORDER", "SM_CXVSCROLL", "SM_CYVSCROLL",
"SM_CXHSCROLL", "SM_CYHSCROLL", "SM_CXMENUCHECK", "SM_CYMENUCHECK",
"SM_CXMENUSIZE", "SM_CYMENUSIZE", "SM_CXSIZE", "SM_CYSIZE", "SM_CXSMSIZE",
@@ -1112,7 +1118,7 @@ Ttk_CreateVsapiElement(
int objc,
Tcl_Obj *const objv[])
{
- XPThemeData *themeData = clientData;
+ XPThemeData *themeData = (XPThemeData *)clientData;
ElementInfo *elementPtr = NULL;
ClientData elementData;
LPCWSTR className;
@@ -1126,7 +1132,7 @@ Ttk_CreateVsapiElement(
Ttk_ElementSpec *elementSpec = &GenericElementSpec;
Tcl_DString classBuf;
- static const char *optionStrings[] =
+ static const char *const optionStrings[] =
{ "-padding","-width","-height","-margins", "-syssize",
"-halfheight", "-halfwidth", NULL };
enum { O_PADDING, O_WIDTH, O_HEIGHT, O_MARGINS, O_SYSSIZE,
@@ -1143,7 +1149,8 @@ Ttk_CreateVsapiElement(
return TCL_ERROR;
}
name = Tcl_GetStringFromObj(objv[0], &length);
- className = (LPCWSTR) Tcl_WinUtfToTChar(name, length, &classBuf);
+ Tcl_DStringInit(&classBuf);
+ className = Tcl_UtfToWCharDString(name, length, &classBuf);
/* flags or padding */
if (objc > 3) {
@@ -1218,7 +1225,7 @@ Ttk_CreateVsapiElement(
if (Tcl_ListObjGetElements(interp, objv[2], &count, &specs) != TCL_OK)
goto retErr;
/* we over-allocate to ensure there is a terminating entry */
- stateTable = ckalloc(sizeof(Ttk_StateTable) * (count + 1));
+ stateTable = (Ttk_StateTable *)ckalloc(sizeof(Ttk_StateTable) * (count + 1));
memset(stateTable, 0, sizeof(Ttk_StateTable) * (count + 1));
for (n = 0, j = 0; status == TCL_OK && n < count; n += 2, ++j) {
Ttk_StateSpec spec = {0,0};
@@ -1236,11 +1243,11 @@ Ttk_CreateVsapiElement(
return status;
}
} else {
- stateTable = ckalloc(sizeof(Ttk_StateTable));
+ stateTable = (Ttk_StateTable *)ckalloc(sizeof(Ttk_StateTable));
memset(stateTable, 0, sizeof(Ttk_StateTable));
}
- elementPtr = ckalloc(sizeof(ElementInfo));
+ elementPtr = (ElementInfo *)ckalloc(sizeof(ElementInfo));
elementPtr->elementSpec = elementSpec;
elementPtr->partId = partId;
elementPtr->statemap = stateTable;
@@ -1248,12 +1255,12 @@ Ttk_CreateVsapiElement(
elementPtr->flags = HEAP_ELEMENT | flags;
/* set the element name to an allocated copy */
- name = ckalloc(strlen(elementName) + 1);
+ name = (char *)ckalloc(strlen(elementName) + 1);
strcpy(name, elementName);
elementPtr->elementName = name;
/* set the class name to an allocated copy */
- wname = ckalloc(Tcl_DStringLength(&classBuf) + sizeof(WCHAR));
+ wname = (LPWSTR)ckalloc(Tcl_DStringLength(&classBuf) + sizeof(WCHAR));
wcscpy(wname, className);
elementPtr->className = wname;
@@ -1305,7 +1312,7 @@ MODULE_SCOPE int TtkXPTheme_Init(Tcl_Interp *interp, HWND hwnd)
* Set theme data and cleanup proc
*/
- themeData = ckalloc(sizeof(XPThemeData));
+ themeData = (XPThemeData *)ckalloc(sizeof(XPThemeData));
themeData->procs = procs;
themeData->hlibrary = hlibrary;