* Apply 3 changes based on revisions developed by the fedora linux team. + 03-fedora-patch-2.diff --> + 04-fedora-tk8.5.6.patch.diff + 05-tk8.5-zoomstack.diff * Those patches are required to solve segmentation faults that are observed when blt is used with tcltk 8.5. We have a substantial amount of experience using this patched version of blt in the Swarm Simulation System (www.swarm.org) and have observed no ill-effects. Author: Paul E. Johnson (Debian Packaging) --- a/generic/bltTreeViewEdit.c +++ b/generic/bltTreeViewEdit.c @@ -1177,9 +1177,15 @@ rightPos = count; if ((rightPos < tbPtr->selFirst) || (leftPos > tbPtr->selLast)) { /* No part of the text fragment is selected. */ +#ifdef TK_DRAWCHARS_ANGLE + Tk_DrawChars(tbPtr->display, drawable, tbPtr->gc, + tbPtr->font, fragPtr->text, fragPtr->count, + x + fragPtr->x, y + fragPtr->y, 0.); +#else Tk_DrawChars(tbPtr->display, drawable, tbPtr->gc, tbPtr->font, fragPtr->text, fragPtr->count, x + fragPtr->x, y + fragPtr->y); +#endif continue; } @@ -1221,9 +1227,15 @@ width, fontMetrics.linespace, tbPtr->selBorderWidth, tbPtr->selRelief); } +#ifdef TK_DRAWCHARS_ANGLE + Tk_DrawChars(Tk_Display(tbPtr->tkwin), drawable, tbPtr->gc, + tbPtr->font, fragPtr->text, fragPtr->count, + fragPtr->x + x, fragPtr->y + y, 0.); +#else Tk_DrawChars(Tk_Display(tbPtr->tkwin), drawable, tbPtr->gc, tbPtr->font, fragPtr->text, fragPtr->count, fragPtr->x + x, fragPtr->y + y); +#endif } if ((tbPtr->flags & TEXTBOX_FOCUS) && (tbPtr->cursorOn)) { int left, top, right, bottom; --- a/generic/bltGrPs.c +++ b/generic/bltGrPs.c @@ -418,7 +418,7 @@ return Tk_ConfigureInfo(interp, graphPtr->tkwin, configSpecs, (char *)psPtr, argv[3], flags); } - if (Tk_ConfigureWidget(interp, graphPtr->tkwin, configSpecs, argc - 3, + if (Blt_ConfigureWidget(interp, graphPtr->tkwin, configSpecs, argc - 3, argv + 3, (char *)psPtr, flags) != TCL_OK) { return TCL_ERROR; } @@ -1124,7 +1124,7 @@ fileName = argv[3]; /* First argument is the file name. */ argv++, argc--; } - if (Tk_ConfigureWidget(interp, graphPtr->tkwin, configSpecs, argc - 3, + if (Blt_ConfigureWidget(interp, graphPtr->tkwin, configSpecs, argc - 3, argv + 3, (char *)psPtr, TK_CONFIG_ARGV_ONLY) != TCL_OK) { return TCL_ERROR; } --- a/generic/bltGrPen.c +++ b/generic/bltGrPen.c @@ -215,7 +215,7 @@ Tcl_FreeProc **freeProcPtr; /* Not used. */ { Pen *penPtr = *(Pen **)(widgRec + offset); - + if ( ! penPtr ) return NULL; return penPtr->name; } @@ -510,7 +510,7 @@ return Tk_ConfigureInfo(interp, graphPtr->tkwin, penPtr->configSpecs, (char *)penPtr, options[0], flags); } - if (Tk_ConfigureWidget(interp, graphPtr->tkwin, penPtr->configSpecs, + if (Blt_ConfigureWidget(interp, graphPtr->tkwin, penPtr->configSpecs, nOpts, options, (char *)penPtr, flags) != TCL_OK) { break; } --- a/generic/bltGrHairs.c +++ b/generic/bltGrHairs.c @@ -390,7 +390,7 @@ return Tk_ConfigureInfo(interp, graphPtr->tkwin, configSpecs, (char *)chPtr, argv[3], 0); } - if (Tk_ConfigureWidget(interp, graphPtr->tkwin, configSpecs, argc - 3, + if (Blt_ConfigureWidget(interp, graphPtr->tkwin, configSpecs, argc - 3, argv + 3, (char *)chPtr, TK_CONFIG_ARGV_ONLY) != TCL_OK) { return TCL_ERROR; } --- a/generic/bltGraph.c +++ b/generic/bltGraph.c @@ -944,7 +944,7 @@ if (InitPens(graphPtr) != TCL_OK) { goto error; } - if (Tk_ConfigureWidget(interp, tkwin, configSpecs, argc - 2, argv + 2, + if (Blt_ConfigureWidget(interp, tkwin, configSpecs, argc - 2, argv + 2, (char *)graphPtr, 0) != TCL_OK) { goto error; } @@ -1094,7 +1094,7 @@ return Tk_ConfigureInfo(interp, graphPtr->tkwin, configSpecs, (char *)graphPtr, argv[2], flags); } else { - if (Tk_ConfigureWidget(interp, graphPtr->tkwin, configSpecs, argc - 2, + if (Blt_ConfigureWidget(interp, graphPtr->tkwin, configSpecs, argc - 2, argv + 2, (char *)graphPtr, flags) != TCL_OK) { return TCL_ERROR; } --- a/generic/bltUnixDnd.c +++ b/generic/bltUnixDnd.c @@ -1834,7 +1834,7 @@ unsigned long gcMask; Tk_MakeWindowExist(tokenPtr->tkwin); - if (Tk_ConfigureWidget(interp, tokenPtr->tkwin, tokenConfigSpecs, argc, + if (Blt_ConfigureWidget(interp, tokenPtr->tkwin, tokenConfigSpecs, argc, argv, (char *)tokenPtr, flags) != TCL_OK) { return TCL_ERROR; } @@ -3777,7 +3777,7 @@ return Tk_ConfigureInfo(interp, dndPtr->tkwin, configSpecs, (char *)dndPtr, argv[3], flags); } - if (Tk_ConfigureWidget(interp, dndPtr->tkwin, configSpecs, argc - 3, + if (Blt_ConfigureWidget(interp, dndPtr->tkwin, configSpecs, argc - 3, argv + 3, (char *)dndPtr, flags) != TCL_OK) { return TCL_ERROR; } @@ -4440,7 +4440,7 @@ dndPtr->hashPtr = hPtr; dndPtr->dataPtr = dataPtr; Blt_SetHashValue(hPtr, dndPtr); - if (Tk_ConfigureWidget(interp, dndPtr->tkwin, configSpecs, argc - 3, + if (Blt_ConfigureWidget(interp, dndPtr->tkwin, configSpecs, argc - 3, argv + 3, (char *)dndPtr, 0) != TCL_OK) { return TCL_ERROR; } --- a/generic/bltCanvEps.c +++ b/generic/bltCanvEps.c @@ -1147,7 +1147,7 @@ int width, height; tkwin = Tk_CanvasTkwin(canvas); - if (Tk_ConfigureWidget(interp, tkwin, configSpecs, argc, + if (Blt_ConfigureWidget(interp, tkwin, configSpecs, argc, argv, (char *)epsPtr, flags) != TCL_OK) { return TCL_ERROR; } @@ -1974,10 +1974,10 @@ { "eps", /* name */ sizeof(EpsItem), /* itemSize */ - CreateEps, /* createProc */ + (Tk_ItemCreateProc *)CreateEps, /* createProc */ configSpecs, /* configSpecs */ - ConfigureEps, /* configureProc */ - EpsCoords, /* coordProc */ + (Tk_ItemConfigureProc *)ConfigureEps, /* configureProc */ + (Tk_ItemCoordProc *)EpsCoords, /* coordProc */ DeleteEps, /* deleteProc */ DisplayEps, /* displayProc */ #ifdef USE_OLD_CANVAS @@ -2005,6 +2005,6 @@ { Tk_CreateItemType(&epsItemType); /* Initialize custom canvas option routines. */ - tagsOption.parseProc = Tk_CanvasTagsParseProc; - tagsOption.printProc = Tk_CanvasTagsPrintProc; + tagsOption.parseProc = (Tk_OptionParseProc *)Tk_CanvasTagsParseProc; + tagsOption.printProc = (Tk_OptionPrintProc *)Tk_CanvasTagsPrintProc; } --- a/generic/bltScrollbar.c +++ b/generic/bltScrollbar.c @@ -913,7 +913,7 @@ GC new; Tk_Image image; - if (Tk_ConfigureWidget(interp, scrollPtr->tkwin, configSpecs, + if (Blt_ConfigureWidget(interp, scrollPtr->tkwin, configSpecs, argc, argv, (char *)scrollPtr, flags) != TCL_OK) { return TCL_ERROR; } --- a/generic/bltTreeViewStyle.c +++ b/generic/bltTreeViewStyle.c @@ -560,6 +560,11 @@ } /*ARGSUSED*/ + +int +Blt_TreeViewTextbox(TreeView *tvPtr, + TreeViewEntry *entryPtr, + TreeViewColumn *columnPtr); static int FreeIcon(clientData, display, widgRec, offset, oldPtr) ClientData clientData; --- a/generic/bltDragdrop.c +++ b/generic/bltDragdrop.c @@ -1065,7 +1065,7 @@ Token *tokenPtr; tokenPtr = &(srcPtr->token); - if (Tk_ConfigureWidget(interp, srcPtr->tkwin, tokenConfigSpecs, argc, argv, + if (Blt_ConfigureWidget(interp, srcPtr->tkwin, tokenConfigSpecs, argc, argv, (char *)tokenPtr, TK_CONFIG_ARGV_ONLY) != TCL_OK) { return TCL_ERROR; } @@ -1293,7 +1293,7 @@ /* * Handle the bulk of the options... */ - if (Tk_ConfigureWidget(interp, srcPtr->tkwin, configSpecs, argc, argv, + if (Blt_ConfigureWidget(interp, srcPtr->tkwin, configSpecs, argc, argv, (char *)srcPtr, flags) != TCL_OK) { return TCL_ERROR; } --- a/generic/bltAlloc.c +++ b/generic/bltAlloc.c @@ -40,14 +40,23 @@ * Tcl_Alloc/Tcl_Free routines because they don't automatically cause * a panic when not enough memory is available. There are cases (such * as allocating a very large vector) where it's recoverable. + * + * Using private is dangerous. + * Tcl changes mem functions for debug which will conflict then with BLT + * stick to public API */ -EXTERN Blt_MallocProc TclpAlloc; -EXTERN Blt_FreeProc TclpFree; -EXTERN Blt_ReallocProc TclpRealloc; +//EXTERN Blt_MallocProc TclpAlloc; +//EXTERN Blt_FreeProc TclpFree; +//EXTERN Blt_ReallocProc TclpRealloc; + +//Blt_MallocProc *Blt_MallocProcPtr = TclpAlloc; +//Blt_FreeProc *Blt_FreeProcPtr = TclpFree; +//Blt_ReallocProc *Blt_ReallocProcPtr = TclpRealloc; + +Blt_MallocProc *Blt_MallocProcPtr = (Blt_MallocProc *)Tcl_Alloc; +Blt_FreeProc *Blt_FreeProcPtr = (Blt_FreeProc *)Tcl_Free; +Blt_ReallocProc *Blt_ReallocProcPtr = (Blt_ReallocProc *)Tcl_Realloc; -Blt_MallocProc *Blt_MallocProcPtr = TclpAlloc; -Blt_FreeProc *Blt_FreeProcPtr = TclpFree; -Blt_ReallocProc *Blt_ReallocProcPtr = TclpRealloc; #else Blt_MallocProc *Blt_MallocProcPtr = malloc; --- a/generic/bltGrLegd.c +++ b/generic/bltGrLegd.c @@ -1406,7 +1406,7 @@ return Tk_ConfigureInfo(interp, graphPtr->tkwin, configSpecs, (char *)legendPtr, argv[3], flags); } - if (Tk_ConfigureWidget(interp, graphPtr->tkwin, configSpecs, argc - 3, + if (Blt_ConfigureWidget(interp, graphPtr->tkwin, configSpecs, argc - 3, argv + 3, (char *)legendPtr, flags) != TCL_OK) { return TCL_ERROR; } --- a/generic/bltHierbox.c +++ b/generic/bltHierbox.c @@ -3321,7 +3321,7 @@ XColor *colorPtr; hierBox = hboxPtr; - if (Tk_ConfigureWidget(hboxPtr->interp, hboxPtr->tkwin, entryConfigSpecs, + if (Blt_ConfigureWidget(hboxPtr->interp, hboxPtr->tkwin, entryConfigSpecs, argc, argv, (char *)entryPtr, flags) != TCL_OK) { return TCL_ERROR; } @@ -3935,7 +3935,7 @@ Tk_Uid nameId; Pixmap bitmap; hierBox = hboxPtr; - if (Tk_ConfigureWidget(interp, hboxPtr->tkwin, configSpecs, argc, argv, + if (Blt_ConfigureWidget(interp, hboxPtr->tkwin, configSpecs, argc, argv, (char *)hboxPtr, flags) != TCL_OK) { return TCL_ERROR; } @@ -4443,7 +4443,7 @@ Drawable drawable; /* Pixmap or window to draw into. */ { Entry *entryPtr; /* Entry to be drawn. */ - int x1, y1, x2, y2; + int x1, y1i, x2, y2; int height; int x, y; @@ -4463,22 +4463,22 @@ y += (height - hboxPtr->button.height) / 2; x1 = x2 = x + LEVELWIDTH(treePtr->level) + LEVELWIDTH(treePtr->level + 1) / 2; - y1 = y + hboxPtr->button.height / 2; - y2 = y1 + entryPtr->lineHeight; + y1i = y + hboxPtr->button.height / 2; + y2 = y1i + entryPtr->lineHeight; if ((treePtr == hboxPtr->rootPtr) && (hboxPtr->hideRoot)) { - y1 += entryPtr->height; + y1i += entryPtr->height; } /* * Clip the line's Y-coordinates at the window border. */ - if (y1 < 0) { - y1 = 0; + if (y1i < 0) { + y1i = 0; } if (y2 > Tk_Height(hboxPtr->tkwin)) { y2 = Tk_Height(hboxPtr->tkwin); } - if ((y1 < Tk_Height(hboxPtr->tkwin)) && (y2 > 0)) { - XDrawLine(hboxPtr->display, drawable, hboxPtr->lineGC, x1, y1, + if ((y1i < Tk_Height(hboxPtr->tkwin)) && (y2 > 0)) { + XDrawLine(hboxPtr->display, drawable, hboxPtr->lineGC, x1, y1i, x2, y2); } } @@ -4788,17 +4788,17 @@ x, y); } if ((isFocused) && (hboxPtr->focusEdit) && (editPtr->cursorOn)) { - int x1, y1, x2, y2; + int x1, y1i, x2, y2; GetCursorLocation(hboxPtr, treePtr); x1 = x + editPtr->x; x2 = x1 + 3; - y1 = y + editPtr->y - 1; - y2 = y1 + editPtr->height - 1; + y1i = y + editPtr->y - 1; + y2 = y1i + editPtr->height - 1; XDrawLine(hboxPtr->display, drawable, entryPtr->labelGC, - x1, y1, x1, y2); + x1, y1i, x1, y2); XDrawLine(hboxPtr->display, drawable, entryPtr->labelGC, - x1 - 2, y1, x2, y1); + x1 - 2, y1i, x2, y1i); XDrawLine(hboxPtr->display, drawable, entryPtr->labelGC, x1 - 2, y2, x2, y2); } @@ -4859,7 +4859,7 @@ int width, height; int entryHeight; int buttonY; - int x1, y1, x2, y2; + int x1, y1i, x2, y2; Entry *entryPtr; entryPtr = treePtr->entryPtr; @@ -4875,7 +4875,7 @@ buttonY = y + entryPtr->buttonY; x1 = x + (width / 2); - y1 = y2 = buttonY + (buttonPtr->height / 2); + y1i = y2 = buttonY + (buttonPtr->height / 2); x2 = x1 + (LEVELWIDTH(treePtr->level) + LEVELWIDTH(treePtr->level + 1)) / 2; if ((treePtr->parentPtr != NULL) && (hboxPtr->lineWidth > 0)) { @@ -4883,17 +4883,17 @@ * For every node except root, draw a horizontal line from * the vertical bar to the middle of the icon. */ - XDrawLine(hboxPtr->display, drawable, hboxPtr->lineGC, x1, y1, x2, y2); + XDrawLine(hboxPtr->display, drawable, hboxPtr->lineGC, x1, y1i, x2, y2); } if ((entryPtr->flags & ENTRY_OPEN) && (hboxPtr->lineWidth > 0)) { /* * Entry is open, draw vertical line. */ - y2 = y1 + entryPtr->lineHeight; + y2 = y1i + entryPtr->lineHeight; if (y2 > Tk_Height(hboxPtr->tkwin)) { y2 = Tk_Height(hboxPtr->tkwin); /* Clip line at window border. */ } - XDrawLine(hboxPtr->display, drawable, hboxPtr->lineGC, x2, y1, x2, y2); + XDrawLine(hboxPtr->display, drawable, hboxPtr->lineGC, x2, y1i, x2, y2); } if ((entryPtr->flags & ENTRY_BUTTON) && (treePtr->parentPtr != NULL)) { /* @@ -5506,7 +5506,7 @@ return Tk_ConfigureInfo(interp, hboxPtr->tkwin, buttonConfigSpecs, (char *)hboxPtr, argv[0], 0); } - if (Tk_ConfigureWidget(hboxPtr->interp, hboxPtr->tkwin, buttonConfigSpecs, + if (Blt_ConfigureWidget(hboxPtr->interp, hboxPtr->tkwin, buttonConfigSpecs, argc, argv, (char *)hboxPtr, TK_CONFIG_ARGV_ONLY) != TCL_OK) { return TCL_ERROR; } --- a/generic/bltBusy.c +++ b/generic/bltBusy.c @@ -418,7 +418,7 @@ Tk_Cursor oldCursor; oldCursor = busyPtr->cursor; - if (Tk_ConfigureWidget(interp, busyPtr->tkRef, configSpecs, argc, argv, + if (Blt_ConfigureWidget(interp, busyPtr->tkRef, configSpecs, argc, argv, (char *)busyPtr, 0) != TCL_OK) { return TCL_ERROR; } --- a/generic/bltConfig.c +++ b/generic/bltConfig.c @@ -1573,7 +1573,7 @@ Blt_Free(tempName); Tk_SetClass(tkwin, className); - result = Tk_ConfigureWidget(interp, tkwin, specsPtr, argc, argv, widgRec, + result = Blt_ConfigureWidget(interp, tkwin, specsPtr, argc, argv, widgRec, flags); if (isTemporary) { Tk_DestroyWindow(tkwin); --- a/generic/bltTed.c +++ b/generic/bltTed.c @@ -826,7 +826,7 @@ GC newGC; unsigned long gcMask; - if (Tk_ConfigureWidget(tedPtr->interp, tedPtr->tkwin, configSpecs, + if (Blt_ConfigureWidget(tedPtr->interp, tedPtr->tkwin, configSpecs, argc, argv, (char *)tedPtr, flags) != TCL_OK) { return TCL_ERROR; } --- a/generic/bltGrAxis.c +++ b/generic/bltGrAxis.c @@ -3448,7 +3448,7 @@ return Tk_ConfigureInfo(graphPtr->interp, graphPtr->tkwin, configSpecs, (char *)axisPtr, argv[0], flags); } - if (Tk_ConfigureWidget(graphPtr->interp, graphPtr->tkwin, configSpecs, + if (Blt_ConfigureWidget(graphPtr->interp, graphPtr->tkwin, configSpecs, argc, argv, (char *)axisPtr, flags) != TCL_OK) { return TCL_ERROR; } --- a/generic/bltHtext.c +++ b/generic/bltHtext.c @@ -40,6 +40,13 @@ * of the virtual text. */ +/* + * the htext widget is broken in tk8.5.6 as + * Tk_ConfigureWidget no longer supports + * queries of changed options. Need to migrate to Tk_SetOptions + * instead hack a wrapper Blt_ConfigureWidget + */ + #include "bltInt.h" #ifndef NO_HTEXT @@ -338,7 +345,7 @@ TK_CONFIG_DONT_SET_DEFAULT, &heightOption}, {TK_CONFIG_CUSTOM, "-linespacing", "lineSpacing", "LineSpacing", DEF_HTEXT_LINE_SPACING, Tk_Offset(HText, leader), - TK_CONFIG_DONT_SET_DEFAULT, &bltDistanceOption}, + TK_CONFIG_DONT_SET_DEFAULT, &bltDistanceOption}, {TK_CONFIG_CUSTOM, "-maxheight", "maxHeight", "MaxHeight", DEF_HTEXT_MAX_HEIGHT, Tk_Offset(HText, maxHeight), TK_CONFIG_DONT_SET_DEFAULT, &bltDistanceOption}, @@ -2841,9 +2848,15 @@ Tk_GetFontMetrics(htPtr->font, &fontMetrics); if ((segPtr->textEnd < htPtr->selFirst) || (segPtr->textStart > htPtr->selLast)) { /* No selected text */ +#ifdef TK_DRAWCHARS_ANLGE + Tk_DrawChars(htPtr->display, draw, htPtr->drawGC, htPtr->font, + htPtr->charArr + segPtr->textStart, textLength - 1, + x, y + linePtr->baseline, 0.); +#else Tk_DrawChars(htPtr->display, draw, htPtr->drawGC, htPtr->font, htPtr->charArr + segPtr->textStart, textLength - 1, x, y + linePtr->baseline); +#endif return; } /* @@ -2872,9 +2885,15 @@ Tk_MeasureChars(htPtr->font, htPtr->charArr + segPtr->textStart, nChars, 10000, DEF_TEXT_FLAGS, &lastX); lastX += x; +#ifdef TK_DRAWCHARS_ANGLE + Tk_DrawChars(htPtr->display, draw, htPtr->drawGC, htPtr->font, + htPtr->charArr + segPtr->textStart, nChars, x, + y + linePtr->baseline, 0.); +#else Tk_DrawChars(htPtr->display, draw, htPtr->drawGC, htPtr->font, htPtr->charArr + segPtr->textStart, nChars, x, y + linePtr->baseline); +#endif curPos = selStart; } if (selLength > 0) { /* The selection itself */ @@ -2890,16 +2909,28 @@ lastX, y + linePtr->baseline - fontMetrics.ascent, width, fontMetrics.linespace, htPtr->selBorderWidth, TK_RELIEF_RAISED); +#ifdef TK_DRAWCHARS_ANGLE + Tk_DrawChars(htPtr->display, draw, htPtr->selectGC, + htPtr->font, htPtr->charArr + selStart, selLength, + lastX, y + linePtr->baseline, 0.); +#else Tk_DrawChars(htPtr->display, draw, htPtr->selectGC, htPtr->font, htPtr->charArr + selStart, selLength, lastX, y + linePtr->baseline); +#endif lastX = nextX; curPos = selStart + selLength; } nChars = segPtr->textEnd - curPos; if (nChars > 0) { /* Text following the selection */ +#ifdef TK_DRAWCHARS_ANGLE + Tk_DrawChars(htPtr->display, draw, htPtr->drawGC, htPtr->font, + htPtr->charArr + curPos, nChars - 1, + lastX, y + linePtr->baseline, 0.); +#else Tk_DrawChars(htPtr->display, draw, htPtr->drawGC, htPtr->font, htPtr->charArr + curPos, nChars - 1, lastX, y + linePtr->baseline); +#endif } } @@ -3055,18 +3086,21 @@ XFillRectangle(display, pixmap, htPtr->fillGC, 0, 0, width, height); } - - if (! htPtr->lineArr) return; - if (deltaY >= 0) { + /* handle null lineArr */ + if (htPtr->arraySize > 0 && htPtr->nLines > 0) { + if (deltaY >= 0) { y += htPtr->lineArr[htPtr->first].offset; lineNum = htPtr->first; lastY = 0; - } else { + } else { y += htPtr->lineArr[htPtr->last].offset; lineNum = htPtr->last; lastY = height; + } + forceCopy = 0; + } else { + htPtr->last = htPtr->first - 1; } - forceCopy = 0; /* Draw each line */ for (i = htPtr->first; i <= htPtr->last; i++) { @@ -3365,7 +3399,8 @@ * The page is always draw at full width and the viewport will clip * the text. */ - if ((htPtr->first != oldFirst) || (htPtr->last != oldLast)) { + if ((htPtr->first != oldFirst) || (htPtr->last != oldLast) + || htPtr->flags & TEXT_DIRTY ) { int offset; int i; int first, last; @@ -3383,23 +3418,26 @@ } if (! htPtr->lineArr) return; - for (i = first; i <= last; i++) { + + if (htPtr->arraySize > 0 && htPtr->nLines > 0) { + for (i = first; i <= last; i++) { offset = htPtr->lineArr[i].offset; for (linkPtr = Blt_ChainFirstLink(htPtr->lineArr[i].chainPtr); - linkPtr != NULL; linkPtr = Blt_ChainNextLink(linkPtr)) { - winPtr = Blt_ChainGetValue(linkPtr); - if (winPtr->tkwin != NULL) { - MoveEmbeddedWidget(winPtr, offset); - winPtr->flags &= ~WIDGET_VISIBLE; - } + linkPtr != NULL; linkPtr = Blt_ChainNextLink(linkPtr)) { + winPtr = Blt_ChainGetValue(linkPtr); + if (winPtr->tkwin != NULL) { + MoveEmbeddedWidget(winPtr, offset); + winPtr->flags &= ~WIDGET_VISIBLE; + } } + } } - } - DrawPage(htPtr, deltaY); - SendBogusEvent(tkwin); + DrawPage(htPtr, deltaY); + SendBogusEvent(tkwin); - /* Reset flags */ - htPtr->flags &= ~TEXT_DIRTY; + /* Reset flags */ + htPtr->flags &= ~TEXT_DIRTY; + } } /* Selection Procedures */ @@ -3919,7 +3957,7 @@ if (winPtr == NULL) { return TCL_ERROR; } - if (Tk_ConfigureWidget(interp, htPtr->tkwin, widgetConfigSpecs, + if (Blt_ConfigureWidget(interp, htPtr->tkwin, widgetConfigSpecs, argc - 3, argv + 3, (char *)winPtr, 0) != TCL_OK) { return TCL_ERROR; } @@ -4089,8 +4127,13 @@ return Tk_ConfigureInfo(interp, htPtr->tkwin, specsPtr, itemPtr, argv[2], 0); } - if (Tk_ConfigureWidget(interp, htPtr->tkwin, specsPtr, argc - 2, - argv + 2, itemPtr, TK_CONFIG_ARGV_ONLY) != TCL_OK) { + if (Blt_ConfigureWidget(interp, htPtr->tkwin, specsPtr, argc - 2, + argv + 2, itemPtr, TK_CONFIG_ARGV_ONLY) != TCL_OK) { + + /* + * in 8.5 cant tell if in option was modified + * supposed to convert to Tk_SetOptions + */ return TCL_ERROR; } if (itemPtr == (char *)htPtr) { @@ -4487,7 +4530,7 @@ #ifdef ITCL_NAMESPACES Itk_SetWidgetCommand(htPtr->tkwin, htPtr->cmdToken); #endif - if ((Tk_ConfigureWidget(interp, htPtr->tkwin, configSpecs, argc - 2, + if ((Blt_ConfigureWidget(interp, htPtr->tkwin, configSpecs, argc - 2, argv + 2, (char *)htPtr, 0) != TCL_OK) || (ConfigureText(interp, htPtr) != TCL_OK)) { Tk_DestroyWindow(htPtr->tkwin); --- a/generic/bltWinDraw.c +++ b/generic/bltWinDraw.c @@ -1647,8 +1647,13 @@ if (drawable == None) { return; } +#ifdef TK_DRAWCHARS_ANGLE + Tk_DrawChars(display, drawable, gc, (Tk_Font)gc->font, string, length, + x, y, 0.); +#else Tk_DrawChars(display, drawable, gc, (Tk_Font)gc->font, string, length, x, y); +#endif } static void --- a/generic/bltGrMarker.c +++ b/generic/bltGrMarker.c @@ -4313,7 +4313,7 @@ /* Save the old marker. */ oldName = markerPtr->name; under = markerPtr->drawUnder; - if (Tk_ConfigureWidget(interp, graphPtr->tkwin, + if (Blt_ConfigureWidget(interp, graphPtr->tkwin, markerPtr->classPtr->configSpecs, nOpts, options, (char *)markerPtr, flags) != TCL_OK) { return TCL_ERROR; --- a/generic/bltBitmap.c +++ b/generic/bltBitmap.c @@ -917,7 +917,7 @@ info.padLeft = info.padRight = 0; info.padTop = info.padBottom = 0; info.font = (Tk_Font)NULL; /* Initialized by Tk_ConfigureWidget */ - if (Tk_ConfigureWidget(interp, tkwin, composeConfigSpecs, + if (Blt_ConfigureWidget(interp, tkwin, composeConfigSpecs, argc - 4, argv + 4, (char *)&info, 0) != TCL_OK) { return TCL_ERROR; } @@ -1027,7 +1027,7 @@ /* Initialize info and then process flags */ info.rotate = 0.0; /* No rotation by default */ info.scale = 1.0; /* No scaling by default */ - if (Tk_ConfigureWidget(interp, dataPtr->tkwin, defineConfigSpecs, + if (Blt_ConfigureWidget(interp, dataPtr->tkwin, defineConfigSpecs, argc - 4, argv + 4, (char *)&info, 0) != TCL_OK) { return TCL_ERROR; } --- a/generic/bltTabnotebook.c +++ b/generic/bltTabnotebook.c @@ -2766,7 +2766,7 @@ GC newGC; lastNotebookInstance = nbPtr; - if (Tk_ConfigureWidget(interp, nbPtr->tkwin, configSpecs, argc, argv, + if (Blt_ConfigureWidget(interp, nbPtr->tkwin, configSpecs, argc, argv, (char *)nbPtr, flags) != TCL_OK) { return TCL_ERROR; } @@ -3691,7 +3691,7 @@ } Tcl_Preserve(tabPtr); lastNotebookInstance = nbPtr; - result = Tk_ConfigureWidget(interp, nbPtr->tkwin, tabConfigSpecs, + result = Blt_ConfigureWidget(interp, nbPtr->tkwin, tabConfigSpecs, nOpts, options, (char *)tabPtr, TK_CONFIG_ARGV_ONLY); if (result == TCL_OK) { result = ConfigureTab(nbPtr, tabPtr); --- a/generic/bltContainer.c +++ b/generic/bltContainer.c @@ -1193,7 +1193,7 @@ GC newGC; int width, height; - if (Tk_ConfigureWidget(interp, cntrPtr->tkwin, configSpecs, argc, argv, + if (Blt_ConfigureWidget(interp, cntrPtr->tkwin, configSpecs, argc, argv, (char *)cntrPtr, flags) != TCL_OK) { return TCL_ERROR; } --- a/generic/bltTabset.c +++ b/generic/bltTabset.c @@ -3163,7 +3163,7 @@ XColor *activeColor; /* Active foreground. */ tabSet = setPtr; - if (Tk_ConfigureWidget(interp, setPtr->tkwin, configSpecs, argc, argv, + if (Blt_ConfigureWidget(interp, setPtr->tkwin, configSpecs, argc, argv, (char *)setPtr, flags) != TCL_OK) { return TCL_ERROR; } @@ -4452,7 +4452,7 @@ } tabSet = setPtr; Tcl_Preserve(tabPtr); - result = Tk_ConfigureWidget(interp, setPtr->tkwin, tabConfigSpecs, + result = Blt_ConfigureWidget(interp, setPtr->tkwin, tabConfigSpecs, nOpts, options, (char *)tabPtr, TK_CONFIG_ARGV_ONLY); if (result == TCL_OK || nOpts>=2) { result = ConfigureTab(setPtr, tabPtr); --- a/generic/bltGrGrid.c +++ b/generic/bltGrGrid.c @@ -368,7 +368,7 @@ return Tk_ConfigureInfo(interp, graphPtr->tkwin, configSpecs, (char *)gridPtr, argv[3], flags); } - if (Tk_ConfigureWidget(graphPtr->interp, graphPtr->tkwin, configSpecs, + if (Blt_ConfigureWidget(graphPtr->interp, graphPtr->tkwin, configSpecs, argc - 3, argv + 3, (char *)gridPtr, flags) != TCL_OK) { return TCL_ERROR; } --- a/generic/tkButton.c +++ b/generic/tkButton.c @@ -1721,7 +1721,7 @@ oldSelVar = (butPtr->selVarName?strdup(butPtr->selVarName):NULL); } - if (Tk_ConfigureWidget(interp, butPtr->tkwin, configSpecs, + if (Blt_ConfigureWidget(interp, butPtr->tkwin, configSpecs, argc, argv, (char *)butPtr, flags) != TCL_OK) { if (oldTextVar) ckfree(oldTextVar); if (oldTextVar) ckfree(oldSelVar); --- a/generic/bltGrElem.c +++ b/generic/bltGrElem.c @@ -1699,7 +1699,7 @@ search.x = x; search.y = y; - if (Tk_ConfigureWidget(interp, graphPtr->tkwin, closestSpecs, i - 6, + if (Blt_ConfigureWidget(interp, graphPtr->tkwin, closestSpecs, i - 6, argv + 6, (char *)&search, TK_CONFIG_ARGV_ONLY) != TCL_OK) { return TCL_ERROR; /* Error occurred processing an option. */ } @@ -1854,7 +1854,7 @@ return Tk_ConfigureInfo(interp, graphPtr->tkwin, elemPtr->specsPtr, (char *)elemPtr, options[0], flags); } - if (Tk_ConfigureWidget(interp, graphPtr->tkwin, elemPtr->specsPtr, + if (Blt_ConfigureWidget(interp, graphPtr->tkwin, elemPtr->specsPtr, numOpts, options, (char *)elemPtr, flags) != TCL_OK) { return TCL_ERROR; } --- a/generic/bltTable.c +++ b/generic/bltTable.c @@ -1201,7 +1201,7 @@ oldRowSpan = entryPtr->row.span; oldColSpan = entryPtr->column.span; - if (Tk_ConfigureWidget(interp, entryPtr->tkwin, entryConfigSpecs, + if (Blt_ConfigureWidget(interp, entryPtr->tkwin, entryConfigSpecs, argc, argv, (char *)entryPtr, TK_CONFIG_ARGV_ONLY) != TCL_OK) { return TCL_ERROR; } @@ -1553,7 +1553,7 @@ return Tk_ConfigureInfo(tablePtr->interp, tablePtr->tkwin, infoPtr->configSpecs, (char *)rcPtr, argv[0], 0); } else { - if (Tk_ConfigureWidget(tablePtr->interp, tablePtr->tkwin, + if (Blt_ConfigureWidget(tablePtr->interp, tablePtr->tkwin, infoPtr->configSpecs, argc, argv, (char *)rcPtr, TK_CONFIG_ARGV_ONLY) != TCL_OK) { return TCL_ERROR; @@ -1578,7 +1578,7 @@ } rcPtr = GetRowColumn(infoPtr, n); assert(rcPtr); - if (Tk_ConfigureWidget(tablePtr->interp, tablePtr->tkwin, + if (Blt_ConfigureWidget(tablePtr->interp, tablePtr->tkwin, infoPtr->configSpecs, argc, argv, (char *)rcPtr, TK_CONFIG_ARGV_ONLY) != TCL_OK) { return TCL_ERROR; @@ -1861,7 +1861,7 @@ return Tk_ConfigureInfo(interp, tablePtr->tkwin, tableConfigSpecs, (char *)tablePtr, argv[0], 0); } - if (Tk_ConfigureWidget(interp, tablePtr->tkwin, tableConfigSpecs, + if (Blt_ConfigureWidget(interp, tablePtr->tkwin, tableConfigSpecs, argc, argv, (char *)tablePtr, TK_CONFIG_ARGV_ONLY) != TCL_OK) { return TCL_ERROR; } @@ -2198,7 +2198,7 @@ } } if (argc > 0) { - result = Tk_ConfigureWidget(tablePtr->interp, entryPtr->tkwin, + result = Blt_ConfigureWidget(tablePtr->interp, entryPtr->tkwin, entryConfigSpecs, argc, argv, (char *)entryPtr, TK_CONFIG_ARGV_ONLY); }