summaryrefslogtreecommitdiffstats
path: root/win/tkWinX.c
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2023-01-02 15:58:57 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2023-01-02 15:58:57 (GMT)
commit55091eb14914c24bbae66062f600e2ec17b3352b (patch)
treefbf3d1dda6b1c4120ea8de8abb0cca9a64c695e1 /win/tkWinX.c
parent73d95cf6f972ef7af3b41b2d80f1f7ba62f41878 (diff)
downloadtk-55091eb14914c24bbae66062f600e2ec17b3352b.zip
tk-55091eb14914c24bbae66062f600e2ec17b3352b.tar.gz
tk-55091eb14914c24bbae66062f600e2ec17b3352b.tar.bz2
Use more X11 macro's, in stead of accessing fields directly. Mostly backported from 8.7
Diffstat (limited to 'win/tkWinX.c')
-rw-r--r--win/tkWinX.c165
1 files changed, 83 insertions, 82 deletions
diff --git a/win/tkWinX.c b/win/tkWinX.c
index df8c004..1a9bc2a 100644
--- a/win/tkWinX.c
+++ b/win/tkWinX.c
@@ -11,6 +11,7 @@
* this file, and for a DISCLAIMER OF ALL WARRANTIES.
*/
+#define XLIB_ILLEGAL_ACCESS
#include "tkWinInt.h"
/*
@@ -130,7 +131,7 @@ void
TkGetServerInfo(
Tcl_Interp *interp, /* The server information is returned in this
* interpreter's result. */
- Tk_Window tkwin) /* Token for window; this selects a particular
+ TCL_UNUSED(Tk_Window)) /* Token for window; this selects a particular
* display and server. */
{
static char buffer[32]; /* Empty string means not initialized yet. */
@@ -269,7 +270,7 @@ TkWinXInit(
if (GetLocaleInfoW(LANGIDFROMLCID(PTR2INT(GetKeyboardLayout(0))),
LOCALE_IDEFAULTANSICODEPAGE | LOCALE_RETURN_NUMBER,
(LPWSTR) &lpCP, sizeof(lpCP)/sizeof(WCHAR))
- && TranslateCharsetInfo(INT2PTR(lpCP), &lpCs, TCI_SRCCODEPAGE)) {
+ && TranslateCharsetInfo((DWORD *)INT2PTR(lpCP), &lpCs, TCI_SRCCODEPAGE)) {
UpdateInputLanguage((int) lpCs.ciCharset);
}
@@ -277,7 +278,7 @@ TkWinXInit(
* Make sure we cleanup on finalize.
*/
- TkCreateExitHandler(TkWinXCleanup, (ClientData) hInstance);
+ TkCreateExitHandler(TkWinXCleanup, hInstance);
}
/*
@@ -300,7 +301,7 @@ void
TkWinXCleanup(
ClientData clientData)
{
- HINSTANCE hInstance = (HINSTANCE) clientData;
+ HINSTANCE hInstance = (HINSTANCE)clientData;
/*
* Clean up our own class.
@@ -430,7 +431,7 @@ TkWinGetPlatformId(void)
const char *
TkGetDefaultScreenName(
- Tcl_Interp *interp, /* Not used. */
+ TCL_UNUSED(Tcl_Interp *),
const char *screenName) /* If NULL, use default string. */
{
if ((screenName == NULL) || (screenName[0] == '\0')) {
@@ -463,17 +464,17 @@ TkWinDisplayChanged(
HDC dc;
Screen *screen;
- if (display == NULL || display->screens == NULL) {
+ if (display == NULL || ScreenOfDisplay(display, 0) == NULL) {
return;
}
- screen = display->screens;
+ screen = ScreenOfDisplay(display, 0);
dc = GetDC(NULL);
- screen->width = GetDeviceCaps(dc, HORZRES);
- screen->height = GetDeviceCaps(dc, VERTRES);
- screen->mwidth = MulDiv(screen->width, 254,
+ WidthOfScreen(screen) = GetDeviceCaps(dc, HORZRES);
+ HeightOfScreen(screen) = GetDeviceCaps(dc, VERTRES);
+ WidthMMOfScreen(screen) = MulDiv(WidthOfScreen(screen), 254,
GetDeviceCaps(dc, LOGPIXELSX) * 10);
- screen->mheight = MulDiv(screen->height, 254,
+ HeightMMOfScreen(screen) = MulDiv(HeightOfScreen(screen), 254,
GetDeviceCaps(dc, LOGPIXELSY) * 10);
/*
@@ -485,52 +486,52 @@ TkWinDisplayChanged(
* the HWND and we'll just get blank spots copied onto the screen.
*/
- screen->ext_data = INT2PTR(GetDeviceCaps(dc, PLANES));
- screen->root_depth = GetDeviceCaps(dc, BITSPIXEL) * PTR2INT(screen->ext_data);
+ screen->ext_data = (XExtData *)INT2PTR(GetDeviceCaps(dc, PLANES));
+ DefaultDepthOfScreen(screen) = GetDeviceCaps(dc, BITSPIXEL) * PTR2INT(screen->ext_data);
- if (screen->root_visual != NULL) {
- ckfree(screen->root_visual);
+ if (DefaultVisualOfScreen(screen) != NULL) {
+ ckfree(DefaultVisualOfScreen(screen));
}
- screen->root_visual = ckalloc(sizeof(Visual));
- screen->root_visual->visualid = 0;
+ DefaultVisualOfScreen(screen) = (Visual *)ckalloc(sizeof(Visual));
+ DefaultVisualOfScreen(screen)->visualid = 0;
if (GetDeviceCaps(dc, RASTERCAPS) & RC_PALETTE) {
- screen->root_visual->map_entries = GetDeviceCaps(dc, SIZEPALETTE);
- screen->root_visual->c_class = PseudoColor;
- screen->root_visual->red_mask = 0x0;
- screen->root_visual->green_mask = 0x0;
- screen->root_visual->blue_mask = 0x0;
- } else if (screen->root_depth == 4) {
- screen->root_visual->c_class = StaticColor;
- screen->root_visual->map_entries = 16;
- } else if (screen->root_depth == 8) {
- screen->root_visual->c_class = StaticColor;
- screen->root_visual->map_entries = 256;
- } else if (screen->root_depth == 12) {
- screen->root_visual->c_class = TrueColor;
- screen->root_visual->map_entries = 32;
- screen->root_visual->red_mask = 0xf0;
- screen->root_visual->green_mask = 0xf000;
- screen->root_visual->blue_mask = 0xf00000;
- } else if (screen->root_depth == 16) {
- screen->root_visual->c_class = TrueColor;
- screen->root_visual->map_entries = 64;
- screen->root_visual->red_mask = 0xf8;
- screen->root_visual->green_mask = 0xfc00;
- screen->root_visual->blue_mask = 0xf80000;
- } else if (screen->root_depth >= 24) {
- screen->root_visual->c_class = TrueColor;
- screen->root_visual->map_entries = 256;
- screen->root_visual->red_mask = 0xff;
- screen->root_visual->green_mask = 0xff00;
- screen->root_visual->blue_mask = 0xff0000;
+ DefaultVisualOfScreen(screen)->map_entries = GetDeviceCaps(dc, SIZEPALETTE);
+ DefaultVisualOfScreen(screen)->c_class = PseudoColor;
+ DefaultVisualOfScreen(screen)->red_mask = 0x0;
+ DefaultVisualOfScreen(screen)->green_mask = 0x0;
+ DefaultVisualOfScreen(screen)->blue_mask = 0x0;
+ } else if (DefaultDepthOfScreen(screen) == 4) {
+ DefaultVisualOfScreen(screen)->c_class = StaticColor;
+ DefaultVisualOfScreen(screen)->map_entries = 16;
+ } else if (DefaultDepthOfScreen(screen) == 8) {
+ DefaultVisualOfScreen(screen)->c_class = StaticColor;
+ DefaultVisualOfScreen(screen)->map_entries = 256;
+ } else if (DefaultDepthOfScreen(screen) == 12) {
+ DefaultVisualOfScreen(screen)->c_class = TrueColor;
+ DefaultVisualOfScreen(screen)->map_entries = 32;
+ DefaultVisualOfScreen(screen)->red_mask = 0xf0;
+ DefaultVisualOfScreen(screen)->green_mask = 0xf000;
+ DefaultVisualOfScreen(screen)->blue_mask = 0xf00000;
+ } else if (DefaultDepthOfScreen(screen) == 16) {
+ DefaultVisualOfScreen(screen)->c_class = TrueColor;
+ DefaultVisualOfScreen(screen)->map_entries = 64;
+ DefaultVisualOfScreen(screen)->red_mask = 0xf8;
+ DefaultVisualOfScreen(screen)->green_mask = 0xfc00;
+ DefaultVisualOfScreen(screen)->blue_mask = 0xf80000;
+ } else if (DefaultDepthOfScreen(screen) >= 24) {
+ DefaultVisualOfScreen(screen)->c_class = TrueColor;
+ DefaultVisualOfScreen(screen)->map_entries = 256;
+ DefaultVisualOfScreen(screen)->red_mask = 0xff;
+ DefaultVisualOfScreen(screen)->green_mask = 0xff00;
+ DefaultVisualOfScreen(screen)->blue_mask = 0xff0000;
}
- screen->root_visual->bits_per_rgb = screen->root_depth;
+ DefaultVisualOfScreen(screen)->bits_per_rgb = DefaultDepthOfScreen(screen);
ReleaseDC(NULL, dc);
- if (screen->cmap != None) {
- XFreeColormap(display, screen->cmap);
+ if (DefaultColormapOfScreen(screen) != None) {
+ XFreeColormap(display, DefaultColormapOfScreen(screen));
}
- screen->cmap = XCreateColormap(display, None, screen->root_visual,
+ DefaultColormapOfScreen(screen) = XCreateColormap(display, None, DefaultVisualOfScreen(screen),
AllocNone);
}
@@ -555,10 +556,10 @@ TkDisplay *
TkpOpenDisplay(
const char *display_name)
{
+ Display *display;
Screen *screen;
TkWinDrawable *twdPtr;
- Display *display;
- ThreadSpecificData *tsdPtr =
+ ThreadSpecificData *tsdPtr = (ThreadSpecificData *)
Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));
DWORD initialWheelTick;
@@ -571,19 +572,19 @@ TkpOpenDisplay(
}
display = ckalloc(sizeof(Display));
- ZeroMemory(display, sizeof(Display));
+ memset(display, 0, sizeof(Display));
display->display_name = ckalloc(strlen(display_name) + 1);
strcpy(display->display_name, display_name);
display->cursor_font = 1;
display->nscreens = 1;
- display->request = 1;
+ LastKnownRequestProcessed(display) = 1;
display->qlen = 0;
screen = ckalloc(sizeof(Screen));
- ZeroMemory(screen, sizeof(Screen));
- screen->display = display;
+ memset(screen, 0, sizeof(Screen));
+ DisplayOfScreen(screen) = display;
/*
* Set up the root window.
@@ -596,15 +597,15 @@ TkpOpenDisplay(
twdPtr->type = TWD_WINDOW;
twdPtr->window.winPtr = NULL;
twdPtr->window.handle = NULL;
- screen->root = (Window)twdPtr;
+ RootWindowOfScreen(screen) = (Window)twdPtr;
/*
* Note that these pixel values are not palette relative.
*/
- screen->white_pixel = RGB(255, 255, 255);
- screen->black_pixel = RGB(0, 0, 0);
- screen->cmap = None;
+ WhitePixelOfScreen(screen) = RGB(255, 255, 255);
+ BlackPixelOfScreen(screen) = RGB(0, 0, 0);
+ DefaultColormapOfScreen(screen) = None;
display->screens = screen;
display->nscreens = 1;
@@ -613,7 +614,7 @@ TkpOpenDisplay(
TkWinDisplayChanged(display);
tsdPtr->winDisplay = ckalloc(sizeof(TkDisplay));
- ZeroMemory(tsdPtr->winDisplay, sizeof(TkDisplay));
+ memset(tsdPtr->winDisplay, 0, sizeof(TkDisplay));
tsdPtr->winDisplay->display = display;
tsdPtr->updatingClipboard = FALSE;
initialWheelTick = GetTickCount();
@@ -665,17 +666,17 @@ TkpCloseDisplay(
if (display->display_name != NULL) {
ckfree(display->display_name);
}
- if (display->screens != NULL) {
- if (display->screens->root_visual != NULL) {
- ckfree(display->screens->root_visual);
+ if (ScreenOfDisplay(display, 0) != NULL) {
+ if (DefaultVisualOfScreen(ScreenOfDisplay(display, 0)) != NULL) {
+ ckfree(DefaultVisualOfScreen(ScreenOfDisplay(display, 0)));
}
- if (display->screens->root != None) {
- ckfree(display->screens->root);
+ if (RootWindowOfScreen(ScreenOfDisplay(display, 0)) != None) {
+ ckfree(RootWindowOfScreen(ScreenOfDisplay(display, 0)));
}
- if (display->screens->cmap != None) {
- XFreeColormap(display, display->screens->cmap);
+ if (DefaultColormapOfScreen(ScreenOfDisplay(display, 0)) != None) {
+ XFreeColormap(display, DefaultColormapOfScreen(ScreenOfDisplay(display, 0)));
}
- ckfree(display->screens);
+ ckfree(ScreenOfDisplay(display, 0));
}
ckfree(display);
}
@@ -710,7 +711,7 @@ TkClipCleanup(
dispPtr->windowAtom);
Tk_DestroyWindow(dispPtr->clipWindow);
- Tcl_Release((ClientData) dispPtr->clipWindow);
+ Tcl_Release(dispPtr->clipWindow);
dispPtr->clipWindow = NULL;
}
}
@@ -733,8 +734,8 @@ TkClipCleanup(
int
XBell(
- Display *display,
- int percent)
+ TCL_UNUSED(Display *),
+ TCL_UNUSED(int))
{
MessageBeep(MB_OK);
return Success;
@@ -1021,7 +1022,7 @@ GenerateXEvent(
}
memset(&event.x, 0, sizeof(XEvent));
- event.x.xany.serial = winPtr->display->request++;
+ event.x.xany.serial = LastKnownRequestProcessed(winPtr->display)++;
event.x.xany.send_event = False;
event.x.xany.display = winPtr->display;
event.x.xany.window = winPtr->window;
@@ -1454,7 +1455,7 @@ GetTranslatedKey(
xkey->nbytes = 0;
- while ((xkey->nbytes < XMaxTransChars)
+ while ((xkey->nbytes < sizeof(xkey->trans_chars))
&& (PeekMessageA(&msg, NULL, type, type, PM_NOREMOVE) != 0)) {
if (msg.message != type) {
break;
@@ -1520,7 +1521,7 @@ UpdateInputLanguage(
if (keyInputCharset == charset) {
return;
}
- if (TranslateCharsetInfo(INT2PTR(charset), &charsetInfo,
+ if (TranslateCharsetInfo((DWORD*)INT2PTR(charset), &charsetInfo,
TCI_SRCCHARSET) == 0) {
/*
* Some mysterious failure.
@@ -1676,7 +1677,7 @@ HandleIMEComposition(
winPtr = (TkWindow *) Tk_HWNDToWindow(hwnd);
memset(&event, 0, sizeof(XEvent));
- event.xkey.serial = winPtr->display->request++;
+ event.xkey.serial = LastKnownRequestProcessed(winPtr->display)++;
event.xkey.send_event = -3;
event.xkey.display = winPtr->display;
event.xkey.window = winPtr->window;
@@ -1979,8 +1980,8 @@ Tk_SetCaretPos(
* Return the number of milliseconds the user was inactive.
*
* Results:
- * Milliseconds of user inactive time or -1 if the user32.dll doesn't
- * have the symbol GetLastInputInfo or GetLastInputInfo returns an error.
+ * Milliseconds of user inactive time or -1 if GetLastInputInfo
+ * returns an error.
*
* Side effects:
* None.
@@ -1990,12 +1991,12 @@ Tk_SetCaretPos(
long
Tk_GetUserInactiveTime(
- Display *dpy) /* Ignored on Windows */
+ TCL_UNUSED(Display *))
{
LASTINPUTINFO li;
li.cbSize = sizeof(li);
- if (!(BOOL)GetLastInputInfo(&li)) {
+ if (!GetLastInputInfo(&li)) {
return -1;
}
@@ -2017,7 +2018,7 @@ Tk_GetUserInactiveTime(
* none
*
* Side effects:
- * The user inactivity timer of the underlaying windowing system is reset
+ * The user inactivity timer of the underlying windowing system is reset
* to zero.
*
*----------------------------------------------------------------------
@@ -2025,7 +2026,7 @@ Tk_GetUserInactiveTime(
void
Tk_ResetUserInactiveTime(
- Display *dpy)
+ TCL_UNUSED(Display *))
{
INPUT inp;