slackbuilds_ponce/graphics/tclblt/patches/04-fedora-tk8.5.6.patch
Andrey M. Lipaev 377171575b graphics/tclblt: Added (Tcl/Tk Extension).
Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
2019-06-29 07:59:18 +07:00

823 lines
28 KiB
Diff
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

* 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);
}