slackbuilds_ponce/graphics/tclblt/patches/04-fedora-tk8.5.6.patch

824 lines
28 KiB
Diff
Raw Normal View History

* 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) <pauljohn32@freefaculty.org>
--- 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);
}