From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 31922 invoked by alias); 23 Mar 2012 10:22:42 -0000 Received: (qmail 31891 invoked by uid 22791); 23 Mar 2012 10:22:31 -0000 X-SWARE-Spam-Status: No, hits=-1.4 required=5.0 tests=AWL,BAYES_00,TW_FN,TW_HW,TW_RG X-Spam-Check-By: sourceware.org Received: from outdoor.onevision.de (HELO outdoor.onevision.de) (212.77.172.51) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 23 Mar 2012 10:21:58 +0000 Received: from sanders.onevision.de (moonrace [212.77.172.62]) by outdoor.onevision.de (8.14.3/8.13.7/ROSCH/DDB) with ESMTP id q2NALos6012761 for ; Fri, 23 Mar 2012 11:21:55 +0100 Received: from [192.168.5.32] ([192.168.5.32]) by sanders.onevision.de (Lotus Domino Release 8.5.1FP3) with ESMTP id 2012032311214551-268 ; Fri, 23 Mar 2012 11:21:45 +0100 Message-ID: <4F6C4EB9.4000003@onevision.com> Date: Fri, 23 Mar 2012 10:22:00 -0000 From: Roland Schwingel User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0.2) Gecko/20120216 Thunderbird/10.0.2 MIME-Version: 1.0 To: insight@sourceware.org Subject: [PATCH] libgui: Make it compileable on windows with recent gcc versions and also on win64 Content-Type: multipart/mixed; boundary="------------000302020407020603050407" Mailing-List: contact insight-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: insight-owner@sourceware.org X-SW-Source: 2012-q1/txt/msg00034.txt.bz2 This is a multi-part message in MIME format. --------------000302020407020603050407 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-length: 3199 Hi... The attached patch fixes the major problems of libgui on native windows (mingw) regarding compilation and 64bit. It also adjusts to new tcl/tk versions. There are still some warnings left I have to adress later but in the current shape it runs here now successfully for some weeks. This is just a first rough version. More polishing here is needed. There are also a bunch dead code in which can be removed. Changelog: 2012-03-23 Roland Schwingel * src/subcommand.c,src/subcommand.h (subcommand_implementation,ide_create_command_with_subcommands): Make some params const to match tcl/tk changes. * src/tclcursor.c (get_cursor_size,get_cursor_position): Ditto. * src/tclmsgbox.c: Include windows.h early. (msgbox_init,msgbox_exit): Take care about encodings to windows functions. (msgbox_thread): Use correct api call here. (msgbox_internal,msgbox): Make CONST84 where needed. * src/tclwinmode.c (seterrormode_command): Ditto. * src/tclshellexe.c (shell_execute_command): Ditto. Plus correct cast return value to shut up 64bit gcc. * src/tclwinfont.c (win_choose_font): Make CONST84 where needed and use dedicated windows api. * src/tclwinprint.c (winprint_page_setup_command): Make const/CONST84 where needed. (winprint_print_text_options,winprint_print_text_invoke,winprint_print_command): Ditto. (winprint_print_text_invoke,): Ditto. (winprint_start,winprint_print_commandwinprint_abort_command): use dedicated windows structs/api. * src/tkTable.c: Obsolete old dprint stuff. (StringifyObjects,Tk_TableObjCmd,TableWidgetObjCmd,TableConfigure,TableFetchSelection): adjust const. (selCmdNames,commandNames,updateOpts): make const. * src/tkTable.h: Adjust windows includes. include stdint.h. define CONST86 if missing. Deine PTR2INT/INT2PTR taken from tcl if missing. Make some functions const. * src/tkTableCmds.c: Make bdCmdNames and clearnames CONST84. * src/tkTableEdit.c: Make modCmdNamesand rcCmdNames CONST84. * src/tkTableTag.c: Make tagCmdNames CONST84. (TableTagGetEntry): Make param argcv CONST84. (TableInitTags): Make some internal strings CONST84. (FindRowColTag): Ditto. (Table_TagCmd): Ditto. * src/tkTableUtil.c (TableOptionBdSet):Ditto. (TableOptionBdGet): Make retval CONST86. Fix ptr/int arithmetics. (Cmd_OptionSet): Make param value CONST84. (Cmd_OptionGet): Make retval CONST86. * src/tkTableWin.c (StickyPrintProc): Ditto. Make some internal strings CONST84. (StickyParseProc): Make param value CONST84. * src/tkWarpPointer.c: Include windows.h ahead of tk.h. (WarpPointer): Remove unused var. * src/tkWinPrintCanvas.c (PrintCanvasCmd): use dedicated windows structs/api. Fix casting. * src/tkWinPrintText.c (PrintTextCmd): Add #if case for compiling against tcl 8.5 and up. use dedicated windows structs/api. (ide_delete_print_text_command): Delete unused static function. (DisplayDLineToDrawable): Add #if case for compiling against tcl 8.5 and up. Fix casting. Any comments? Is this ok? Roland --------------000302020407020603050407 Content-Transfer-Encoding: 7bit Content-Type: text/plain; name="libgui_src.base.patch" Content-Disposition: attachment; filename="libgui_src.base.patch" Content-length: 31388 diff -ruN libgui_orig/src/subcommand.c libgui/src/subcommand.c --- libgui_orig/src/subcommand.c 2001-09-09 00:34:47.000000000 +0200 +++ libgui/src/subcommand.c 2012-02-24 13:53:50.760585300 +0100 @@ -34,7 +34,7 @@ table. */ static int subcommand_implementation (ClientData cd, Tcl_Interp *interp, - int argc, char *argv[]) + int argc,CONST84 char *argv[]) { struct subcommand_clientdata *data = (struct subcommand_clientdata *) cd; const struct ide_subcommand_table *commands = data->commands; @@ -90,7 +90,7 @@ /* Define a command with subcommands. */ int -ide_create_command_with_subcommands (Tcl_Interp *interp, char *name, +ide_create_command_with_subcommands (Tcl_Interp *interp, const char *name, const struct ide_subcommand_table *table, ClientData subdata, Tcl_CmdDeleteProc *delete) diff -ruN libgui_orig/src/subcommand.h libgui/src/subcommand.h --- libgui_orig/src/subcommand.h 2001-09-09 00:34:47.000000000 +0200 +++ libgui/src/subcommand.h 2012-02-24 13:52:36.539002400 +0100 @@ -21,7 +21,7 @@ /* Define a command with subcommands. */ int ide_create_command_with_subcommands - (Tcl_Interp *interp, char *name, const struct ide_subcommand_table *table, + (Tcl_Interp *interp, const char *name, const struct ide_subcommand_table *table, ClientData, Tcl_CmdDeleteProc *); #ifdef __cplusplus diff -ruN libgui_orig/src/tclcursor.c libgui/src/tclcursor.c --- libgui_orig/src/tclcursor.c 2001-09-09 00:34:47.000000000 +0200 +++ libgui/src/tclcursor.c 2012-02-24 14:02:44.176135300 +0100 @@ -25,7 +25,7 @@ #include "subcommand.h" static int -get_cursor_size (ClientData cd, Tcl_Interp *interp, int argc, char *argv[]) +get_cursor_size (ClientData cd, Tcl_Interp *interp, int argc,CONST84 char *argv[]) { char buf[30]; @@ -38,7 +38,7 @@ } static int -get_cursor_position (ClientData cd, Tcl_Interp *interp, int argc, char *argv[]) +get_cursor_position (ClientData cd, Tcl_Interp *interp, int argc,CONST84 char *argv[]) { POINT where; char buf[30]; diff -ruN libgui_orig/src/tclmsgbox.c libgui/src/tclmsgbox.c --- libgui_orig/src/tclmsgbox.c 2001-09-09 00:34:47.000000000 +0200 +++ libgui/src/tclmsgbox.c 2012-02-24 13:33:44.464962700 +0100 @@ -4,11 +4,11 @@ #ifdef _WIN32 +#include + #include #include -#include - /* FIXME: We use some internal Tcl and Tk Windows stuff. */ #include @@ -96,7 +96,7 @@ class.hInstance = TclWinGetTclInstance(); class.hbrBackground = NULL; class.lpszMenuName = NULL; - class.lpszClassName = "ide_messagebox"; + class.lpszClassName = TEXT("ide_messagebox"); class.lpfnWndProc = msgbox_wndproc; class.hIcon = NULL; class.hCursor = NULL; @@ -104,7 +104,7 @@ if (! RegisterClass (&class)) return TCL_ERROR; - hidden_hwnd = CreateWindow ("ide_messagebox", "ide_messagebox", WS_TILED, + hidden_hwnd = CreateWindow (TEXT("ide_messagebox"), TEXT("ide_messagebox"), WS_TILED, 0, 0, 0, 0, NULL, NULL, class.hInstance, NULL); if (hidden_hwnd == NULL) return TCL_ERROR; @@ -119,7 +119,7 @@ { if (hidden_hwnd != NULL) { - UnregisterClass ("ide_messagebox", TclWinGetTclInstance ()); + UnregisterClass (TEXT("ide_messagebox"), TclWinGetTclInstance ()); DestroyWindow (hidden_hwnd); hidden_hwnd = NULL; @@ -136,7 +136,7 @@ { struct msgbox_data *md = (struct msgbox_data *) arg; - md->result = MessageBox (md->hwnd, md->message, md->title, + md->result = MessageBoxA (md->hwnd, md->message, md->title, md->flags | MB_SETFOREGROUND); PostMessage (md->hidden_hwnd, MSGBOX_MESSAGE, 0, (LPARAM) arg); return 0; @@ -241,18 +241,18 @@ static int msgbox_internal (ClientData clientData, Tcl_Interp *interp, int argc, - char **argv, char *code) + CONST84 char **argv, CONST84 char *code) { int flags; Tk_Window parent = NULL; HWND hWnd; - char *message = ""; - char *title = ""; + CONST84 char *message = ""; + CONST84 char *title = ""; int icon = MB_ICONINFORMATION; int type = MB_OK; int modal = MB_SYSTEMMODAL; int i, j; - char *defaultBtn = NULL; + CONST84 char *defaultBtn = NULL; int defaultBtnIdx = -1; for (i=1; i 5) @@ -55,7 +55,7 @@ else dir = NULL; - ret = (int)ShellExecute(NULL, operation, file, param, dir, SW_SHOWNORMAL); + ret = (int)(ssize_t)ShellExecuteA(NULL, operation, file, param, dir, SW_SHOWNORMAL); if (ret <= 32) { Tcl_AppendResult(interp, strerror(ret), NULL); diff -ruN libgui_orig/src/tclwinfont.c libgui/src/tclwinfont.c --- libgui_orig/src/tclwinfont.c 2001-09-09 00:34:47.000000000 +0200 +++ libgui/src/tclwinfont.c 2012-02-24 13:42:41.393703800 +0100 @@ -50,13 +50,13 @@ /* Implement the ide_win_choose_font procedure. */ static int -win_choose_font (ClientData cd, Tcl_Interp *interp, int argc, char **argv) +win_choose_font (ClientData cd, Tcl_Interp *interp, int argc,CONST84 char **argv) { - char *deffont; + CONST84 char *deffont; Tk_Window parent; int i, oldMode; - CHOOSEFONT cf; - LOGFONT lf; + CHOOSEFONTA cf; + LOGFONTA lf; HDC hdc; HFONT hfont; char facebuf[LF_FACESIZE]; @@ -154,7 +154,7 @@ } oldMode = Tcl_SetServiceMode(TCL_SERVICE_ALL); - if (! ChooseFont (&cf)) + if (! ChooseFontA (&cf)) { DWORD code; @@ -191,7 +191,7 @@ specification it will wind up with the font that the user expects to see. Some of this code is taken from AllocFont. */ - hfont = CreateFontIndirect (&lf); + hfont = CreateFontIndirectA (&lf); if (hfont == NULL) { /* This should be impossible. */ @@ -208,7 +208,7 @@ hdc = GetDC (cf.hwndOwner); hfont = SelectObject (hdc, hfont); - GetTextFace (hdc, sizeof (facebuf), facebuf); + GetTextFaceA (hdc, sizeof (facebuf), facebuf); GetTextMetrics (hdc, &tm); Tcl_ResetResult (interp); diff -ruN libgui_orig/src/tclwinmode.c libgui/src/tclwinmode.c --- libgui_orig/src/tclwinmode.c 2001-09-09 00:34:47.000000000 +0200 +++ libgui/src/tclwinmode.c 2012-02-24 14:06:55.963738000 +0100 @@ -28,7 +28,7 @@ static int seterrormode_command (ClientData cd, Tcl_Interp *interp, - int argc, char *argv[]) + int argc, CONST84 char *argv[]) { #ifdef __CYGWIN32__ int len, i; diff -ruN libgui_orig/src/tclwinprint.c libgui/src/tclwinprint.c --- libgui_orig/src/tclwinprint.c 2001-09-09 00:34:47.000000000 +0200 +++ libgui/src/tclwinprint.c 2012-02-24 13:57:12.703864500 +0100 @@ -136,7 +136,7 @@ static int winprint_page_setup_command (ClientData cd, Tcl_Interp *interp, int argc, - char **argv) + CONST84 char **argv) { struct winprint_data *wd = (struct winprint_data *) cd; Tk_Window parent; @@ -258,13 +258,13 @@ /* Whether to use the print dialog. */ int dialog; /* The parent window. */ - char *parent; + const char *parent; /* The document name. */ - char *name; + const char *name; /* The page procedure. */ - char *pageproc; + const char *pageproc; /* The init procedure. This is called once before printing. */ - char *initproc; + const char *initproc; /* Print using PostScript? */ int postscript; }; @@ -273,7 +273,7 @@ static int winprint_print_text_options (struct winprint_data *wd, Tcl_Interp *interp, - int argc, char **argv, + int argc, const char **argv, struct print_text_options *pto) { int i; @@ -458,7 +458,7 @@ winprint_start (struct winprint_data *wd, Tcl_Interp *interp, PRINTDLG *pd, const struct print_text_options *pto, int *cancelled) { - DOCINFO di; + DOCINFOA di; *cancelled = 0; @@ -479,7 +479,7 @@ di.lpszDatatype = NULL; di.fwType = 0; - if (StartDoc (pd->hDC, &di) <= 0) + if (StartDocA (pd->hDC, &di) <= 0) { if (GetLastError () == ERROR_CANCELLED) *cancelled = 1; @@ -527,7 +527,7 @@ /* Invoke the query or page procedure for ide_winprint print_text. */ static int -winprint_print_text_invoke (Tcl_Interp *interp, char *proc, const char *name, +winprint_print_text_invoke (Tcl_Interp *interp, const char *proc, const char *name, enum winprint_query *result) { char *q; @@ -557,11 +557,11 @@ /* Implement ide_winprint print_text. */ static int winprint_print_command (ClientData cd, Tcl_Interp *interp, int argc, - char **argv) + CONST84 char **argv) { struct winprint_data *wd = (struct winprint_data *) cd; - char *queryproc; - char *textproc; + const char *queryproc; + const char *textproc; struct print_text_options pto; PRINTDLG pd; int cancelled; @@ -829,7 +829,7 @@ l = Tcl_GetStringFromObj (Tcl_GetObjResult (interp), &len); - TextOut (pd.hDC, left, y, l, len); + TextOutA (pd.hDC, left, y, l, len); y += lineheight; if (y >= bottom) @@ -890,7 +890,7 @@ static int winprint_abort_command (ClientData cd, Tcl_Interp *interp, int argc, - char **argv) + CONST84 char **argv) { struct winprint_data *wd = (struct winprint_data *) cd; diff -ruN libgui_orig/src/tkTable.c libgui/src/tkTable.c --- libgui_orig/src/tkTable.c 2001-09-09 00:34:47.000000000 +0200 +++ libgui/src/tkTable.c 2012-02-24 15:25:18.870312200 +0100 @@ -24,20 +24,16 @@ #include "tkTable.h" -#ifdef DEBUG -#include "dprint.h" -#endif - static char ** StringifyObjects _ANSI_ARGS_((int objc, - Tcl_Obj *CONST objv[])); + Tcl_Obj *const objv[])); static int Tk_TableObjCmd _ANSI_ARGS_((ClientData clientData, - Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])); + Tcl_Interp *interp, int objc, Tcl_Obj *const objv[])); static int TableWidgetObjCmd _ANSI_ARGS_((ClientData clientData, - Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])); + Tcl_Interp *interp, int objc, Tcl_Obj *const objv[])); static int TableConfigure _ANSI_ARGS_((Tcl_Interp *interp, - Table *tablePtr, int objc, Tcl_Obj *CONST objv[], + Table *tablePtr, int objc, Tcl_Obj *const objv[], int flags, int forceUpdate)); static void TableDestroy _ANSI_ARGS_((ClientData clientdata)); static void TableEventProc _ANSI_ARGS_((ClientData clientData, @@ -65,7 +61,7 @@ * enumerated types used to dispatch the widget command. */ -static char *selCmdNames[] = { +static const char *selCmdNames[] = { "anchor", "clear", "includes", "present", "set", (char *)NULL }; enum selCommand { @@ -73,7 +69,7 @@ CMD_SEL_SET }; -static char *commandNames[] = { +static const char *commandNames[] = { "activate", "bbox", "border", "cget", "clear", "configure", "curselection", "curvalue", "delete", "get", "height", "hidden", "icursor", "index", "insert", @@ -328,7 +324,7 @@ * Keep this in sync with the above values. */ -static char *updateOpts[] = { +static const char *updateOpts[] = { "-anchor", "-background", "-bg", "-bd", "-borderwidth", "-cache", "-command", "-colorigin", "-cols", "-colstretchmode", "-coltagcommand", @@ -1041,7 +1037,7 @@ /* Do the configuration */ argv = StringifyObjects(objc, objv); result = Tk_ConfigureWidget(interp, tablePtr->tkwin, tableSpecs, - objc, argv, (char *) tablePtr, flags); + objc, (CONST84 char **)argv, (char *) tablePtr, flags); ckfree((char *) argv); if (result != TCL_OK) { return TCL_ERROR; @@ -1679,12 +1675,6 @@ invalidY+invalidHeight-1, &rowTo, &colTo); tablePtr->flags &= ~AVOID_SPANS; -#ifdef DEBUG - tcl_dprintf(tablePtr->interp, "%d,%d => %d,%d", - rowFrom+tablePtr->rowOffset, colFrom+tablePtr->colOffset, - rowTo+tablePtr->rowOffset, colTo+tablePtr->colOffset); -#endif - /* * Initialize colTagsCache hash table to cache column tag names. */ @@ -3377,7 +3367,7 @@ Tcl_HashSearch search; int length, count, lastrow=0, needcs=0, r, c, listArgc, rslen=0, cslen=0; int numcols, numrows; - char **listArgv; + CONST84 char **listArgv; /* if we are not exporting the selection || * we have no data source, return */ diff -ruN libgui_orig/src/tkTable.h libgui/src/tkTable.h --- libgui_orig/src/tkTable.h 2001-09-09 00:34:47.000000000 +0200 +++ libgui/src/tkTable.h 2012-03-22 15:50:05.366470500 +0100 @@ -15,9 +15,26 @@ #ifndef _TKTABLE_H_ #define _TKTABLE_H_ +#ifdef WIN32 +# define WIN32_LEAN_AND_MEAN +# include +# undef WIN32_LEAN_AND_MEAN +/* VC++ has an entry point called DllMain instead of DllEntryPoint */ +# if defined(_MSC_VER) +# define DllEntryPoint DllMain +# endif +#endif + + #include #include +#include #include + +#ifndef CONST86 +# define CONST86 CONST84 +#endif + #ifdef MAC_TCL # include #else @@ -46,16 +63,6 @@ # define TCL_STORAGE_CLASS DLLIMPORT #endif -#ifdef WIN32 -# define WIN32_LEAN_AND_MEAN -# include -# undef WIN32_LEAN_AND_MEAN -/* VC++ has an entry point called DllMain instead of DllEntryPoint */ -# if defined(_MSC_VER) -# define DllEntryPoint DllMain -# endif -#endif - #if defined(WIN32) || defined(MAC_TCL) /* XSync call defined in the internals for some reason */ # ifndef XSync @@ -506,17 +513,17 @@ extern int TableOptionBdSet _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, Tk_Window tkwin, - char *value, char *widgRec, int offset)); -extern char * TableOptionBdGet _ANSI_ARGS_((ClientData clientData, + CONST84 char *value, char *widgRec, int offset)); +extern CONST86 char * TableOptionBdGet _ANSI_ARGS_((ClientData clientData, Tk_Window tkwin, char *widgRec, int offset, Tcl_FreeProc **freeProcPtr)); extern int TableTagConfigureBd _ANSI_ARGS_((Table *tablePtr, TableTag *tagPtr, char *oldValue, int nullOK)); extern int Cmd_OptionSet _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, - Tk_Window unused, char *value, + Tk_Window unused, CONST84 char *value, char *widgRec, int offset)); -extern char * Cmd_OptionGet _ANSI_ARGS_((ClientData clientData, +extern CONST86 char * Cmd_OptionGet _ANSI_ARGS_((ClientData clientData, Tk_Window unused, char *widgRec, int offset, Tcl_FreeProc **freeProcPtr)); @@ -631,6 +638,31 @@ (rowPtr), (colPtr)) /* + * Macros used to cast between pointers and integers (e.g. when storing an int + * in ClientData), on 64-bit architectures they avoid gcc warning about "cast + * to/from pointer from/to integer of different size". + */ + +#if !defined(INT2PTR) && !defined(PTR2INT) +# if defined(HAVE_INTPTR_T) || defined(intptr_t) +# define INT2PTR(p) ((void *)(intptr_t)(p)) +# define PTR2INT(p) ((int)(intptr_t)(p)) +# else +# define INT2PTR(p) ((void *)(p)) +# define PTR2INT(p) ((int)(p)) +# endif +#endif +#if !defined(UINT2PTR) && !defined(PTR2UINT) +# if defined(HAVE_UINTPTR_T) || defined(uintptr_t) +# define UINT2PTR(p) ((void *)(uintptr_t)(p)) +# define PTR2UINT(p) ((unsigned int)(uintptr_t)(p)) +# else +# define UINT2PTR(p) ((void *)(p)) +# define PTR2UINT(p) ((unsigned int)(p)) +# endif +#endif + +/* * end of header * reset TCL_STORAGE_CLASS to DLLIMPORT. */ diff -ruN libgui_orig/src/tkTableCmds.c libgui/src/tkTableCmds.c --- libgui_orig/src/tkTableCmds.c 2001-09-09 00:34:47.000000000 +0200 +++ libgui/src/tkTableCmds.c 2012-03-22 15:50:15.428488200 +0100 @@ -306,7 +306,7 @@ return TCL_OK; } -static char *bdCmdNames[] = { +static CONST84 char *bdCmdNames[] = { "mark", "dragto", (char *)NULL }; enum bdCmd { @@ -438,7 +438,7 @@ } /* clear subcommands */ -static char *clearNames[] = { +static CONST84 char *clearNames[] = { "all", "cache", "sizes", "tags", (char *)NULL }; enum clearCommand { diff -ruN libgui_orig/src/tkTableEdit.c libgui/src/tkTableEdit.c --- libgui_orig/src/tkTableEdit.c 2001-09-09 00:34:47.000000000 +0200 +++ libgui/src/tkTableEdit.c 2012-03-22 15:50:23.727702800 +0100 @@ -20,7 +20,7 @@ int outOfBounds)); /* insert/delete subcommands */ -static char *modCmdNames[] = { +static CONST84 char *modCmdNames[] = { "active", "cols", "rows", (char *)NULL }; enum modCmd { @@ -28,7 +28,7 @@ }; /* insert/delete row/col switches */ -static char *rcCmdNames[] = { +static CONST84 char *rcCmdNames[] = { "-keeptitles", "-holddimensions", "-holdselection", "-holdtags", "-holdwindows", "--", (char *) NULL diff -ruN libgui_orig/src/tkTableTag.c libgui/src/tkTableTag.c --- libgui_orig/src/tkTableTag.c 2002-06-07 10:59:44.000000000 +0200 +++ libgui/src/tkTableTag.c 2012-02-24 15:28:18.042081700 +0100 @@ -14,13 +14,13 @@ #include "tkTable.h" static TableTag *TableTagGetEntry _ANSI_ARGS_((Table *tablePtr, char *name, - int objc, char **argv)); + int objc, CONST84 char **argv)); static unsigned int TableTagGetPriority _ANSI_ARGS_((Table *tablePtr, TableTag *tagPtr)); static void TableImageProc _ANSI_ARGS_((ClientData clientData, int x, int y, int width, int height, int imageWidth, int imageHeight)); -static char *tagCmdNames[] = { +static CONST84 char *tagCmdNames[] = { "celltag", "cget", "coltag", "configure", "delete", "exists", "includes", "lower", "names", "raise", "rowtag", (char *) NULL }; @@ -436,7 +436,7 @@ *---------------------------------------------------------------------- */ static TableTag * -TableTagGetEntry(Table *tablePtr, char *name, int objc, char **argv) +TableTagGetEntry(Table *tablePtr, char *name, int objc, CONST84 char **argv) { Tcl_HashEntry *entryPtr; TableTag *tagPtr = NULL; @@ -516,12 +516,12 @@ void TableInitTags(Table *tablePtr) { - static char *activeArgs[] = {"-bg", ACTIVE_BG, "-relief", "flat" }; - static char *selArgs[] = {"-bg", SELECT_BG, "-fg", SELECT_FG, + static CONST84 char *activeArgs[] = {"-bg", ACTIVE_BG, "-relief", "flat" }; + static CONST84 char *selArgs[] = {"-bg", SELECT_BG, "-fg", SELECT_FG, "-relief", "sunken" }; - static char *titleArgs[] = {"-bg", DISABLED, "-fg", "white", + static CONST84 char *titleArgs[] = {"-bg", DISABLED, "-fg", "white", "-relief", "flat", "-state", "disabled" }; - static char *flashArgs[] = {"-bg", "red" }; + static CONST84 char *flashArgs[] = {"-bg", "red" }; /* * The order of creation is important to priority. */ @@ -568,7 +568,7 @@ sprintf(buf, " %d", cell); Tcl_Preserve((ClientData) interp); if (Tcl_VarEval(interp, cmd, buf, (char *)NULL) == TCL_OK) { - char *name = Tcl_GetStringResult(interp); + CONST84_RETURN char *name = Tcl_GetStringResult(interp); if (name && *name) { /* * If a result was returned, check to see if it is @@ -976,10 +976,10 @@ (char *) tagPtr, (objc == 5) ? Tcl_GetString(objv[4]) : NULL, 0); } else { - char **argv; + CONST84 char **argv; /* Stringify */ - argv = (char **) ckalloc((objc + 1) * sizeof(char *)); + argv = (CONST84 char **) ckalloc((objc + 1) * sizeof(char *)); for (i = 0; i < objc; i++) argv[i] = Tcl_GetString(objv[i]); argv[objc] = NULL; diff -ruN libgui_orig/src/tkTableUtil.c libgui/src/tkTableUtil.c --- libgui_orig/src/tkTableUtil.c 2001-09-09 00:34:48.000000000 +0200 +++ libgui/src/tkTableUtil.c 2012-02-24 12:27:11.311731300 +0100 @@ -41,16 +41,16 @@ ClientData clientData; /* Type of struct being set. */ Tcl_Interp *interp; /* Used for reporting errors. */ Tk_Window tkwin; /* Window containing table widget. */ - char *value; /* Value of option. */ + CONST84 char *value; /* Value of option. */ char *widgRec; /* Pointer to record for item. */ int offset; /* Offset into item. */ { char **borderStr; int *bordersPtr, *bdPtr; - int type = (int) clientData; + int type = PTR2INT(clientData); int result = TCL_OK; int argc; - char **argv; + CONST84 char **argv; if ((type == BD_TABLE) && (value[0] == '\0')) { @@ -137,7 +137,7 @@ *---------------------------------------------------------------------- */ -char * +CONST86 char * TableOptionBdGet(clientData, tkwin, widgRec, offset, freeProcPtr) ClientData clientData; /* Type of struct being set. */ Tk_Window tkwin; /* Window containing canvas widget. */ @@ -147,7 +147,7 @@ * information about how to reclaim * storage for return string. */ { - register int type = (int) clientData; + register int type = PTR2INT(clientData); if (type == BD_TABLE) { return ((TableTag *) (widgRec + offset))->borderStr; @@ -183,7 +183,7 @@ char *oldValue, int nullOK) { int i, argc, result = TCL_OK; - char **argv; + CONST84 char **argv; /* * First check to see if the value really changed. @@ -270,7 +270,7 @@ int Cmd_OptionSet(ClientData clientData, Tcl_Interp *interp, - Tk_Window unused, char *value, char *widgRec, int offset) + Tk_Window unused, CONST84 char *value, char *widgRec, int offset) { Cmd_Struct *p = (Cmd_Struct *)clientData; int mode = Cmd_GetValue(p,value); @@ -297,7 +297,7 @@ *---------------------------------------------------------------------- */ -char * +CONST86 char * Cmd_OptionGet(ClientData clientData, Tk_Window unused, char *widgRec, int offset, Tcl_FreeProc **freeProcPtr) { diff -ruN libgui_orig/src/tkTableWin.c libgui/src/tkTableWin.c --- libgui_orig/src/tkTableWin.c 2001-09-09 00:34:48.000000000 +0200 +++ libgui/src/tkTableWin.c 2012-02-24 15:29:04.600424800 +0100 @@ -15,9 +15,9 @@ #include "tkTable.h" static int StickyParseProc _ANSI_ARGS_((ClientData clientData, - Tcl_Interp *interp, Tk_Window tkwin, char *value, + Tcl_Interp *interp, Tk_Window tkwin, CONST84 char *value, char *widgRec, int offset)); -static char * StickyPrintProc _ANSI_ARGS_((ClientData clientData, +static CONST86 char * StickyPrintProc _ANSI_ARGS_((ClientData clientData, Tk_Window tkwin, char *widgRec, int offset, Tcl_FreeProc **freeProcPtr)); @@ -43,7 +43,7 @@ }; /* windows subcommands */ -static char *winCmdNames[] = { +static const char *winCmdNames[] = { "cget", "configure", "delete", "move", "names", (char *) NULL }; enum winCommand { @@ -117,7 +117,7 @@ * *---------------------------------------------------------------------- */ -static char * +static CONST86 char * StickyPrintProc(clientData, tkwin, widgRec, offset, freeProcPtr) ClientData clientData; /* Ignored. */ Tk_Window tkwin; /* Window for text widget. */ @@ -163,7 +163,7 @@ ClientData clientData; /* Not used.*/ Tcl_Interp *interp; /* Used for reporting errors. */ Tk_Window tkwin; /* Window for text widget. */ - char *value; /* Value of option. */ + CONST84 char *value; /* Value of option. */ char *widgRec; /* Pointer to TkTextEmbWindow * structure. */ int offset; /* Offset into item (ignored). */ @@ -615,19 +615,19 @@ Tcl_Interp *interp = tablePtr->interp; Tk_Window oldWindow; int i, result; - char **argv; + const char **argv; oldWindow = ewPtr->tkwin; /* Stringify */ - argv = (char **) ckalloc((objc + 1) * sizeof(char *)); + argv = (const char **) ckalloc((objc + 1) * sizeof(char *)); for (i = 0; i < objc; i++) argv[i] = Tcl_GetString(objv[i]); argv[i] = NULL; result = Tk_ConfigureWidget(interp, tablePtr->tkwin, winConfigSpecs, objc, argv, (char *) ewPtr, TK_CONFIG_ARGV_ONLY); - ckfree((char *) argv); + ckfree((const char *) argv); if (result != TCL_OK) { return TCL_ERROR; } diff -ruN libgui_orig/src/tkWarpPointer.c libgui/src/tkWarpPointer.c --- libgui_orig/src/tkWarpPointer.c 2001-09-09 00:34:48.000000000 +0200 +++ libgui/src/tkWarpPointer.c 2012-02-24 15:29:15.586078900 +0100 @@ -24,12 +24,13 @@ * * * ---------------------------------------------------------------------------*/ -#include "tk.h" #ifdef _WIN32 #include #include #endif +#include "tk.h" + int WarpPointer (clientData, interp, objc, objv) ClientData clientData; @@ -39,7 +40,6 @@ { Tk_Window tkwin; int x, y; - char *str; if (objc != 4) { Tcl_WrongNumArgs(interp, 1, objv, "widgetId x y"); diff -ruN libgui_orig/src/tkWinPrintCanvas.c libgui/src/tkWinPrintCanvas.c --- libgui_orig/src/tkWinPrintCanvas.c 2001-09-09 00:34:48.000000000 +0200 +++ libgui/src/tkWinPrintCanvas.c 2012-02-24 14:01:44.848274800 +0100 @@ -52,7 +52,7 @@ int tiles_wide,tiles_high; int tile_y, tile_x; int screenX1, screenX2, screenY1, screenY2, width, height; - DOCINFO *lpdi = (DOCINFO *) ckalloc(sizeof(DOCINFO)); + DOCINFOA *lpdi = (DOCINFOA *) ckalloc(sizeof(DOCINFOA)); if (argc < 2) { Tcl_AppendResult(interp, "wrong # args: should be \"", @@ -75,7 +75,7 @@ memset(lpdi,0,sizeof(DOCINFO)); lpdi->cbSize=sizeof(DOCINFO); lpdi->lpszDocName= (LPCSTR) ckalloc(255); - sprintf((char*)lpdi->lpszDocName,"SN - Printing\0"); + strcpy((char *)lpdi->lpszDocName,"SN - Printing"); lpdi->lpszOutput=NULL; canvasPtr = (TkCanvas *)(canvCmd.clientData); @@ -144,7 +144,7 @@ tiles_high = ( widget_Y_size / page_Y_size ); /* start at zero */ tiles_wide = ( widget_X_size / page_X_size ); /* start at zero */ - StartDoc(pd.hDC,lpdi); + StartDocA(pd.hDC,lpdi); for (tile_x = 0; tile_x <= tiles_wide;tile_x++) { for (tile_y = 0; tile_y <= tiles_high;tile_y++) { @@ -154,7 +154,7 @@ for (itemPtr = canvasPtr->firstItemPtr; itemPtr != NULL; itemPtr = itemPtr->nextPtr) { (*itemPtr->typePtr->displayProc)((Tk_Canvas) canvasPtr, itemPtr, - canvasPtr->display, (unsigned long) PrinterDrawable/*pixmap*/, screenX1, screenY1, width, + canvasPtr->display, (Drawable) PrinterDrawable/*pixmap*/, screenX1, screenY1, width, height); } diff -ruN libgui_orig/src/tkWinPrintText.c libgui/src/tkWinPrintText.c --- libgui_orig/src/tkWinPrintText.c 2001-09-09 00:34:48.000000000 +0200 +++ libgui/src/tkWinPrintText.c 2012-03-22 13:56:42.037502500 +0100 @@ -243,13 +243,11 @@ DLine *dlPtr; TkWinDrawable *PrinterDrawable; Tk_Window tkwin; - Tk_Item *itemPtr; int maxHeight; DLine *prevPtr; Pixmap pixmap; - int bottomY = 0; /* Initialization needed only to stop - * compiler warnings. */ - DOCINFO *lpdi = (DOCINFO *) ckalloc(sizeof(DOCINFO)); + + DOCINFOA *lpdi = (DOCINFOA *) ckalloc(sizeof(DOCINFOA)); TkTextIndex first, last; int numLines; HDC hDCpixmap; @@ -292,7 +290,7 @@ memset(lpdi,0,sizeof(DOCINFO)); lpdi->cbSize=sizeof(DOCINFO); lpdi->lpszDocName = (LPCSTR) ckalloc(255); - sprintf((char*)lpdi->lpszDocName,"SN - Printing\0"); + strcpy((char*)lpdi->lpszDocName,"SN - Printing\0"); lpdi->lpszOutput=NULL; textPtr = (TkText *)(textCmd.clientData); @@ -358,16 +356,24 @@ /* Make the text widget big enough for all the text to be seen. */ +#if (TCL_MAJOR_VERSION >= 8) && (TCL_MINOR_VERSION >= 5) + numLines = TkBTreeNumLines(textPtr->sharedTextPtr->tree,textPtr); + TkTextMakeByteIndex(textPtr->sharedTextPtr->tree, textPtr, 0, 0, &first); + TkTextMakeByteIndex(textPtr->sharedTextPtr->tree, textPtr, numLines, 100, &last); + TkTextChanged(textPtr->sharedTextPtr, textPtr, &first, &last); +#elif (TCL_MAJOR_VERSION >= 8) && (TCL_MINOR_VERSION >= 1) numLines = TkBTreeNumLines(textPtr->tree); -#if (TCL_MAJOR_VERSION >= 8) && (TCL_MINOR_VERSION >= 1) TkTextMakeByteIndex(textPtr->tree, 0, 0, &first); TkTextMakeByteIndex(textPtr->tree, numLines, 100, &last); + TkTextChanged(textPtr, &first, &last); #else + numLines = TkBTreeNumLines(textPtr->tree); TkTextMakeIndex(textPtr->tree, 0, 0, &first); TkTextMakeIndex(textPtr->tree, numLines, 100, &last); -#endif TkTextChanged(textPtr, &first, &last); - +#endif /* * Set the display info flag to out-of-date. */ @@ -403,7 +409,7 @@ tiles_high = ( maxHeight / page_Y_size ); /* start at page zero */ - StartDoc(pd.hDC,lpdi); + StartDocA(pd.hDC,lpdi); for (tile_y = 0; tile_y <= tiles_high;tile_y++) { SetViewportOrgEx(pd.hDC,0,-(tile_y*Ptr_pixY),NULL); @@ -437,8 +443,13 @@ /* * Pitch the info again. */ + #if (TCL_MAJOR_VERSION >= 8) && (TCL_MINOR_VERSION >= 5) + TkTextChanged(textPtr->sharedTextPtr,textPtr, &first, &last); + #else TkTextChanged(textPtr, &first, &last); - + #endif /* * Display info not valid anymore. */ @@ -455,14 +466,6 @@ return TCL_ERROR; } - - -static void -ide_delete_print_text_command(ClientData clientData) -{ - /* destructor code here.*/ -} - int ide_create_print_text_command (Tcl_Interp *interp) { @@ -498,7 +501,7 @@ register TkTextDispChunk *chunkPtr; TextDInfo *dInfoPtr = textPtr->dInfoPtr; Display *display; - int height, x; + int x; /* * First, clear the area of the line to the background color for the @@ -518,21 +521,36 @@ continue; } else { x = chunkPtr->x + dInfoPtr->x - dInfoPtr->curPixelOffset; + #if (TCL_MAJOR_VERSION >= 8) && (TCL_MINOR_VERSION >= 5) + if ((x + chunkPtr->width <= 0) || (x >= dInfoPtr->maxX)) { + (*chunkPtr->displayProc)(textPtr, chunkPtr, -chunkPtr->width, + dlPtr->y, + dlPtr->height - dlPtr->spaceAbove - dlPtr->spaceBelow, + dlPtr->baseline - dlPtr->spaceAbove, display, (Drawable)drawable, + dlPtr->y + dlPtr->spaceAbove); + } else { + (*chunkPtr->displayProc)(textPtr, chunkPtr, x, dlPtr->y, + dlPtr->height - dlPtr->spaceAbove - dlPtr->spaceBelow, + dlPtr->baseline - dlPtr->spaceAbove, display, (Drawable)drawable, + dlPtr->y + dlPtr->spaceAbove); + } + #else if ((x + chunkPtr->width <= 0) || (x >= dInfoPtr->maxX)) { (*chunkPtr->displayProc)(chunkPtr, -chunkPtr->width, dlPtr->y, dlPtr->height - dlPtr->spaceAbove - dlPtr->spaceBelow, - dlPtr->baseline - dlPtr->spaceAbove, display, (unsigned long)drawable, + dlPtr->baseline - dlPtr->spaceAbove, display, (Drawable)drawable, dlPtr->y + dlPtr->spaceAbove); } else { (*chunkPtr->displayProc)(chunkPtr, x, dlPtr->y, dlPtr->height - dlPtr->spaceAbove - dlPtr->spaceBelow, - dlPtr->baseline - dlPtr->spaceAbove, display, (unsigned long)drawable, + dlPtr->baseline - dlPtr->spaceAbove, display, (Drawable)drawable, dlPtr->y + dlPtr->spaceAbove); } + #endif } } } -#endif /* _WIN */ +#endif /* _WIN32 */ --------------000302020407020603050407--