summaryrefslogtreecommitdiffstats
path: root/generic
diff options
context:
space:
mode:
authorhobbs2 <hobbs2>2008-02-22 20:02:25 (GMT)
committerhobbs2 <hobbs2>2008-02-22 20:02:25 (GMT)
commit71c9f66e96564c6c64a0af9a7ae8c06d4e65ceec (patch)
treea1d57440a6c59be3bd9fe493b1095a5bd0c4769d /generic
parentcc0ebd8c98554e1de39557862b280a3418d34044 (diff)
downloadtktreectrl-71c9f66e96564c6c64a0af9a7ae8c06d4e65ceec.zip
tktreectrl-71c9f66e96564c6c64a0af9a7ae8c06d4e65ceec.tar.gz
tktreectrl-71c9f66e96564c6c64a0af9a7ae8c06d4e65ceec.tar.bz2
* generic/tkTreeNotify.c (Percents_ItemDelete, ExpandItemList)
(Percents_ItemVisibility, Percents_Selection): remove TclFormatInt * generic/qebind.c (QE_ExpandNumber): references and add ExpandItemList to simplify item list expansion. Corrects crash with 8.4-built treectrl used in 8.5.
Diffstat (limited to 'generic')
-rw-r--r--generic/qebind.c3
-rw-r--r--generic/tkTreeNotify.c113
2 files changed, 50 insertions, 66 deletions
diff --git a/generic/qebind.c b/generic/qebind.c
index e7326b0..e3b0819 100644
--- a/generic/qebind.c
+++ b/generic/qebind.c
@@ -5,7 +5,7 @@
*
* Copyright (c) 2002-2008 Tim Baker
*
- * RCS: @(#) $Id: qebind.c,v 1.19 2008/01/22 01:03:02 treectrl Exp $
+ * RCS: @(#) $Id: qebind.c,v 1.20 2008/02/22 20:02:25 hobbs2 Exp $
*/
/*
@@ -1453,7 +1453,6 @@ void QE_ExpandNumber(long number, Tcl_DString *result)
{
char numStorage[TCL_INTEGER_SPACE];
- /* TclFormatInt() */
(void) sprintf(numStorage, "%ld", number);
Tcl_DStringAppend(result, numStorage, -1);
/* QE_ExpandString(numStorage, result); */
diff --git a/generic/tkTreeNotify.c b/generic/tkTreeNotify.c
index d262ebb..b3a2d9f 100644
--- a/generic/tkTreeNotify.c
+++ b/generic/tkTreeNotify.c
@@ -5,7 +5,7 @@
*
* Copyright (c) 2002-2008 Tim Baker
*
- * RCS: @(#) $Id: tkTreeNotify.c,v 1.23 2008/01/22 01:03:02 treectrl Exp $
+ * RCS: @(#) $Id: tkTreeNotify.c,v 1.24 2008/02/22 20:02:26 hobbs2 Exp $
*/
#include "tkTreeCtrl.h"
@@ -47,12 +47,51 @@ ExpandItem(
Tcl_DString *result /* Gets appended. Caller must initialize. */
)
{
- if (tree->itemPrefixLen) {
+ char buf[10 + TCL_INTEGER_SPACE];
+ (void) sprintf(buf, "%s%d",
+ (tree->itemPrefixLen ? tree->itemPrefix : ""), id);
+ Tcl_DStringAppend(result, buf, -1);
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * ExpandItemList --
+ *
+ * Append a list of item IDs to a dynamic string.
+ *
+ * Results:
+ * DString gets longer.
+ *
+ * Side effects:
+ * Memory may be allocated.
+ *
+ *----------------------------------------------------------------------
+ */
+
+static void
+ExpandItemList(
+ TreeCtrl *tree, /* Widget info. */
+ TreeItemList *itemList, /* list of item IDs */
+ Tcl_DString *result /* Gets appended. Caller must initialize. */
+ )
+{
+ if (itemList == NULL) {
+ Tcl_DStringAppend(result, "{}", 2);
+ } else {
+ int i, count;
char buf[10 + TCL_INTEGER_SPACE];
- (void) sprintf(buf, "%s%d", tree->itemPrefix, id);
- Tcl_DStringAppend(result, buf, -1);
- } else
- QE_ExpandNumber(id, result);
+
+ Tcl_DStringStartSublist(result);
+ count = TreeItemList_Count(itemList);
+ for (i = 0; i < count; i++) {
+ (void) sprintf(buf, "%s%d",
+ (tree->itemPrefixLen ? tree->itemPrefix : ""),
+ TreeItem_GetID(tree, TreeItemList_Nth(itemList, i)));
+ Tcl_DStringAppendElement(result, buf);
+ }
+ Tcl_DStringEndSublist(result);
+ }
}
/*
@@ -226,30 +265,13 @@ Percents_ItemVisibility(
TreeItemList *v;
TreeItemList *h;
} *data = args->clientData;
- TreeCtrl *tree = data->tree;
TreeItemList *table;
- int i, count;
switch (args->which) {
case 'v':
case 'h':
table = (args->which == 'v') ? data->v : data->h;
- Tcl_DStringStartSublist(args->result);
- count = TreeItemList_Count(table);
- for (i = 0; i < count; i++) {
- TreeItem item = TreeItemList_Nth(table, i);
- if (tree->itemPrefixLen) {
- char buf[10 + TCL_INTEGER_SPACE];
- (void) sprintf(buf, "%s%d", tree->itemPrefix,
- TreeItem_GetID(tree, item));
- Tcl_DStringAppendElement(args->result, buf);
- } else {
- char string[TCL_INTEGER_SPACE];
- TclFormatInt(string, TreeItem_GetID(tree, item));
- Tcl_DStringAppendElement(args->result, string);
- }
- }
- Tcl_DStringEndSublist(args->result);
+ ExpandItemList(data->tree, table, args->result);
break;
default:
@@ -285,37 +307,17 @@ Percents_Selection(
TreeItemList *deselect;
int count;
} *data = args->clientData;
- TreeCtrl *tree = data->tree;
TreeItemList *itemList;
- int i, count;
switch (args->which) {
case 'c':
QE_ExpandNumber(data->count, args->result);
break;
+
case 'D':
case 'S':
itemList = (args->which == 'D') ? data->deselect : data->select;
- if (itemList == NULL) {
- Tcl_DStringAppend(args->result, "{}", 2);
- break;
- }
- Tcl_DStringStartSublist(args->result);
- count = TreeItemList_Count(itemList);
- for (i = 0; i < count; i++) {
- TreeItem item = TreeItemList_Nth(itemList, i);
- if (tree->itemPrefixLen) {
- char buf[10 + TCL_INTEGER_SPACE];
- (void) sprintf(buf, "%s%d", tree->itemPrefix,
- TreeItem_GetID(tree, item));
- Tcl_DStringAppendElement(args->result, buf);
- } else {
- char string[TCL_INTEGER_SPACE];
- TclFormatInt(string, TreeItem_GetID(tree, item));
- Tcl_DStringAppendElement(args->result, string);
- }
- }
- Tcl_DStringEndSublist(args->result);
+ ExpandItemList(data->tree, itemList, args->result);
break;
default:
@@ -706,27 +708,10 @@ Percents_ItemDelete(
TreeCtrl *tree; /* Must be first. See Percents_Any(). */
TreeItemList *items;
} *data = args->clientData;
- TreeCtrl *tree = data->tree;
- int i, count;
switch (args->which) {
case 'i':
- Tcl_DStringStartSublist(args->result);
- count = TreeItemList_Count(data->items);
- for (i = 0; i < count; i++) {
- TreeItem item = TreeItemList_Nth(data->items, i);
- if (tree->itemPrefixLen) {
- char buf[10 + TCL_INTEGER_SPACE];
- (void) sprintf(buf, "%s%d", tree->itemPrefix,
- TreeItem_GetID(tree, item));
- Tcl_DStringAppendElement(args->result, buf);
- } else {
- char string[TCL_INTEGER_SPACE];
- TclFormatInt(string, TreeItem_GetID(tree, item));
- Tcl_DStringAppendElement(args->result, string);
- }
- }
- Tcl_DStringEndSublist(args->result);
+ ExpandItemList(data->tree, data->items, args->result);
break;
default: