Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Changes In Branch tip-687 Excluding Merge-Ins
This is equivalent to a diff from 45a37b47 to 8bf0b9d0
2024-03-23
| ||
18:57 | Merge 8.7 check-in: a697cdf4 user: jan.nijtmans tags: trunk, main | |
15:40 | Rebase to 9.0 Leaf check-in: 8bf0b9d0 user: jan.nijtmans tags: tip-687 | |
15:37 | Add some -locale testcases check-in: 9a36741b user: jan.nijtmans tags: tip-687 | |
2024-03-22
| ||
20:02 | Fix [10705db626]: Missing spaces in man pages. check-in: f1da7fd7 user: fvogel tags: revised_text, tip-466 | |
20:02 | Fix [10705db626]: Missing spaces in man pages. check-in: 45a37b47 user: fvogel tags: trunk, main | |
19:59 | Fix [10705db626]: Missing spaces in man pages. check-in: 5aa61e98 user: fvogel tags: core-8-6-branch | |
2024-03-19
| ||
21:54 | Fix [fdc0ed342d]: Segfault on focus -force with xvfb. check-in: 21fb5661 user: fvogel tags: trunk, main | |
Changes to doc/entry.n.
︙ | ︙ | |||
11 12 13 14 15 16 17 | .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME entry \- Create and manipulate 'entry' one-line text entry widgets .SH SYNOPSIS \fBentry\fI pathName \fR?\fIoptions\fR? .SO | | | | | | | | | | | 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME entry \- Create and manipulate 'entry' one-line text entry widgets .SH SYNOPSIS \fBentry\fI pathName \fR?\fIoptions\fR? .SO \-background \-insertbackground \-relief \-borderwidth \-insertborderwidth \-selectbackground \-cursor \-insertofftime \-selectborderwidth \-exportselection \-insertontime \-selectforeground \-font \-insertwidth \-takefocus \-foreground \-justify \-textvariable \-highlightbackground \-locale \-xscrollcommand \-highlightcolor \-placeholder \-highlightthickness \-placeholderforeground .SE .SH "WIDGET-SPECIFIC OPTIONS" .OP \-disabledbackground disabledBackground DisabledBackground Specifies the background color to use when the entry is disabled. If this option is the empty string, the normal background color is used. .OP \-disabledforeground disabledForeground DisabledForeground Specifies the foreground color to use when the entry is disabled. If |
︙ | ︙ |
Changes to doc/spinbox.n.
︙ | ︙ | |||
10 11 12 13 14 15 16 | .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME spinbox \- Create and manipulate 'spinbox' value spinner widgets .SH SYNOPSIS \fBspinbox\fI pathName \fR?\fIoptions\fR? .SO | | | | | | | | | | | | 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME spinbox \- Create and manipulate 'spinbox' value spinner widgets .SH SYNOPSIS \fBspinbox\fI pathName \fR?\fIoptions\fR? .SO \-activebackground \-insertbackground \-repeatdelay \-background \-insertborderwidth \-repeatinterval \-borderwidth \-insertontime \-selectbackground \-cursor \-insertwidth \-selectborderwidth \-exportselection \-insertofftime \-selectforeground \-font \-justify \-takefocus \-foreground \-locale \-textvariable \-highlightbackground \-placeholder \-xscrollcommand \-highlightcolor \-placeholderforeground \-highlightthickness \-relief .SE .SH "WIDGET-SPECIFIC OPTIONS" .OP \-buttonbackground buttonBackground Background The background color to be used for the spin buttons. .OP \-buttoncursor buttonCursor Cursor The cursor to be used when over the spin buttons. If this is empty (the default), a default cursor will be used. |
︙ | ︙ |
Changes to doc/text.n.
︙ | ︙ | |||
504 505 506 507 508 509 510 511 512 513 514 515 516 517 | \fIColor\fR specifies the background color to use in regions that do not contain characters because they are indented by \fB\-lmargin1\fR or \fB\-lmargin2\fR. It may have any of the forms accepted by \fBTk_GetColor\fR. If \fIcolor\fR has not been specified, or if it is specified as an empty string, then the color used is specified by the \fB\-background\fR tag option (or, if this is also unspecified, by the \fB\-background\fR widget option). .\" OPTION: -offset .TP \fB\-offset \fIpixels\fR . \fIPixels\fR specifies an amount by which the text's baseline should be offset vertically from the baseline of the overall line, in pixels. For example, a positive offset can be used for superscripts and a negative offset can be used | > > > > > > > > | 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 | \fIColor\fR specifies the background color to use in regions that do not contain characters because they are indented by \fB\-lmargin1\fR or \fB\-lmargin2\fR. It may have any of the forms accepted by \fBTk_GetColor\fR. If \fIcolor\fR has not been specified, or if it is specified as an empty string, then the color used is specified by the \fB\-background\fR tag option (or, if this is also unspecified, by the \fB\-background\fR widget option). .\" OPTION: -locale .TP \fB\-locale \fIlocale\fR . The locale which is used for determining word and character boundaries within the text. The special value \fIregexp\fR can be used to select a locale-independent algorithm, based on the presence of (Unicode) word characters only. .\" OPTION: -offset .TP \fB\-offset \fIpixels\fR . \fIPixels\fR specifies an amount by which the text's baseline should be offset vertically from the baseline of the overall line, in pixels. For example, a positive offset can be used for superscripts and a negative offset can be used |
︙ | ︙ | |||
1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 | \fItagList\fR is specified then it consists of a list of tag names; the new characters will receive all of the tags in this list and no others, regardless of the tags present around the insertion point. If multiple \fIchars\fR\-\fItagList\fR argument pairs are present, they produce the same effect as if a separate \fIpathName \fBinsert\fR widget command had been issued for each pair, in order. The last \fItagList\fR argument may be omitted. .\" METHOD: mark .TP \fIpathName \fBmark \fIoption \fR?\fIarg ...\fR? . This command is used to manipulate marks. The exact behavior of the command depends on the \fIoption\fR argument that follows the \fBmark\fR argument. The following forms of the command are currently supported: | > > > > > | 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 | \fItagList\fR is specified then it consists of a list of tag names; the new characters will receive all of the tags in this list and no others, regardless of the tags present around the insertion point. If multiple \fIchars\fR\-\fItagList\fR argument pairs are present, they produce the same effect as if a separate \fIpathName \fBinsert\fR widget command had been issued for each pair, in order. The last \fItagList\fR argument may be omitted. .\" METHOD: locale .TP \fIpathName \fBlocale \fIindex\fR . Returns the locale belonging to this \fIindex\fR. .\" METHOD: mark .TP \fIpathName \fBmark \fIoption \fR?\fIarg ...\fR? . This command is used to manipulate marks. The exact behavior of the command depends on the \fIoption\fR argument that follows the \fBmark\fR argument. The following forms of the command are currently supported: |
︙ | ︙ |
Changes to doc/ttk_combobox.n.
︙ | ︙ | |||
25 26 27 28 29 30 31 32 33 34 35 36 37 38 | .SH "WIDGET-SPECIFIC OPTIONS" .OP \-exportselection exportSelection ExportSelection Boolean value. If set, the widget selection is linked to the X selection. .OP \-justify justify Justify Specifies how the text is aligned within the widget. Must be one of \fBleft\fR, \fBcenter\fR, or \fBright\fR. .OP \-height height Height Specifies the height of the pop-down listbox, in rows. .OP \-postcommand postCommand PostCommand A Tcl script to evaluate immediately before displaying the listbox. The \fB\-postcommand\fR script may specify the \fB\-values\fR to display. .OP \-state state State One of \fBnormal\fR, \fBreadonly\fR, or \fBdisabled\fR. | > > | 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | .SH "WIDGET-SPECIFIC OPTIONS" .OP \-exportselection exportSelection ExportSelection Boolean value. If set, the widget selection is linked to the X selection. .OP \-justify justify Justify Specifies how the text is aligned within the widget. Must be one of \fBleft\fR, \fBcenter\fR, or \fBright\fR. .OP \-locale locale Locale Specifies which locale is used for determining character or word boundaries. .OP \-height height Height Specifies the height of the pop-down listbox, in rows. .OP \-postcommand postCommand PostCommand A Tcl script to evaluate immediately before displaying the listbox. The \fB\-postcommand\fR script may specify the \fB\-values\fR to display. .OP \-state state State One of \fBnormal\fR, \fBreadonly\fR, or \fBdisabled\fR. |
︙ | ︙ |
Changes to doc/ttk_entry.n.
︙ | ︙ | |||
43 44 45 46 47 48 49 50 51 52 53 54 55 56 | See \fBVALIDATION\fR below for more information. .OP \-justify justify Justify Specifies how the text is aligned within the entry widget. One of \fBleft\fR, \fBcenter\fR, or \fBright\fR. .\" MAYBE: .OP \-selectbackground selectBackground Foreground .\" MAYBE: .OP \-selectborderwidth selectBorderWidth BorderWidth .\" MAYBE: .OP \-selectforeground selectForeground Background .OP \-show show Show If this option is specified, then the true contents of the entry are not displayed in the window. Instead, each character in the entry's value will be displayed as the first character in the value of this option, such as .QW * or a bullet. | > > | 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | See \fBVALIDATION\fR below for more information. .OP \-justify justify Justify Specifies how the text is aligned within the entry widget. One of \fBleft\fR, \fBcenter\fR, or \fBright\fR. .\" MAYBE: .OP \-selectbackground selectBackground Foreground .\" MAYBE: .OP \-selectborderwidth selectBorderWidth BorderWidth .\" MAYBE: .OP \-selectforeground selectForeground Background .OP \-locale locale Locale Specifies which locale is used for determining character or word boundaries. .OP \-show show Show If this option is specified, then the true contents of the entry are not displayed in the window. Instead, each character in the entry's value will be displayed as the first character in the value of this option, such as .QW * or a bullet. |
︙ | ︙ |
Changes to doc/ttk_widget.n.
︙ | ︙ | |||
113 114 115 116 117 118 119 120 121 122 123 124 125 126 | the widget is in a particular state or combination of states. All images in the list should have the same size. .OP \-justify justify Justify If there are multiple lines of text, specifies how the lines are laid out relative to one another. One of \fBleft\fR, \fBcenter\fR, or \fBright\fR. See also \fB\-anchor\fR (for widgets supporting this option). .OP \-padding padding Padding Specifies the internal padding for the widget. The padding is a list of up to four length specifications \fIleft top right bottom\fR. If fewer than four elements are specified, \fIbottom\fR defaults to \fItop\fR, \fIright\fR defaults to \fIleft\fR, and | > > | 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 | the widget is in a particular state or combination of states. All images in the list should have the same size. .OP \-justify justify Justify If there are multiple lines of text, specifies how the lines are laid out relative to one another. One of \fBleft\fR, \fBcenter\fR, or \fBright\fR. See also \fB\-anchor\fR (for widgets supporting this option). .OP \-locale locale Locale Specifies which locale is used for determining character or word boundaries. .OP \-padding padding Padding Specifies the internal padding for the widget. The padding is a list of up to four length specifications \fIleft top right bottom\fR. If fewer than four elements are specified, \fIbottom\fR defaults to \fItop\fR, \fIright\fR defaults to \fIleft\fR, and |
︙ | ︙ |
Changes to generic/tkEntry.c.
︙ | ︙ | |||
118 119 120 121 122 123 124 125 126 127 128 129 130 131 | {TK_OPTION_STRING, "-invalidcommand", "invalidCommand", "InvalidCommand", DEF_ENTRY_INVALIDCMD, TCL_INDEX_NONE, offsetof(Entry, invalidCmd), TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_SYNONYM, "-invcmd", NULL, NULL, NULL, 0, TCL_INDEX_NONE, 0, "-invalidcommand", 0}, {TK_OPTION_JUSTIFY, "-justify", "justify", "Justify", DEF_ENTRY_JUSTIFY, TCL_INDEX_NONE, offsetof(Entry, justify), TK_OPTION_ENUM_VAR, 0, 0}, {TK_OPTION_STRING, "-placeholder", "placeHolder", "PlaceHolder", DEF_ENTRY_PLACEHOLDER, TCL_INDEX_NONE, offsetof(Entry, placeholderString), TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_COLOR, "-placeholderforeground", "placeholderForeground", "PlaceholderForeground", DEF_ENTRY_PLACEHOLDERFG, TCL_INDEX_NONE, offsetof(Entry, placeholderColorPtr), 0, 0, 0}, {TK_OPTION_BORDER, "-readonlybackground", "readonlyBackground", | > > > | 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 | {TK_OPTION_STRING, "-invalidcommand", "invalidCommand", "InvalidCommand", DEF_ENTRY_INVALIDCMD, TCL_INDEX_NONE, offsetof(Entry, invalidCmd), TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_SYNONYM, "-invcmd", NULL, NULL, NULL, 0, TCL_INDEX_NONE, 0, "-invalidcommand", 0}, {TK_OPTION_JUSTIFY, "-justify", "justify", "Justify", DEF_ENTRY_JUSTIFY, TCL_INDEX_NONE, offsetof(Entry, justify), TK_OPTION_ENUM_VAR, 0, 0}, {TK_OPTION_STRING, "-locale", "locale", "Locale", NULL, offsetof(Entry, localeObj), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_STRING, "-placeholder", "placeHolder", "PlaceHolder", DEF_ENTRY_PLACEHOLDER, TCL_INDEX_NONE, offsetof(Entry, placeholderString), TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_COLOR, "-placeholderforeground", "placeholderForeground", "PlaceholderForeground", DEF_ENTRY_PLACEHOLDERFG, TCL_INDEX_NONE, offsetof(Entry, placeholderColorPtr), 0, 0, 0}, {TK_OPTION_BORDER, "-readonlybackground", "readonlyBackground", |
︙ | ︙ | |||
264 265 266 267 268 269 270 271 272 273 274 275 276 277 | {TK_OPTION_STRING, "-invalidcommand", "invalidCommand", "InvalidCommand", DEF_ENTRY_INVALIDCMD, TCL_INDEX_NONE, offsetof(Entry, invalidCmd), TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_SYNONYM, "-invcmd", NULL, NULL, NULL, 0, TCL_INDEX_NONE, 0, "-invalidcommand", 0}, {TK_OPTION_JUSTIFY, "-justify", "justify", "Justify", DEF_ENTRY_JUSTIFY, TCL_INDEX_NONE, offsetof(Entry, justify), TK_OPTION_ENUM_VAR, 0, 0}, {TK_OPTION_STRING, "-placeholder", "placeHolder", "PlaceHolder", DEF_ENTRY_PLACEHOLDER, TCL_INDEX_NONE, offsetof(Entry, placeholderString), TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_COLOR, "-placeholderforeground", "placeholderForeground", "PlaceholderForeground", DEF_ENTRY_PLACEHOLDERFG, TCL_INDEX_NONE, offsetof(Entry, placeholderColorPtr), 0, 0, 0}, {TK_OPTION_RELIEF, "-relief", "relief", "Relief", | > > > | 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 | {TK_OPTION_STRING, "-invalidcommand", "invalidCommand", "InvalidCommand", DEF_ENTRY_INVALIDCMD, TCL_INDEX_NONE, offsetof(Entry, invalidCmd), TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_SYNONYM, "-invcmd", NULL, NULL, NULL, 0, TCL_INDEX_NONE, 0, "-invalidcommand", 0}, {TK_OPTION_JUSTIFY, "-justify", "justify", "Justify", DEF_ENTRY_JUSTIFY, TCL_INDEX_NONE, offsetof(Entry, justify), TK_OPTION_ENUM_VAR, 0, 0}, {TK_OPTION_STRING, "-locale", "locale", "Locale", NULL, offsetof(Entry, localeObj), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_STRING, "-placeholder", "placeHolder", "PlaceHolder", DEF_ENTRY_PLACEHOLDER, TCL_INDEX_NONE, offsetof(Entry, placeholderString), TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_COLOR, "-placeholderforeground", "placeholderForeground", "PlaceholderForeground", DEF_ENTRY_PLACEHOLDERFG, TCL_INDEX_NONE, offsetof(Entry, placeholderColorPtr), 0, 0, 0}, {TK_OPTION_RELIEF, "-relief", "relief", "Relief", |
︙ | ︙ |
Changes to generic/tkEntry.h.
︙ | ︙ | |||
182 183 184 185 186 187 188 189 190 191 192 193 194 195 | int validate; /* Non-zero means try to validate */ char *validateCmd; /* Command prefix to use when invoking * validate command. NULL means don't invoke * commands. Malloc'ed. */ char *invalidCmd; /* Command called when a validation returns 0 * (successfully fails), defaults to {}. */ } Entry; /* * A data structure of the following type is kept for each spinbox widget * managed by this file: */ | > | 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 | int validate; /* Non-zero means try to validate */ char *validateCmd; /* Command prefix to use when invoking * validate command. NULL means don't invoke * commands. Malloc'ed. */ char *invalidCmd; /* Command called when a validation returns 0 * (successfully fails), defaults to {}. */ Tcl_Obj *localeObj; /* locale, defaults to {}. */ } Entry; /* * A data structure of the following type is kept for each spinbox widget * managed by this file: */ |
︙ | ︙ |
Changes to generic/tkIcu.c.
︙ | ︙ | |||
56 57 58 59 60 61 62 63 64 65 66 67 68 69 | #define icu_preceding icu_fns.preceding #define icu_following icu_fns.following #define icu_previous icu_fns.previous #define icu_next icu_fns.next #define icu_setText icu_fns.setText TCL_DECLARE_MUTEX(icu_mutex); static int startEndOfCmd( void *clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]) | > > > > > > > > > > > > > > > > > > > | 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 | #define icu_preceding icu_fns.preceding #define icu_following icu_fns.following #define icu_previous icu_fns.previous #define icu_next icu_fns.next #define icu_setText icu_fns.setText TCL_DECLARE_MUTEX(icu_mutex); const char *compatFunctions[] = { NULL, "tcl_startOfPreviousWord", NULL, NULL, NULL, "tcl_startOfNextWord", NULL, NULL, NULL, NULL, NULL, NULL, NULL, "tcl_endOfWord", NULL, NULL, }; static int startEndOfCmd( void *clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]) |
︙ | ︙ | |||
81 82 83 84 85 86 87 88 89 90 91 92 93 94 | if ((unsigned)(objc - 3) > 1) { Tcl_WrongNumArgs(interp, 1 , objv, "str start ?locale?"); return TCL_ERROR; } if (objc > 3) { locale = Tcl_GetString(objv[3]); if (!*locale) { locale = NULL; } } Tcl_DStringInit(&ds); str = Tcl_GetStringFromObj(objv[1], &len); Tcl_UtfToChar16DString(str, len, &ds); len = Tcl_DStringLength(&ds)/2; | > > > > > > > > > | 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 | if ((unsigned)(objc - 3) > 1) { Tcl_WrongNumArgs(interp, 1 , objv, "str start ?locale?"); return TCL_ERROR; } if (objc > 3) { locale = Tcl_GetString(objv[3]); if (!*locale) { locale = NULL; } else if (!strcmp(locale, "regexp")) { if (compatFunctions[flags]) { Tcl_Obj *args[3]; args[0] = Tcl_NewStringObj(compatFunctions[flags], -1); args[1] = objv[1]; args[2] = objv[2]; return Tcl_EvalObjv(interp, 3, args, TCL_EVAL_GLOBAL|TCL_EVAL_DIRECT); } locale = NULL; } } Tcl_DStringInit(&ds); str = Tcl_GetStringFromObj(objv[1], &len); Tcl_UtfToChar16DString(str, len, &ds); len = Tcl_DStringLength(&ds)/2; |
︙ | ︙ |
Changes to generic/tkText.c.
︙ | ︙ | |||
173 174 175 176 177 178 179 180 181 182 183 184 185 186 | {TK_OPTION_STRING_TABLE, "-insertunfocussed", "insertUnfocussed", "InsertUnfocussed", 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), 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, TK_TEXT_LINE_GEOMETRY}, {TK_OPTION_PIXELS, "-pady", "padY", "Pad", | > > > | 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 | {TK_OPTION_STRING_TABLE, "-insertunfocussed", "insertUnfocussed", "InsertUnfocussed", 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), 0, 0, 0}, {TK_OPTION_STRING, "-locale", "locale", "Locale", NULL, offsetof(TkText, localeObj), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 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, TK_TEXT_LINE_GEOMETRY}, {TK_OPTION_PIXELS, "-pady", "padY", "Pad", |
︙ | ︙ | |||
680 681 682 683 684 685 686 | TkText *textPtr = (TkText *)clientData; int result = TCL_OK; int idx; static const char *const optionStrings[] = { "bbox", "cget", "compare", "configure", "count", "debug", "delete", "dlineinfo", "dump", "edit", "get", "image", "index", "insert", | | | | | 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 | TkText *textPtr = (TkText *)clientData; int result = TCL_OK; int idx; static const char *const optionStrings[] = { "bbox", "cget", "compare", "configure", "count", "debug", "delete", "dlineinfo", "dump", "edit", "get", "image", "index", "insert", "locale", "mark", "peer", "pendingsync", "replace", "scan", "search", "see", "sync", "tag", "window", "xview", "yview", NULL }; enum options { TEXT_BBOX, TEXT_CGET, TEXT_COMPARE, TEXT_CONFIGURE, TEXT_COUNT, TEXT_DEBUG, TEXT_DELETE, TEXT_DLINEINFO, TEXT_DUMP, TEXT_EDIT, TEXT_GET, TEXT_IMAGE, TEXT_INDEX, TEXT_INSERT, TEXT_LOCALE, TEXT_MARK, TEXT_PEER, TEXT_PENDINGSYNC, TEXT_REPLACE, TEXT_SCAN, TEXT_SEARCH, TEXT_SEE, TEXT_SYNC, TEXT_TAG, TEXT_WINDOW, TEXT_XVIEW, TEXT_YVIEW }; if (objc < 2) { Tcl_WrongNumArgs(interp, 1, objv, "option ?arg ...?"); return TCL_ERROR; |
︙ | ︙ | |||
1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 | result = TCL_ERROR; goto done; } if (textPtr->state != TK_TEXT_STATE_DISABLED) { result = TextInsertCmd(NULL, textPtr, interp, objc-3, objv+3, indexPtr, 1); } break; } case TEXT_MARK: result = TkTextMarkCmd(textPtr, interp, objc, objv); break; case TEXT_PEER: result = TextPeerCmd(textPtr, interp, objc, objv); | > > > > > > > > > > > > > > > > > > > > | 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 | result = TCL_ERROR; goto done; } if (textPtr->state != TK_TEXT_STATE_DISABLED) { result = TextInsertCmd(NULL, textPtr, interp, objc-3, objv+3, indexPtr, 1); } break; } case TEXT_LOCALE: { Tcl_Obj *localeObj; const TkTextIndex *indexPtr; if (objc != 3) { Tcl_WrongNumArgs(interp, 2, objv, "index"); result = TCL_ERROR; goto done; } indexPtr = TkTextGetIndexFromObj(interp, textPtr, objv[2]); if (indexPtr == NULL) { result = TCL_ERROR; goto done; } localeObj = TkTextIndexLocale(textPtr, indexPtr); if (localeObj) { Tcl_SetObjResult(interp, localeObj); } break; } case TEXT_MARK: result = TkTextMarkCmd(textPtr, interp, objc, objv); break; case TEXT_PEER: result = TextPeerCmd(textPtr, interp, objc, objv); |
︙ | ︙ |
Changes to generic/tkText.h.
︙ | ︙ | |||
474 475 476 477 478 479 480 481 482 483 484 485 486 487 | * (so need to redisplay if tag changes). */ Tk_OptionTable optionTable; /* Token representing the configuration * specifications. */ int affectsDisplayGeometry; /* Non-zero means that this tag affects the * size with which information is displayed on * the screen (so need to recalculate line * dimensions if tag changes). */ } TkTextTag; #define TK_TAG_AFFECTS_DISPLAY 0x1 #define TK_TAG_UNDERLINE 0x2 #define TK_TAG_JUSTIFY 0x4 #define TK_TAG_OFFSET 0x10 | > | 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 | * (so need to redisplay if tag changes). */ Tk_OptionTable optionTable; /* Token representing the configuration * specifications. */ int affectsDisplayGeometry; /* Non-zero means that this tag affects the * size with which information is displayed on * the screen (so need to recalculate line * dimensions if tag changes). */ Tcl_Obj *localeObj; /* locale */ } TkTextTag; #define TK_TAG_AFFECTS_DISPLAY 0x1 #define TK_TAG_UNDERLINE 0x2 #define TK_TAG_JUSTIFY 0x4 #define TK_TAG_OFFSET 0x10 |
︙ | ︙ | |||
854 855 856 857 858 859 860 861 862 863 864 865 866 867 | int maxUndo; /* The maximum depth of the undo stack * expressed as the maximum number of compound * statements. */ int autoSeparators; /* Non-zero means the separators will be * inserted automatically. */ Tcl_Obj *afterSyncCmd; /* Command to be executed when lines are up to * date */ } TkText; /* * Flag values for TkText records: * * GOT_SELECTION: Non-zero means we've already claimed the * selection. | > | 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 | int maxUndo; /* The maximum depth of the undo stack * expressed as the maximum number of compound * statements. */ int autoSeparators; /* Non-zero means the separators will be * inserted automatically. */ Tcl_Obj *afterSyncCmd; /* Command to be executed when lines are up to * date */ Tcl_Obj *localeObj; /* locale */ } TkText; /* * Flag values for TkText records: * * GOT_SELECTION: Non-zero means we've already claimed the * selection. |
︙ | ︙ | |||
1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 | TkTextLine *linePtr); MODULE_SCOPE void TkTextBindProc(void *clientData, XEvent *eventPtr); MODULE_SCOPE void TkTextSelectionEvent(TkText *textPtr); MODULE_SCOPE int TkTextIndexBbox(TkText *textPtr, const TkTextIndex *indexPtr, int *xPtr, int *yPtr, int *widthPtr, int *heightPtr, int *charWidthPtr); MODULE_SCOPE int TkTextCharLayoutProc(TkText *textPtr, TkTextIndex *indexPtr, TkTextSegment *segPtr, Tcl_Size offset, int maxX, Tcl_Size maxChars, int noBreakYet, TkWrapMode wrapMode, TkTextDispChunk *chunkPtr); MODULE_SCOPE void TkTextCreateDInfo(TkText *textPtr); MODULE_SCOPE int TkTextDLineInfo(TkText *textPtr, const TkTextIndex *indexPtr, int *xPtr, int *yPtr, | > > | 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 | TkTextLine *linePtr); MODULE_SCOPE void TkTextBindProc(void *clientData, XEvent *eventPtr); MODULE_SCOPE void TkTextSelectionEvent(TkText *textPtr); MODULE_SCOPE int TkTextIndexBbox(TkText *textPtr, const TkTextIndex *indexPtr, int *xPtr, int *yPtr, int *widthPtr, int *heightPtr, int *charWidthPtr); MODULE_SCOPE Tcl_Obj *TkTextIndexLocale(TkText *textPtr, const TkTextIndex *indexPtr); MODULE_SCOPE int TkTextCharLayoutProc(TkText *textPtr, TkTextIndex *indexPtr, TkTextSegment *segPtr, Tcl_Size offset, int maxX, Tcl_Size maxChars, int noBreakYet, TkWrapMode wrapMode, TkTextDispChunk *chunkPtr); MODULE_SCOPE void TkTextCreateDInfo(TkText *textPtr); MODULE_SCOPE int TkTextDLineInfo(TkText *textPtr, const TkTextIndex *indexPtr, int *xPtr, int *yPtr, |
︙ | ︙ |
Changes to generic/tkTextDisp.c.
︙ | ︙ | |||
156 157 158 159 160 161 162 163 164 165 166 167 168 169 | * text. */ XColor *underlineColor; /* Foreground color for underline underneath * text. */ int elide; /* Zero means draw text, otherwise not. */ TkWrapMode wrapMode; /* How to handle wrap-around for this tag. * One of TEXT_WRAPMODE_CHAR, * TEXT_WRAPMODE_NONE or TEXT_WRAPMODE_WORD.*/ } StyleValues; /* * The following structure extends the StyleValues structure above with * graphics contexts used to actually draw the characters. The entries in * dInfoPtr->styleTable point to structures of this type. */ | > | 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 | * text. */ XColor *underlineColor; /* Foreground color for underline underneath * text. */ int elide; /* Zero means draw text, otherwise not. */ TkWrapMode wrapMode; /* How to handle wrap-around for this tag. * One of TEXT_WRAPMODE_CHAR, * TEXT_WRAPMODE_NONE or TEXT_WRAPMODE_WORD.*/ char locale[24]; } StyleValues; /* * The following structure extends the StyleValues structure above with * graphics contexts used to actually draw the characters. The entries in * dInfoPtr->styleTable point to structures of this type. */ |
︙ | ︙ | |||
784 785 786 787 788 789 790 | * The variables below keep track of the highest-priority specification * that has occurred for each of the various fields of the StyleValues. */ Tcl_Size borderPrio, borderWidthPrio, reliefPrio, bgStipplePrio; Tcl_Size fgPrio, fontPrio, fgStipplePrio; Tcl_Size underlinePrio, elidePrio, justifyPrio, offsetPrio; Tcl_Size lMargin1Prio, lMargin2Prio, rMarginPrio; | | | > > > | 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 | * The variables below keep track of the highest-priority specification * that has occurred for each of the various fields of the StyleValues. */ Tcl_Size borderPrio, borderWidthPrio, reliefPrio, bgStipplePrio; Tcl_Size fgPrio, fontPrio, fgStipplePrio; Tcl_Size underlinePrio, elidePrio, justifyPrio, offsetPrio; Tcl_Size lMargin1Prio, lMargin2Prio, rMarginPrio; Tcl_Size lMarginColorPrio, rMarginColorPrio, localePrio; Tcl_Size spacing1Prio, spacing2Prio, spacing3Prio; Tcl_Size overstrikePrio, tabPrio, tabStylePrio, wrapPrio; /* * Find out what tags are present for the character, then compute a * StyleValues structure corresponding to those tags (scan through all of * the tags, saving information for the highest-priority tag). */ tagPtrs = TkBTreeGetTags(indexPtr, textPtr, &numTags); borderPrio = borderWidthPrio = reliefPrio = bgStipplePrio = -1; fgPrio = fontPrio = fgStipplePrio = -1; underlinePrio = elidePrio = justifyPrio = offsetPrio = -1; lMargin1Prio = lMargin2Prio = rMarginPrio = -1; lMarginColorPrio = rMarginColorPrio = localePrio = -1; spacing1Prio = spacing2Prio = spacing3Prio = -1; overstrikePrio = tabPrio = tabStylePrio = wrapPrio = -1; memset(&styleValues, 0, sizeof(StyleValues)); styleValues.relief = TK_RELIEF_FLAT; styleValues.fgColor = textPtr->fgColor; styleValues.underlineColor = textPtr->fgColor; styleValues.overstrikeColor = textPtr->fgColor; styleValues.tkfont = textPtr->tkfont; styleValues.justify = TK_JUSTIFY_LEFT; styleValues.spacing1 = textPtr->spacing1; styleValues.spacing2 = textPtr->spacing2; styleValues.spacing3 = textPtr->spacing3; styleValues.tabArrayPtr = textPtr->tabArrayPtr; styleValues.tabStyle = textPtr->tabStyle; styleValues.wrapMode = textPtr->wrapMode; styleValues.elide = 0; if (textPtr->localeObj) { strncpy(styleValues.locale, Tcl_GetString(textPtr->localeObj), sizeof(styleValues.locale)-1); } isSelected = 0; for (i = 0 ; i < numTags; i++) { if (textPtr->selTagPtr == tagPtrs[i]) { isSelected = 1; break; } |
︙ | ︙ | |||
986 987 988 989 990 991 992 993 994 995 996 997 998 999 | elidePrio = tagPtr->priority; } if ((tagPtr->wrapMode != TEXT_WRAPMODE_NULL) && (tagPtr->priority > wrapPrio)) { styleValues.wrapMode = tagPtr->wrapMode; wrapPrio = tagPtr->priority; } } if (tagPtrs != NULL) { ckfree(tagPtrs); } /* * Use an existing style if there's one around that matches. | > > > > > | 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 | elidePrio = tagPtr->priority; } if ((tagPtr->wrapMode != TEXT_WRAPMODE_NULL) && (tagPtr->priority > wrapPrio)) { styleValues.wrapMode = tagPtr->wrapMode; wrapPrio = tagPtr->priority; } if ((tagPtr->localeObj != NULL) && (tagPtr->priority > localePrio)) { strncpy(styleValues.locale, Tcl_GetString(tagPtr->localeObj), sizeof(styleValues.locale)-1); localePrio = tagPtr->priority; } } if (tagPtrs != NULL) { ckfree(tagPtrs); } /* * Use an existing style if there's one around that matches. |
︙ | ︙ | |||
7472 7473 7474 7475 7476 7477 7478 7479 7480 7481 7482 7483 7484 7485 | if (*heightPtr <= 0) { return -1; } } return 0; } /* *---------------------------------------------------------------------- * * TkTextDLineInfo -- * * Given an index, return information about the display line containing * that character. | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 7481 7482 7483 7484 7485 7486 7487 7488 7489 7490 7491 7492 7493 7494 7495 7496 7497 7498 7499 7500 7501 7502 7503 7504 7505 7506 7507 7508 7509 7510 7511 7512 7513 7514 7515 7516 7517 7518 7519 7520 7521 7522 7523 7524 7525 7526 7527 7528 7529 7530 7531 7532 7533 7534 7535 7536 7537 7538 7539 7540 7541 7542 7543 7544 7545 7546 7547 7548 7549 7550 7551 7552 7553 7554 7555 7556 7557 7558 7559 7560 7561 7562 7563 7564 7565 7566 7567 7568 7569 7570 7571 7572 | if (*heightPtr <= 0) { return -1; } } return 0; } /* *---------------------------------------------------------------------- * * TkTextIndexLocale -- * * Given an index, find the locale of the screen area occupied by * the entity (character, window, image) at that index. * * Results: * *locale will be filled with the locale. * * Side effects: * None. * *---------------------------------------------------------------------- */ Tcl_Obj * TkTextIndexLocale( TkText *textPtr, /* Widget record for text widget. */ const TkTextIndex *indexPtr)/* Index whose locale is desired. */ { TextDInfo *dInfoPtr = textPtr->dInfoPtr; DLine *dlPtr; TkTextDispChunk *chunkPtr; int byteCount; /* * Make sure that all of the screen layout information is up to date. */ if (dInfoPtr->flags & DINFO_OUT_OF_DATE) { UpdateDisplayInfo(textPtr); } /* * Find the display line containing the desired index. */ dlPtr = FindDLine(textPtr, dInfoPtr->dLinePtr, indexPtr); /* * Two cases shall be trapped here because the logic later really * needs dlPtr to be the display line containing indexPtr: * 1. if no display line contains the desired index (NULL dlPtr) * 2. if indexPtr is before the first display line, in which case * dlPtr currently points to the first display line */ if ((dlPtr == NULL) || (TkTextIndexCmp(&dlPtr->index, indexPtr) > 0)) { return textPtr->localeObj; } /* * Find the chunk within the display line that contains the desired * index. The chunks making the display line are skipped up to but not * including the one crossing indexPtr. Skipping is done based on * a byteCount offset possibly spanning several logical lines in case * they are elided. */ byteCount = TkTextIndexCountBytes(textPtr, &dlPtr->index, indexPtr); for (chunkPtr = dlPtr->chunkPtr; ; chunkPtr = chunkPtr->nextPtr) { if (chunkPtr == NULL) { return textPtr->localeObj; } if (byteCount < chunkPtr->numBytes) { break; } byteCount -= chunkPtr->numBytes; } if (!chunkPtr->stylePtr->sValuePtr->locale[0]) { return NULL; } return Tcl_NewStringObj(chunkPtr->stylePtr->sValuePtr->locale, TCL_INDEX_NONE); } /* *---------------------------------------------------------------------- * * TkTextDLineInfo -- * * Given an index, return information about the display line containing * that character. |
︙ | ︙ |
Changes to generic/tkTextTag.c.
︙ | ︙ | |||
37 38 39 40 41 42 43 44 45 46 47 48 49 50 | NULL, TCL_INDEX_NONE, offsetof(TkTextTag, justify), TK_OPTION_NULL_OK, 0,0}, {TK_OPTION_PIXELS, "-lmargin1", NULL, NULL, NULL, offsetof(TkTextTag, lMargin1Obj), offsetof(TkTextTag, lMargin1), TK_OPTION_NULL_OK,0,0}, {TK_OPTION_PIXELS, "-lmargin2", NULL, NULL, NULL, offsetof(TkTextTag, lMargin2Obj), offsetof(TkTextTag, lMargin2), TK_OPTION_NULL_OK,0,0}, {TK_OPTION_BORDER, "-lmargincolor", NULL, NULL, NULL, TCL_INDEX_NONE, offsetof(TkTextTag, lMarginColor), TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_PIXELS, "-offset", NULL, NULL, NULL, offsetof(TkTextTag, offsetObj), offsetof(TkTextTag, offset), TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_BOOLEAN, "-overstrike", NULL, NULL, NULL, TCL_INDEX_NONE, offsetof(TkTextTag, overstrike), TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_COLOR, "-overstrikefg", NULL, NULL, NULL, TCL_INDEX_NONE, offsetof(TkTextTag, overstrikeColor), | > > | 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | NULL, TCL_INDEX_NONE, offsetof(TkTextTag, justify), TK_OPTION_NULL_OK, 0,0}, {TK_OPTION_PIXELS, "-lmargin1", NULL, NULL, NULL, offsetof(TkTextTag, lMargin1Obj), offsetof(TkTextTag, lMargin1), TK_OPTION_NULL_OK,0,0}, {TK_OPTION_PIXELS, "-lmargin2", NULL, NULL, NULL, offsetof(TkTextTag, lMargin2Obj), offsetof(TkTextTag, lMargin2), TK_OPTION_NULL_OK,0,0}, {TK_OPTION_BORDER, "-lmargincolor", NULL, NULL, NULL, TCL_INDEX_NONE, offsetof(TkTextTag, lMarginColor), TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_STRING, "-locale", NULL, NULL, NULL, offsetof(TkTextTag, localeObj), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_PIXELS, "-offset", NULL, NULL, NULL, offsetof(TkTextTag, offsetObj), offsetof(TkTextTag, offset), TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_BOOLEAN, "-overstrike", NULL, NULL, NULL, TCL_INDEX_NONE, offsetof(TkTextTag, overstrike), TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_COLOR, "-overstrikefg", NULL, NULL, NULL, TCL_INDEX_NONE, offsetof(TkTextTag, overstrikeColor), |
︙ | ︙ | |||
973 974 975 976 977 978 979 980 981 982 983 984 985 986 | tagPtr->underline = -1; tagPtr->underlineColor = NULL; tagPtr->elide = -1; tagPtr->wrapMode = TEXT_WRAPMODE_NULL; tagPtr->affectsDisplay = 0; tagPtr->affectsDisplayGeometry = 0; textPtr->sharedTextPtr->numTags++; if (!strcmp(tagName, "sel")) { tagPtr->textPtr = textPtr; textPtr->refCount++; } else { CLANG_ASSERT(hPtr); Tcl_SetHashValue(hPtr, tagPtr); } | > | 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 | tagPtr->underline = -1; tagPtr->underlineColor = NULL; tagPtr->elide = -1; tagPtr->wrapMode = TEXT_WRAPMODE_NULL; tagPtr->affectsDisplay = 0; tagPtr->affectsDisplayGeometry = 0; textPtr->sharedTextPtr->numTags++; tagPtr->localeObj = NULL; if (!strcmp(tagName, "sel")) { tagPtr->textPtr = textPtr; textPtr->refCount++; } else { CLANG_ASSERT(hPtr); Tcl_SetHashValue(hPtr, tagPtr); } |
︙ | ︙ |
Changes to generic/ttk/ttkEntry.c.
︙ | ︙ | |||
117 118 119 120 121 122 123 124 125 126 127 128 129 130 | EntryStyleData styleData; /* Display style data (widget options) */ EntryStyleData styleDefaults;/* Style defaults (fallback values) */ Tcl_Obj *stateObj; /* Compatibility option -- see CheckStateObj */ Tcl_Obj *placeholderObj; /* Text to display for placeholder text */ /* * Derived resources: */ Ttk_TraceHandle *textVariableTrace; char *displayString; /* String to use when displaying */ Tk_TextLayout textLayout; /* Cached text layout information. */ | > > | 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 | EntryStyleData styleData; /* Display style data (widget options) */ EntryStyleData styleDefaults;/* Style defaults (fallback values) */ Tcl_Obj *stateObj; /* Compatibility option -- see CheckStateObj */ Tcl_Obj *placeholderObj; /* Text to display for placeholder text */ Tcl_Obj *localeObj; /* locale */ /* * Derived resources: */ Ttk_TraceHandle *textVariableTrace; char *displayString; /* String to use when displaying */ Tk_TextLayout textLayout; /* Cached text layout information. */ |
︙ | ︙ | |||
167 168 169 170 171 172 173 174 175 176 177 178 179 180 | 0,0,GEOMETRY_CHANGED}, {TK_OPTION_STRING, "-invalidcommand", "invalidCommand", "InvalidCommand", NULL, TCL_INDEX_NONE, offsetof(Entry, entry.invalidCmd), TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_JUSTIFY, "-justify", "justify", "Justify", "left", TCL_INDEX_NONE, offsetof(Entry, entry.justify), TK_OPTION_ENUM_VAR, 0, GEOMETRY_CHANGED}, {TK_OPTION_STRING, "-placeholder", "placeHolder", "PlaceHolder", NULL, offsetof(Entry, entry.placeholderObj), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_STRING, "-show", "show", "Show", NULL, TCL_INDEX_NONE, offsetof(Entry, entry.showChar), TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_STRING, "-state", "state", "State", | > > > | 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 | 0,0,GEOMETRY_CHANGED}, {TK_OPTION_STRING, "-invalidcommand", "invalidCommand", "InvalidCommand", NULL, TCL_INDEX_NONE, offsetof(Entry, entry.invalidCmd), TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_JUSTIFY, "-justify", "justify", "Justify", "left", TCL_INDEX_NONE, offsetof(Entry, entry.justify), TK_OPTION_ENUM_VAR, 0, GEOMETRY_CHANGED}, {TK_OPTION_STRING, "-locale", "locale", "Locale", NULL, offsetof(Entry, entry.localeObj), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_STRING, "-placeholder", "placeHolder", "PlaceHolder", NULL, offsetof(Entry, entry.placeholderObj), TCL_INDEX_NONE, TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_STRING, "-show", "show", "Show", NULL, TCL_INDEX_NONE, offsetof(Entry, entry.showChar), TK_OPTION_NULL_OK, 0, 0}, {TK_OPTION_STRING, "-state", "state", "State", |
︙ | ︙ |
Changes to library/entry.tcl.
︙ | ︙ | |||
161 162 163 164 165 166 167 | tk::EntrySeeInsert %W } bind Entry <Delete> { if {[%W selection present]} { %W delete sel.first sel.last } else { | | | | 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 | tk::EntrySeeInsert %W } bind Entry <Delete> { if {[%W selection present]} { %W delete sel.first sel.last } else { %W delete [tk::startOfCluster [%W get] [%W index insert] [$w cget -locale]] \ [tk::endOfCluster [%W get] [%W index insert] [$w cget -locale]] } } bind Entry <BackSpace> { tk::EntryBackspace %W } bind Entry <Control-space> { |
︙ | ︙ | |||
386 387 388 389 390 391 392 | } else { $w selection clear } } } word { if {$cur < $anchor} { | | | | | | | | 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 | } else { $w selection clear } } } word { if {$cur < $anchor} { set before [tk::wordBreakBefore [$w get] $cur [$w cget -locale]] set after [tk::wordBreakAfter [$w get] $anchor-1 [$w cget -locale]] } elseif {$cur > $anchor} { set before [tk::wordBreakBefore [$w get] $anchor [$w cget -locale]] set after [tk::wordBreakAfter [$w get] $cur-1 [$w cget -locale]] } else { if {[$w index @$Priv(pressX)] < $anchor} { incr anchor -1 } set before [tk::wordBreakBefore [$w get] $anchor [$w cget -locale]] set after [tk::wordBreakAfter [$w get] $anchor [$w cget -locale]] } if {$before < 0} { set before 0 } if {$after < 0} { set after end } |
︙ | ︙ | |||
516 517 518 519 520 521 522 | proc ::tk::EntryBackspace w { if {[$w selection present]} { $w delete sel.first sel.last } else { set x [expr {[$w index insert] - 1}] if {$x >= 0} { | | | | 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 | proc ::tk::EntryBackspace w { if {[$w selection present]} { $w delete sel.first sel.last } else { set x [expr {[$w index insert] - 1}] if {$x >= 0} { $w delete [tk::startOfCluster [$w get] $x [$w cget -locale]] \ [tk::endOfCluster [$w get] $x [$w cget -locale]] } if {[$w index @0] >= [$w index insert]} { set range [$w xview] set left [lindex $range 0] set right [lindex $range 1] $w xview moveto [expr {$left - ($right - $left)/2.0}] } |
︙ | ︙ | |||
596 597 598 599 600 601 602 | # start - Position at which to start search. proc ::tk::EntryNextWord {w start} { # the check on [winfo class] is because the spinbox also uses this proc if {[winfo class $w] eq "Entry" && [$w cget -show] ne ""} { return end } | | | | | | | | 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 | # start - Position at which to start search. proc ::tk::EntryNextWord {w start} { # the check on [winfo class] is because the spinbox also uses this proc if {[winfo class $w] eq "Entry" && [$w cget -show] ne ""} { return end } set pos [tk::endOfWord [$w get] [$w index $start] [$w cget -locale]] if {$pos >= 0} { set pos [tk::startOfNextWord [$w get] $pos [$w cget -locale]] } if {$pos < 0} { return end } return $pos } # ::tk::EntrySelectNextWord -- # Returns the index of the next end-of-word position after a given # position in the text. # # Arguments: # w - The entry window in which the cursor is to move. # start - Position at which to start search. proc ::tk::EntrySelectNextWord {w start} { # the check on [winfo class] is because the spinbox also uses this proc if {[winfo class $w] eq "Entry" && [$w cget -show] ne ""} { return end } set pos [tk::endOfWord [$w get] [$w index $start] [$w cget -locale]] if {$pos < 0} { return end } return $pos } # ::tk::EntryPreviousWord -- # # Returns the index of the previous word position before a given # position in the entry. # # Arguments: # w - The entry window in which the cursor is to move. # start - Position at which to start search. proc ::tk::EntryPreviousWord {w start} { # the check on [winfo class] is because the spinbox also uses this proc if {[winfo class $w] eq "Entry" && [$w cget -show] ne ""} { return 0 } set pos [tk::startOfPreviousWord [$w get] [$w index $start] [$w cget -locale]] if {$pos < 0} { return 0 } return $pos } proc ::tk::EntryNextChar {w start} { set pos [tk::endOfCluster [$w get] [$w index $start] [$w cget -locale]] if {$pos < 0} { return end } return $pos } proc ::tk::EntryPreviousChar {w start} { set pos [tk::startOfCluster [$w get] [expr {[$w index $start]-1}] [$w cget -locale]] if {$pos < 0} { return 0 } return $pos } |
︙ | ︙ |
Changes to library/spinbox.tcl.
︙ | ︙ | |||
171 172 173 174 175 176 177 | ::tk::EntrySeeInsert %W } bind Spinbox <Delete> { if {[%W selection present]} { %W delete sel.first sel.last } else { | | | | 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 | ::tk::EntrySeeInsert %W } bind Spinbox <Delete> { if {[%W selection present]} { %W delete sel.first sel.last } else { %W delete [tk::startOfCluster [%W get] [%W index insert] [$w cget -locale]] \ [tk::endOfCluster [%W get] [%W index insert] [$w cget -locale]] } } bind Spinbox <BackSpace> { ::tk::EntryBackspace %W } bind Spinbox <Control-space> { |
︙ | ︙ | |||
465 466 467 468 469 470 471 | } else { $w selection clear } } } word { if {$cur < [$w index anchor]} { | | | | | | 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 | } else { $w selection clear } } } word { if {$cur < [$w index anchor]} { set before [tk::wordBreakBefore [$w get] $cur [$w cget -locale]] set after [tk::wordBreakAfter [$w get] $anchor-1 [$w cget -locale]] } else { set before [tk::wordBreakBefore [$w get] $anchor [$w cget -locale]] set after [tk::wordBreakAfter [$w get] $cur-1 [$w cget -locale]] } if {$before < 0} { set before 0 } if {$after < 0} { set after end } |
︙ | ︙ |
Changes to library/text.tcl.
︙ | ︙ | |||
1121 1122 1123 1124 1125 1126 1127 | # op - Function to use to find next position. proc ::tk::TextNextPos {w start op} { set text "" set cur $start while {[$w compare $cur < end]} { set text $text[$w get -displaychars $cur "$cur lineend + 1c"] | | | 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 | # op - Function to use to find next position. proc ::tk::TextNextPos {w start op} { set text "" set cur $start while {[$w compare $cur < end]} { set text $text[$w get -displaychars $cur "$cur lineend + 1c"] set pos [$op $text 0 [$w locale $cur]] if {$pos >= 0} { return [$w index "$start + $pos display chars"] } set cur [$w index "$cur lineend +1c"] } return end } |
︙ | ︙ | |||
1144 1145 1146 1147 1148 1149 1150 | # op - Function to use to find next position. proc ::tk::TextPrevPos {w start op} { set text "" set cur $start while {[$w compare $cur > 0.0]} { set text [$w get -displaychars "$cur linestart - 1c" $cur]$text | | | 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 | # op - Function to use to find next position. proc ::tk::TextPrevPos {w start op} { set text "" set cur $start while {[$w compare $cur > 0.0]} { set text [$w get -displaychars "$cur linestart - 1c" $cur]$text set pos [$op $text end [$w locale $cur]] if {$pos >= 0} { return [$w index "$cur linestart - 1c + $pos display chars"] } set cur [$w index "$cur linestart - 1c"] } return 0.0 } |
︙ | ︙ |
Changes to library/ttk/entry.tcl.
︙ | ︙ | |||
253 254 255 256 257 258 259 | # end-of-word position after a given position in the text. # proc ttk::entry::NextWord {w start} { # the check on [winfo class] is because the spinbox and combobox also use this proc if {[winfo class $w] eq "TEntry" && [$w cget -show] ne ""} { return end } | | | | | | | | 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 | # end-of-word position after a given position in the text. # proc ttk::entry::NextWord {w start} { # the check on [winfo class] is because the spinbox and combobox also use this proc if {[winfo class $w] eq "TEntry" && [$w cget -show] ne ""} { return end } set pos [tk::endOfWord [$w get] [$w index $start] [$w cget -locale]] if {$pos >= 0} { set pos [tk::startOfNextWord [$w get] $pos [$w cget -locale]] } if {$pos < 0} { return end } return $pos } ## SelectNextWord -- # Returns the index of the next end-of-word position after a given # position in the text. # proc ttk::entry::SelectNextWord {w start} { # the check on [winfo class] is because the spinbox and combobox also use this proc if {[winfo class $w] eq "TEntry" && [$w cget -show] ne ""} { return end } set pos [tk::endOfWord [$w get] [$w index $start] [$w cget -locale]] if {$pos < 0} { return end } return $pos } ## PrevWord -- Find the previous word position. # proc ttk::entry::PrevWord {w start} { # the check on [winfo class] is because the spinbox and combobox also use this proc if {[winfo class $w] eq "TEntry" && [$w cget -show] ne ""} { return 0 } set pos [tk::startOfPreviousWord [$w get] [$w index $start] [$w cget -locale]] if {$pos < 0} { return 0 } return $pos } ## NextChar -- Find the next char position. # proc ttk::entry::NextChar {w start} { variable State set pos [tk::endOfCluster [$w get] [$w index $start] [$w cget -locale]] if {$pos < 0} { return end } return $pos } ## PrevChar -- Find the previous char position. # proc ttk::entry::PrevChar {w start} { set pos [tk::startOfCluster [$w get] [expr {[$w index $start]-1}] [$w cget -locale]] if {$pos < 0} { return 0 } return $pos } ## RelIndex -- Compute character/word/line-relative index. |
︙ | ︙ | |||
532 533 534 535 536 537 538 | $w icursor $to } ## WordSelect -- Select whole words between index $from and $to # proc ttk::entry::WordSelect {w from to} { if {$to < $from} { | | | | | | 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 | $w icursor $to } ## WordSelect -- Select whole words between index $from and $to # proc ttk::entry::WordSelect {w from to} { if {$to < $from} { set first [WordBack [$w get] $to [$w cget -locale]] set last [WordForward [$w get] $from [$w cget -locale]] $w icursor $first } else { set first [WordBack [$w get] $from [$w cget -locale]] set last [WordForward [$w get] $to [$w cget -locale]] $w icursor $last } $w selection range $first $last } ## WordBack, WordForward -- helper routines for WordSelect. # |
︙ | ︙ | |||
651 652 653 654 655 656 657 | if {[PendingDelete $w]} { See $w return } set x [expr {[$w index insert] - 1}] if {$x < 0} { return } | | | | | 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 | if {[PendingDelete $w]} { See $w return } set x [expr {[$w index insert] - 1}] if {$x < 0} { return } $w delete [tk::startOfCluster [$w get] $x [$w cget -locale]] [tk::endOfCluster [$w get] $x [$w cget -locale]] if {[$w index @0] >= [$w index insert]} { set range [$w xview] set left [lindex $range 0] set right [lindex $range 1] $w xview moveto [expr {$left - ($right - $left)/2.0}] } } ## Delete -- Delete the character after the insert cursor. # If there is a selection, delete that instead. # proc ttk::entry::Delete {w} { if {![PendingDelete $w]} { $w delete [tk::startOfCluster [$w get] [$w index insert] [$w cget -locale]] \ [tk::endOfCluster [$w get] [$w index insert] [$w cget -locale]] } } #*EOF* |
Changes to tests/entry.test.
︙ | ︙ | |||
822 823 824 825 826 827 828 | entry .e pack .e ; update idletasks update } -body { llength [.e configure] } -cleanup { destroy .e | | | 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 | entry .e pack .e ; update idletasks update } -body { llength [.e configure] } -cleanup { destroy .e } -result 39 test entry-3.16 {EntryWidgetCmd procedure, "configure" widget command} -setup { entry .e } -body { .e configure -foo } -cleanup { destroy .e } -returnCodes error -result {unknown option "-foo"} |
︙ | ︙ |
Changes to tests/spinbox.test.
︙ | ︙ | |||
1160 1161 1162 1163 1164 1165 1166 | spinbox .e pack .e update } -body { llength [.e configure] } -cleanup { destroy .e | | | 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 | spinbox .e pack .e update } -body { llength [.e configure] } -cleanup { destroy .e } -result 52 test spinbox-3.16 {SpinboxWidgetCmd procedure, "configure" widget command} -setup { spinbox .e } -body { .e configure -foo } -cleanup { destroy .e } -returnCodes error -result {unknown option "-foo"} |
︙ | ︙ |
Changes to tests/text.test.
︙ | ︙ | |||
948 949 950 951 952 953 954 | } -returnCodes {error} -result {wrong # args: should be ".t option ?arg ...?"} test text-3.2 {TextWidgetCmd procedure} -setup { text .t } -body { .t gorp 1.0 z 1.2 } -cleanup { destroy .t | | | 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 | } -returnCodes {error} -result {wrong # args: should be ".t option ?arg ...?"} test text-3.2 {TextWidgetCmd procedure} -setup { text .t } -body { .t gorp 1.0 z 1.2 } -cleanup { destroy .t } -returnCodes {error} -result {bad option "gorp": must be bbox, cget, compare, configure, count, debug, delete, dlineinfo, dump, edit, get, image, index, insert, locale, mark, peer, pendingsync, replace, scan, search, see, sync, tag, window, xview, or yview} test text-4.1 {TextWidgetCmd procedure, "bbox" option} -setup { text .t } -body { .t bbox } -cleanup { destroy .t |
︙ | ︙ | |||
1170 1171 1172 1173 1174 1175 1176 | Line 4 bOy GIrl .#@? x_yz !@#$% Line 7" .t co 1.0 z 1.2 } -cleanup { destroy .t | | | | 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 | Line 4 bOy GIrl .#@? x_yz !@#$% Line 7" .t co 1.0 z 1.2 } -cleanup { destroy .t } -returnCodes {error} -result {ambiguous option "co": must be bbox, cget, compare, configure, count, debug, delete, dlineinfo, dump, edit, get, image, index, insert, locale, mark, peer, pendingsync, replace, scan, search, see, sync, tag, window, xview, or yview} # "configure" option is already covered above test text-7.1 {TextWidgetCmd procedure, "debug" option} -setup { text .t } -body { .t debug 0 1 } -cleanup { destroy .t } -returnCodes {error} -result {wrong # args: should be ".t debug boolean"} test text-7.2 {TextWidgetCmd procedure, "debug" option} -setup { text .t } -body { .t de 0 1 } -cleanup { destroy .t } -returnCodes {error} -result {ambiguous option "de": must be bbox, cget, compare, configure, count, debug, delete, dlineinfo, dump, edit, get, image, index, insert, locale, mark, peer, pendingsync, replace, scan, search, see, sync, tag, window, xview, or yview} test text-7.3 {TextWidgetCmd procedure, "debug" option} -setup { text .t } -body { .t debug true .t deb } -cleanup { destroy .t |
︙ | ︙ | |||
3158 3159 3160 3161 3162 3163 3164 | } -returnCodes {error} -result {wrong # args: should be ".t index index"} test text-12.3 {TextWidgetCmd procedure, "index" option} -setup { text .t } -body { .t in a b } -cleanup { destroy .t | | | 3158 3159 3160 3161 3162 3163 3164 3165 3166 3167 3168 3169 3170 3171 3172 | } -returnCodes {error} -result {wrong # args: should be ".t index index"} test text-12.3 {TextWidgetCmd procedure, "index" option} -setup { text .t } -body { .t in a b } -cleanup { destroy .t } -returnCodes {error} -result {ambiguous option "in": must be bbox, cget, compare, configure, count, debug, delete, dlineinfo, dump, edit, get, image, index, insert, locale, mark, peer, pendingsync, replace, scan, search, see, sync, tag, window, xview, or yview} test text-12.4 {TextWidgetCmd procedure, "index" option} -setup { text .t } -body { .t index @xyz } -cleanup { destroy .t } -returnCodes {error} -result {bad text index "@xyz"} |
︙ | ︙ |
Changes to tests/textTag.test.
︙ | ︙ | |||
304 305 306 307 308 309 310 311 312 313 314 315 316 317 | .t tag configure x -underlinefg [lindex [.t tag configure x -underlinefg] 3] } -result {red} test textTag-1.37 {configuration options} -body { .t tag configure x -underlinefg stupid } -cleanup { .t tag configure x -underlinefg [lindex [.t tag configure x -underlinefg] 3] } -returnCodes error -result {unknown color name "stupid"} test textTag-2.1 {TkTextTagCmd - "add" option} -body { .t tag } -returnCodes error -result {wrong # args: should be ".t tag option ?arg ...?"} test textTag-2.2 {TkTextTagCmd - "add" option} -body { .t tag gorp | > > > > > > > > > > > > > > | 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 | .t tag configure x -underlinefg [lindex [.t tag configure x -underlinefg] 3] } -result {red} test textTag-1.37 {configuration options} -body { .t tag configure x -underlinefg stupid } -cleanup { .t tag configure x -underlinefg [lindex [.t tag configure x -underlinefg] 3] } -returnCodes error -result {unknown color name "stupid"} test textTag-1.38 {configuration options, -locale} -body { .t tag configure x -locale regexp .t tag add x 1.0 1.3 list [.t locale 1.0] [.t locale 1.2] [.t locale 1.3] } -cleanup { .t tag configure x -locale {} } -result {regexp regexp {}} test textTag-1.39 {configuration options, -locale} -body { .t configure -locale regexp .t tag configure x -locale abc list [.t locale 1.0] [.t locale 1.2] [.t locale 1.3] } -cleanup { .t tag configure x -locale {} } -result {abc abc regexp} test textTag-2.1 {TkTextTagCmd - "add" option} -body { .t tag } -returnCodes error -result {wrong # args: should be ".t tag option ?arg ...?"} test textTag-2.2 {TkTextTagCmd - "add" option} -body { .t tag gorp |
︙ | ︙ |