diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2023-01-02 15:58:57 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2023-01-02 15:58:57 (GMT) |
commit | 55091eb14914c24bbae66062f600e2ec17b3352b (patch) | |
tree | fbf3d1dda6b1c4120ea8de8abb0cca9a64c695e1 /win/tkWinX.c | |
parent | 73d95cf6f972ef7af3b41b2d80f1f7ba62f41878 (diff) | |
download | tk-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.c | 165 |
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; |