diff options
| author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2024-10-25 21:06:25 (GMT) |
|---|---|---|
| committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2024-10-25 21:06:25 (GMT) |
| commit | 0d5336db012f45753abace489f18f0ca299c6961 (patch) | |
| tree | b1bf3280a9046df99226158978502eeb26f5b0a3 /generic/tkText.c | |
| parent | e97381a6d921de403516d5b761539a450f4af83c (diff) | |
| parent | 1320b8a2a9c1269a345d44d673a7a35707fbbe9c (diff) | |
| download | tk-core-tip-626.zip tk-core-tip-626.tar.gz tk-core-tip-626.tar.bz2 | |
Merge 9.0core-tip-626
Diffstat (limited to 'generic/tkText.c')
| -rw-r--r-- | generic/tkText.c | 238 |
1 files changed, 144 insertions, 94 deletions
diff --git a/generic/tkText.c b/generic/tkText.c index aaaabc0..f7cb5d4 100644 --- a/generic/tkText.c +++ b/generic/tkText.c @@ -120,7 +120,7 @@ static const Tk_OptionSpec optionSpecs[] = { "BlockCursor", DEF_TEXT_BLOCK_CURSOR, TCL_INDEX_NONE, offsetof(TkText, insertCursorType), 0, 0, 0}, {TK_OPTION_PIXELS, "-borderwidth", "borderWidth", "BorderWidth", - DEF_TEXT_BORDER_WIDTH, TCL_INDEX_NONE, offsetof(TkText, borderWidth), + DEF_TEXT_BORDER_WIDTH, offsetof(TkText, borderWidthObj), TCL_INDEX_NONE, 0, 0, TK_TEXT_LINE_GEOMETRY}, {TK_OPTION_CURSOR, "-cursor", "cursor", "Cursor", DEF_TEXT_CURSOR, TCL_INDEX_NONE, offsetof(TkText, cursor), @@ -140,7 +140,7 @@ static const Tk_OptionSpec optionSpecs[] = { DEF_TEXT_FG, TCL_INDEX_NONE, offsetof(TkText, fgColor), 0, 0, 0}, {TK_OPTION_PIXELS, "-height", "height", "Height", - DEF_TEXT_HEIGHT, TCL_INDEX_NONE, offsetof(TkText, height), 0, 0, 0}, + DEF_TEXT_HEIGHT, offsetof(TkText, heightObj), TCL_INDEX_NONE, 0, 0, 0}, {TK_OPTION_COLOR, "-highlightbackground", "highlightBackground", "HighlightBackground", DEF_TEXT_HIGHLIGHT_BG, TCL_INDEX_NONE, offsetof(TkText, highlightBgColorPtr), @@ -149,11 +149,11 @@ static const Tk_OptionSpec optionSpecs[] = { DEF_TEXT_HIGHLIGHT, TCL_INDEX_NONE, offsetof(TkText, highlightColorPtr), 0, 0, 0}, {TK_OPTION_PIXELS, "-highlightthickness", "highlightThickness", - "HighlightThickness", DEF_TEXT_HIGHLIGHT_WIDTH, TCL_INDEX_NONE, - offsetof(TkText, highlightWidth), 0, 0, TK_TEXT_LINE_GEOMETRY}, + "HighlightThickness", DEF_TEXT_HIGHLIGHT_WIDTH, offsetof(TkText, highlightWidthObj), + TCL_INDEX_NONE, 0, 0, TK_TEXT_LINE_GEOMETRY}, {TK_OPTION_BORDER, "-inactiveselectbackground","inactiveSelectBackground", "Foreground", - DEF_TEXT_INACTIVE_SELECT_COLOR, + DEF_TEXT_INACTIVE_SELECT_BG_COLOR, TCL_INDEX_NONE, offsetof(TkText, inactiveSelBorder), TK_OPTION_NULL_OK, DEF_TEXT_SELECT_MONO, 0}, {TK_OPTION_BORDER, "-insertbackground", "insertBackground", "Foreground", @@ -161,8 +161,8 @@ static const Tk_OptionSpec optionSpecs[] = { TCL_INDEX_NONE, offsetof(TkText, insertBorder), 0, 0, 0}, {TK_OPTION_PIXELS, "-insertborderwidth", "insertBorderWidth", - "BorderWidth", DEF_TEXT_INSERT_BD_COLOR, TCL_INDEX_NONE, - offsetof(TkText, insertBorderWidth), 0, + "BorderWidth", DEF_TEXT_INSERT_BD_COLOR, offsetof(TkText, insertBorderWidthObj), + TCL_INDEX_NONE, 0, DEF_TEXT_INSERT_BD_MONO, 0}, {TK_OPTION_INT, "-insertofftime", "insertOffTime", "OffTime", DEF_TEXT_INSERT_OFF_TIME, TCL_INDEX_NONE, offsetof(TkText, insertOffTime), @@ -175,16 +175,16 @@ static const Tk_OptionSpec optionSpecs[] = { DEF_TEXT_INSERT_UNFOCUSSED, TCL_INDEX_NONE, offsetof(TkText, insertUnfocussed), TK_OPTION_ENUM_VAR, insertUnfocussedStrings, 0}, {TK_OPTION_PIXELS, "-insertwidth", "insertWidth", "InsertWidth", - DEF_TEXT_INSERT_WIDTH, TCL_INDEX_NONE, offsetof(TkText, insertWidth), + DEF_TEXT_INSERT_WIDTH, offsetof(TkText, insertWidthObj), TCL_INDEX_NONE, 0, 0, 0}, {TK_OPTION_INT, "-maxundo", "maxUndo", "MaxUndo", DEF_TEXT_MAX_UNDO, TCL_INDEX_NONE, offsetof(TkText, maxUndo), TK_OPTION_DONT_SET_DEFAULT, 0, 0}, {TK_OPTION_PIXELS, "-padx", "padX", "Pad", - DEF_TEXT_PADX, TCL_INDEX_NONE, offsetof(TkText, padX), 0, 0, + DEF_TEXT_PADX, offsetof(TkText, padXObj), TCL_INDEX_NONE, 0, 0, TK_TEXT_LINE_GEOMETRY}, {TK_OPTION_PIXELS, "-pady", "padY", "Pad", - DEF_TEXT_PADY, TCL_INDEX_NONE, offsetof(TkText, padY), 0, 0, 0}, + DEF_TEXT_PADY, offsetof(TkText, padYObj), TCL_INDEX_NONE, 0, 0, 0}, {TK_OPTION_RELIEF, "-relief", "relief", "Relief", DEF_TEXT_RELIEF, TCL_INDEX_NONE, offsetof(TkText, relief), 0, 0, 0}, {TK_OPTION_BORDER, "-selectbackground", "selectBackground", "Foreground", @@ -192,23 +192,22 @@ static const Tk_OptionSpec optionSpecs[] = { 0, DEF_TEXT_SELECT_MONO, 0}, {TK_OPTION_PIXELS, "-selectborderwidth", "selectBorderWidth", "BorderWidth", DEF_TEXT_SELECT_BD_COLOR, - offsetof(TkText, selBorderWidthPtr), - offsetof(TkText, selBorderWidth), - TK_OPTION_NULL_OK, DEF_TEXT_SELECT_BD_MONO, 0}, + offsetof(TkText, selBorderWidthObj), TCL_INDEX_NONE, + 0, DEF_TEXT_SELECT_BD_MONO, 0}, {TK_OPTION_COLOR, "-selectforeground", "selectForeground", "Background", DEF_TEXT_SELECT_FG_COLOR, TCL_INDEX_NONE, offsetof(TkText, selFgColorPtr), TK_OPTION_NULL_OK, DEF_TEXT_SELECT_FG_MONO, 0}, {TK_OPTION_BOOLEAN, "-setgrid", "setGrid", "SetGrid", DEF_TEXT_SET_GRID, TCL_INDEX_NONE, offsetof(TkText, setGrid), 0, 0, 0}, {TK_OPTION_PIXELS, "-spacing1", "spacing1", "Spacing", - DEF_TEXT_SPACING1, TCL_INDEX_NONE, offsetof(TkText, spacing1), - 0, 0 , TK_TEXT_LINE_GEOMETRY }, + DEF_TEXT_SPACING1, offsetof(TkText, spacing1Obj), TCL_INDEX_NONE, + 0, 0, TK_TEXT_LINE_GEOMETRY }, {TK_OPTION_PIXELS, "-spacing2", "spacing2", "Spacing", - DEF_TEXT_SPACING2, TCL_INDEX_NONE, offsetof(TkText, spacing2), - 0, 0 , TK_TEXT_LINE_GEOMETRY }, + DEF_TEXT_SPACING2, offsetof(TkText, spacing2Obj), TCL_INDEX_NONE, + 0, 0, TK_TEXT_LINE_GEOMETRY }, {TK_OPTION_PIXELS, "-spacing3", "spacing3", "Spacing", - DEF_TEXT_SPACING3, TCL_INDEX_NONE, offsetof(TkText, spacing3), - 0, 0 , TK_TEXT_LINE_GEOMETRY }, + DEF_TEXT_SPACING3, offsetof(TkText, spacing3Obj), TCL_INDEX_NONE, + 0, 0, TK_TEXT_LINE_GEOMETRY }, {TK_OPTION_CUSTOM, "-startline", NULL, NULL, NULL, TCL_INDEX_NONE, offsetof(TkText, start), TK_OPTION_NULL_OK, &lineOption, TK_TEXT_LINE_RANGE}, @@ -216,7 +215,7 @@ static const Tk_OptionSpec optionSpecs[] = { DEF_TEXT_STATE, TCL_INDEX_NONE, offsetof(TkText, state), TK_OPTION_ENUM_VAR, &tkStateStrings[1], 0}, {TK_OPTION_STRING, "-tabs", "tabs", "Tabs", - DEF_TEXT_TABS, offsetof(TkText, tabOptionPtr), TCL_INDEX_NONE, + DEF_TEXT_TABS, offsetof(TkText, tabOptionObj), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, TK_TEXT_LINE_GEOMETRY}, {TK_OPTION_STRING_TABLE, "-tabstyle", "tabStyle", "TabStyle", DEF_TEXT_TABSTYLE, TCL_INDEX_NONE, offsetof(TkText, tabStyle), @@ -595,7 +594,7 @@ CreateWidget( textPtr->undo = textPtr->sharedTextPtr->undo; textPtr->maxUndo = textPtr->sharedTextPtr->maxUndo; textPtr->autoSeparators = textPtr->sharedTextPtr->autoSeparators; - textPtr->tabOptionPtr = NULL; + textPtr->tabOptionObj = NULL; /* * Create the "sel" tag and the "current" and "insert" marks. @@ -603,8 +602,7 @@ CreateWidget( textPtr->selBorder = NULL; textPtr->inactiveSelBorder = NULL; - textPtr->selBorderWidth = 0; - textPtr->selBorderWidthPtr = NULL; + textPtr->selBorderWidthObj = NULL; textPtr->selFgColorPtr = NULL; /* @@ -1462,8 +1460,8 @@ TextWidgetObjCmd( deleteInsertOffset = insertLength; } - indexFromLine = TkBTreeLinesTo(textPtr, indexFromPtr->linePtr); - indexFromByteOffset = indexFromPtr->byteIndex; + indexFromLine = TkBTreeLinesTo(textPtr, indexFromPtr->linePtr); + indexFromByteOffset = indexFromPtr->byteIndex; result = TextReplaceCmd(textPtr, interp, indexFromPtr, indexToPtr, objc, objv, 0); @@ -1473,11 +1471,11 @@ TextWidgetObjCmd( * Move the insertion position to the correct place. */ - TkTextIndex indexTmp; + TkTextIndex indexTmp; - TkTextMakeByteIndex(textPtr->sharedTextPtr->tree, textPtr, indexFromLine, - indexFromByteOffset, &indexTmp); - TkTextIndexForwChars(NULL, &indexTmp, + TkTextMakeByteIndex(textPtr->sharedTextPtr->tree, textPtr, indexFromLine, + indexFromByteOffset, &indexTmp); + TkTextIndexForwChars(NULL, &indexTmp, deleteInsertOffset, &index, COUNT_INDICES); TkBTreeUnlinkSegment(textPtr->insertMarkPtr, textPtr->insertMarkPtr->body.mark.linePtr); @@ -2065,6 +2063,8 @@ ConfigureText( Tk_SavedOptions savedOptions; int oldExport = (textPtr->exportSelection) && (!Tcl_IsSafe(textPtr->interp)); int mask = 0; + int selBorderWidth = INT_MIN, spacing1, spacing2, spacing3; + int insertBorderWidth, insertWidth; if (Tk_SetOptions(interp, (char *) textPtr, textPtr->optionTable, objc, objv, textPtr->tkwin, &savedOptions, &mask) != TCL_OK) { @@ -2204,16 +2204,54 @@ ConfigureText( * Don't allow negative spacings. */ - if (textPtr->spacing1 < 0) { - textPtr->spacing1 = 0; - } - if (textPtr->spacing2 < 0) { - textPtr->spacing2 = 0; - } - if (textPtr->spacing3 < 0) { - textPtr->spacing3 = 0; + Tk_GetPixelsFromObj(NULL, textPtr->tkwin, textPtr->spacing1Obj, &spacing1); + if (spacing1 < 0) { + spacing1 = 0; + Tcl_DecrRefCount(textPtr->spacing1Obj); + textPtr->spacing1Obj = Tcl_NewIntObj(0); + Tcl_IncrRefCount(textPtr->spacing1Obj); + } + Tk_GetPixelsFromObj(NULL, textPtr->tkwin, textPtr->spacing2Obj, &spacing2); + if (spacing2 < 0) { + spacing2 = 0; + Tcl_DecrRefCount(textPtr->spacing2Obj); + textPtr->spacing2Obj = Tcl_NewIntObj(0); + Tcl_IncrRefCount(textPtr->spacing2Obj); + } + Tk_GetPixelsFromObj(NULL, textPtr->tkwin, textPtr->spacing3Obj, &spacing3); + if (spacing3 < 0) { + spacing3 = 0; + Tcl_DecrRefCount(textPtr->spacing3Obj); + textPtr->spacing3Obj = Tcl_NewIntObj(0); + Tcl_IncrRefCount(textPtr->spacing3Obj); + } + Tk_GetPixelsFromObj(NULL, textPtr->tkwin, textPtr->insertBorderWidthObj, &insertBorderWidth); + if (insertBorderWidth < 0) { + insertBorderWidth = 0; + Tcl_DecrRefCount(textPtr->insertBorderWidthObj); + textPtr->insertBorderWidthObj = Tcl_NewIntObj(0); + Tcl_IncrRefCount(textPtr->insertBorderWidthObj); + } + Tk_GetPixelsFromObj(NULL, textPtr->tkwin, textPtr->insertWidthObj, &insertWidth); + if (insertWidth < 0) { + insertWidth = 0; + Tcl_DecrRefCount(textPtr->insertWidthObj); + textPtr->insertWidthObj = Tcl_NewIntObj(0); + Tcl_IncrRefCount(textPtr->insertWidthObj); + } + if (textPtr->selBorderWidthObj) { + Tk_GetPixelsFromObj(NULL, textPtr->tkwin, textPtr->selBorderWidthObj, &selBorderWidth); + } + if (selBorderWidth < 0) { + selBorderWidth = 0; + if (textPtr->selBorderWidthObj) { + Tcl_DecrRefCount(textPtr->selBorderWidthObj); + } + textPtr->selBorderWidthObj = Tcl_NewIntObj(0); + Tcl_IncrRefCount(textPtr->selBorderWidthObj); } + /* * Parse tab stops. */ @@ -2222,9 +2260,9 @@ ConfigureText( ckfree(textPtr->tabArrayPtr); textPtr->tabArrayPtr = NULL; } - if (textPtr->tabOptionPtr != NULL) { + if (textPtr->tabOptionObj != NULL) { textPtr->tabArrayPtr = TkTextGetTabs(interp, textPtr->tkwin, - textPtr->tabOptionPtr); + textPtr->tabOptionObj); if (textPtr->tabArrayPtr == NULL) { Tcl_AddErrorInfo(interp,"\n (while processing -tabs option)"); Tk_RestoreSavedOptions(&savedOptions); @@ -2244,9 +2282,8 @@ ConfigureText( } else { textPtr->selTagPtr->selBorder = textPtr->selBorder; } - if (textPtr->selTagPtr->borderWidthPtr != textPtr->selBorderWidthPtr) { - textPtr->selTagPtr->borderWidthPtr = textPtr->selBorderWidthPtr; - textPtr->selTagPtr->borderWidth = textPtr->selBorderWidth; + if (textPtr->selTagPtr->borderWidthObj != textPtr->selBorderWidthObj) { + textPtr->selTagPtr->borderWidthObj = textPtr->selBorderWidthObj; } if (textPtr->selTagPtr->selFgColor == NULL) { textPtr->selTagPtr->fgColor = textPtr->selFgColorPtr; @@ -2258,17 +2295,19 @@ ConfigureText( if ((textPtr->selTagPtr->elide >= 0) || (textPtr->selTagPtr->tkfont != NULL) || (textPtr->selTagPtr->justify != TK_JUSTIFY_NULL) - || (textPtr->selTagPtr->lMargin1 != INT_MIN) - || (textPtr->selTagPtr->lMargin2 != INT_MIN) - || (textPtr->selTagPtr->offset != INT_MIN) - || (textPtr->selTagPtr->rMargin != INT_MIN) - || (textPtr->selTagPtr->spacing1 != INT_MIN) - || (textPtr->selTagPtr->spacing2 != INT_MIN) - || (textPtr->selTagPtr->spacing3 != INT_MIN) + || (textPtr->selTagPtr->lMargin1Obj != NULL) + || (textPtr->selTagPtr->lMargin2Obj != NULL) + || (textPtr->selTagPtr->offsetObj != NULL) + || (textPtr->selTagPtr->rMarginObj != NULL) + || (textPtr->selTagPtr->spacing1Obj != NULL) + || (textPtr->selTagPtr->spacing2Obj != NULL) + || (textPtr->selTagPtr->spacing3Obj != NULL) || (textPtr->selTagPtr->tabStringPtr != NULL) || (textPtr->selTagPtr->tabStyle == TK_TEXT_TABSTYLE_TABULAR) || (textPtr->selTagPtr->tabStyle == TK_TEXT_TABSTYLE_WORDPROCESSOR) - || (textPtr->selTagPtr->wrapMode != TEXT_WRAPMODE_NULL)) { + || (textPtr->selTagPtr->wrapMode == TEXT_WRAPMODE_CHAR) + || (textPtr->selTagPtr->wrapMode == TEXT_WRAPMODE_NONE) + || (textPtr->selTagPtr->wrapMode == TEXT_WRAPMODE_WORD)) { textPtr->selTagPtr->affectsDisplay = 1; textPtr->selTagPtr->affectsDisplayGeometry = 1; } @@ -2330,9 +2369,6 @@ ConfigureText( if (textPtr->width <= 0) { textPtr->width = 1; } - if (textPtr->height <= 0) { - textPtr->height = 1; - } Tk_FreeSavedOptions(&savedOptions); TextWorldChanged(textPtr, mask); return TCL_OK; @@ -2394,8 +2430,11 @@ TextWorldChanged( * changed. */ { Tk_FontMetrics fm; - int border; + int border, height; int oldCharHeight = textPtr->charHeight; + int padX, padY; + int spacing1, spacing3; + int borderWidth, highlightWidth; textPtr->charWidth = Tk_TextWidth(textPtr->tkfont, "0", 1); if (textPtr->charWidth <= 0) { @@ -2410,17 +2449,26 @@ TextWorldChanged( if (textPtr->charHeight != oldCharHeight) { TkBTreeClientRangeChanged(textPtr, textPtr->charHeight); } - border = textPtr->borderWidth + textPtr->highlightWidth; + Tk_GetPixelsFromObj(NULL, textPtr->tkwin, textPtr->padXObj, &padX); + Tk_GetPixelsFromObj(NULL, textPtr->tkwin, textPtr->padYObj, &padY); + Tk_GetPixelsFromObj(NULL, textPtr->tkwin, textPtr->spacing1Obj, &spacing1); + Tk_GetPixelsFromObj(NULL, textPtr->tkwin, textPtr->spacing3Obj, &spacing3); + Tk_GetPixelsFromObj(NULL, textPtr->tkwin, textPtr->borderWidthObj, &borderWidth); + Tk_GetPixelsFromObj(NULL, textPtr->tkwin, textPtr->highlightWidthObj, &highlightWidth); + Tk_GetPixelsFromObj(NULL, textPtr->tkwin, textPtr->heightObj, &height); + if (height < 1) { + height = 1; + } + border = borderWidth + highlightWidth; Tk_GeometryRequest(textPtr->tkwin, - textPtr->width * textPtr->charWidth + 2*textPtr->padX + 2*border, - textPtr->height*(fm.linespace+textPtr->spacing1+textPtr->spacing3) - + 2*textPtr->padY + 2*border); + textPtr->width * textPtr->charWidth + 2 * padX + 2 * border, + height * (fm.linespace + spacing1 + spacing3) + + 2 * padY + 2*border); Tk_SetInternalBorderEx(textPtr->tkwin, - border + textPtr->padX, border + textPtr->padX, - border + textPtr->padY, border + textPtr->padY); + border + padX, border + padX, border + padY, border + padY); if (textPtr->setGrid) { - Tk_SetGrid(textPtr->tkwin, textPtr->width, textPtr->height, + Tk_SetGrid(textPtr->tkwin, textPtr->width, height, textPtr->charWidth, textPtr->charHeight); } else { Tk_UnsetGrid(textPtr->tkwin); @@ -2455,6 +2503,7 @@ TextEventProc( { TkText *textPtr = (TkText *)clientData; TkTextIndex index, index2; + int highlightWidth; if (eventPtr->type == Expose) { TkTextRedrawRegion(textPtr, eventPtr->xexpose.x, @@ -2474,7 +2523,7 @@ TextEventProc( } } else if (eventPtr->type == DestroyNotify) { /* - * NOTE: we must zero out selBorder, selBorderWidthPtr and + * NOTE: we must zero out selBorder, selBorderWidthObj and * selFgColorPtr: they are duplicates of information in the "sel" tag, * which will be freed up when we delete all tags. Hence we don't want * the automatic config options freeing process to delete them as @@ -2482,8 +2531,7 @@ TextEventProc( */ textPtr->selBorder = NULL; - textPtr->selBorderWidthPtr = NULL; - textPtr->selBorderWidth = 0; + textPtr->selBorderWidthObj = NULL; textPtr->selFgColorPtr = NULL; if (textPtr->setGrid) { Tk_UnsetGrid(textPtr->tkwin); @@ -2532,9 +2580,9 @@ TextEventProc( */ TkTextChanged(NULL, textPtr, &index, &index2); - if (textPtr->highlightWidth > 0) { - TkTextRedrawRegion(textPtr, 0, 0, textPtr->highlightWidth, - textPtr->highlightWidth); + Tk_GetPixelsFromObj(NULL, textPtr->tkwin, textPtr->highlightWidthObj, &highlightWidth); + if (highlightWidth > 0) { + TkTextRedrawRegion(textPtr, 0, 0, highlightWidth, highlightWidth); } } } @@ -2718,9 +2766,9 @@ InsertChars( */ for (tPtr = sharedTextPtr->peers; tPtr != NULL ; tPtr = tPtr->next) { - if (TkBTreeCharTagged(indexPtr, tPtr->selTagPtr)) { - TkTextSelectionEvent(tPtr); - } + if (TkBTreeCharTagged(indexPtr, tPtr->selTagPtr)) { + TkTextSelectionEvent(tPtr); + } tPtr->abortSelections = 1; } @@ -2858,9 +2906,9 @@ TextPushUndoAction( Tcl_ListObjAppendElement(NULL, markGravityRUndoMarkCmdObj, Tcl_NewStringObj(rMarkName, TCL_INDEX_NONE)); Tcl_ListObjAppendElement(NULL, markGravityLUndoMarkCmdObj, - Tcl_NewStringObj("left", 4)); + Tcl_NewStringObj("left", 4)); Tcl_ListObjAppendElement(NULL, markGravityRUndoMarkCmdObj, - Tcl_NewStringObj("right", 5)); + Tcl_NewStringObj("right", 5)); /* * Note: we don't wish to use textPtr->widgetCmd in these callbacks @@ -3185,7 +3233,7 @@ DeleteIndexRange( for (i=0, hPtr=Tcl_FirstHashEntry(&sharedTextPtr->tagTable, &search); hPtr != NULL; i++, hPtr = Tcl_NextHashEntry(&search)) { - TkBTreeTag(&index1, &index2, (TkTextTag *)Tcl_GetHashValue(hPtr), 0); + TkBTreeTag(&index1, &index2, (TkTextTag *)Tcl_GetHashValue(hPtr), 0); } /* @@ -3195,7 +3243,7 @@ DeleteIndexRange( for (tPtr = sharedTextPtr->peers; tPtr != NULL ; tPtr = tPtr->next) { - if (TkBTreeTag(&index1, &index2, tPtr->selTagPtr, 0)) { + if (TkBTreeTag(&index1, &index2, tPtr->selTagPtr, 0)) { /* * Send an event that the selection changed. This is * equivalent to: @@ -3204,7 +3252,7 @@ DeleteIndexRange( TkTextSelectionEvent(textPtr); tPtr->abortSelections = 1; - } + } } /* @@ -3305,7 +3353,7 @@ DeleteIndexRange( TkBTreeDeleteIndexRange(sharedTextPtr->tree, &index1, &index2); - UpdateDirtyFlag(sharedTextPtr); + UpdateDirtyFlag(sharedTextPtr); } resetViewCount = 0; @@ -3655,14 +3703,16 @@ TextBlinkProc( redrawInsert: TkTextMarkSegToIndex(textPtr, textPtr->insertMarkPtr, &index); if (TkTextIndexBbox(textPtr, &index, &x, &y, &w, &h, &charWidth) == 0) { + int insertWidth; + Tk_GetPixelsFromObj(NULL, textPtr->tkwin, textPtr->insertWidthObj, &insertWidth); if (textPtr->insertCursorType) { /* Block cursor */ TkTextRedrawRegion(textPtr, x - textPtr->width / 2, y, - charWidth + textPtr->insertWidth / 2, h); + charWidth + insertWidth / 2, h); } else { /* I-beam cursor */ - TkTextRedrawRegion(textPtr, x - textPtr->insertWidth / 2, y, - textPtr->insertWidth, h); + TkTextRedrawRegion(textPtr, x - insertWidth / 2, y, + insertWidth, h); } } } @@ -4922,7 +4972,7 @@ DumpLine( } else if ((what & TK_DUMP_IMG) && (segPtr->typePtr == &tkTextEmbImageType)) { TkTextEmbImage *eiPtr = &segPtr->body.ei; - const char *name = (eiPtr->name == NULL) ? "" : eiPtr->name; + const char *name = eiPtr->name; TkTextMakeByteIndex(textPtr->sharedTextPtr->tree, textPtr, lineno, offset, &index); @@ -5119,13 +5169,13 @@ TextEditUndo( */ cmdObj = Tcl_ObjPrintf("::tk::TextUndoRedoProcessMarks %s", - Tk_PathName(textPtr->tkwin)); + Tk_PathName(textPtr->tkwin)); Tcl_IncrRefCount(cmdObj); code = Tcl_EvalObjEx(textPtr->interp, cmdObj, TCL_EVAL_GLOBAL); if (code != TCL_OK) { - Tcl_AddErrorInfo(textPtr->interp, - "\n (on undoing)"); - Tcl_BackgroundException(textPtr->interp, code); + Tcl_AddErrorInfo(textPtr->interp, + "\n (on undoing)"); + Tcl_BackgroundException(textPtr->interp, code); } Tcl_DecrRefCount(cmdObj); @@ -5185,13 +5235,13 @@ TextEditRedo( */ cmdObj = Tcl_ObjPrintf("::tk::TextUndoRedoProcessMarks %s", - Tk_PathName(textPtr->tkwin)); + Tk_PathName(textPtr->tkwin)); Tcl_IncrRefCount(cmdObj); code = Tcl_EvalObjEx(textPtr->interp, cmdObj, TCL_EVAL_GLOBAL); if (code != TCL_OK) { - Tcl_AddErrorInfo(textPtr->interp, - "\n (on undoing)"); - Tcl_BackgroundException(textPtr->interp, code); + Tcl_AddErrorInfo(textPtr->interp, + "\n (on undoing)"); + Tcl_BackgroundException(textPtr->interp, code); } Tcl_DecrRefCount(cmdObj); @@ -5733,7 +5783,7 @@ SearchCore( int alreadySearchOffset = -1; const char *pattern = NULL; /* For exact searches only. */ - int firstNewLine = -1; /* For exact searches only. */ + int firstNewLine = -1; /* For exact searches only. */ Tcl_RegExp regexp = NULL; /* For regexp searches only. */ /* @@ -6131,13 +6181,13 @@ SearchCore( break; } else { alreadySearchOffset -= (matchLength ? matchLength : 1); - if (alreadySearchOffset < 0) { - break; - } + if (alreadySearchOffset < 0) { + break; + } } } else { - firstOffset = matchLength ? p - startOfLine + matchLength - : p - startOfLine + (Tcl_Size)1; + firstOffset = matchLength ? p - startOfLine + matchLength + : p - startOfLine + (Tcl_Size)1; if (firstOffset >= lastOffset) { /* * Now, we have to be careful not to find |
