summaryrefslogtreecommitdiffstats
path: root/generic
diff options
context:
space:
mode:
authorDavid N. Welton <davidw@dedasys.com>2009-02-25 16:06:05 (GMT)
committerDavid N. Welton <davidw@dedasys.com>2009-02-25 16:20:23 (GMT)
commit54518b28e6ef1585e35bed9cb92e3f5efb53e011 (patch)
treeea6d256541f9fabfefeee660785c07c95b172785 /generic
parentea23a1eb5e2e295b6baefabc459eb7817fced9a5 (diff)
downloadtktreectrl-54518b28e6ef1585e35bed9cb92e3f5efb53e011.zip
tktreectrl-54518b28e6ef1585e35bed9cb92e3f5efb53e011.tar.gz
tktreectrl-54518b28e6ef1585e35bed9cb92e3f5efb53e011.tar.bz2
Removed SELECTION_VISIBLE define in favor of runtime option.
Diffstat (limited to 'generic')
-rw-r--r--generic/tkTreeCtrl.c80
-rw-r--r--generic/tkTreeCtrl.h3
-rw-r--r--generic/tkTreeDisplay.c4
-rw-r--r--generic/tkTreeItem.c28
4 files changed, 53 insertions, 62 deletions
diff --git a/generic/tkTreeCtrl.c b/generic/tkTreeCtrl.c
index 7c6af90..1e7c7f8 100644
--- a/generic/tkTreeCtrl.c
+++ b/generic/tkTreeCtrl.c
@@ -132,8 +132,7 @@ static Tk_OptionSpec optionSpecs[] = {
0, (ClientData) doubleBufferST, TREE_CONF_REDISPLAY},
{TK_OPTION_PIXELS, "-fillstripes", "fillStripes", "FillStripes",
- "1", Tk_Offset(TreeCtrl, fillStripesObj),
- Tk_Offset(TreeCtrl, fillStripes),
+ "1", -1, Tk_Offset(TreeCtrl, fillStripes),
0, (ClientData) NULL, TREE_CONF_RELAYOUT},
{TK_OPTION_SYNONYM, "-fg", (char *) NULL, (char *) NULL,
@@ -221,6 +220,11 @@ static Tk_OptionSpec optionSpecs[] = {
{TK_OPTION_STRING, "-scrollmargin", "scrollMargin", "ScrollMargin",
"0", Tk_Offset(TreeCtrl, scrollMargin), -1,
0, (ClientData) NULL, 0},
+
+ {TK_OPTION_BOOLEAN, "-selectionvisible", "selectionVisible", "SelectionVisible",
+ "1", -1, Tk_Offset(TreeCtrl, selectionVisible),
+ TK_OPTION_NULL_OK, (ClientData) NULL, 0},
+
{TK_OPTION_STRING, "-selectmode", "selectMode", "SelectMode",
DEF_LISTBOX_SELECT_MODE, -1, Tk_Offset(TreeCtrl, selectMode),
TK_OPTION_NULL_OK, (ClientData) NULL, 0},
@@ -767,9 +771,9 @@ static int TreeWidgetCmd(
TreeItemList_Free(&items);
TreeItemList_Free(&item2s);
}
-#ifdef SELECTION_VISIBLE
+ if (tree->selectionVisible) {
Tree_DeselectHidden(tree);
-#endif
+ }
break;
}
#endif /* DEPRECATED */
@@ -1365,7 +1369,7 @@ TreeConfigure(
if ((Tcl_ListObjGetElements(interp, tree->wrapObj, &listObjc,
&listObjv) != TCL_OK) || (listObjc > 2)) {
-badWrap:
+ badWrap:
FormatResult(interp, "bad wrap \"%s\"",
Tcl_GetString(tree->wrapObj));
continue;
@@ -2472,11 +2476,11 @@ Tree_AddToSelection(
Tcl_HashEntry *hPtr;
int isNew;
-#ifdef SELECTION_VISIBLE
+ if (tree->selectionVisible) {
if (!TreeItem_ReallyVisible(tree, item))
panic("Tree_AddToSelection: item %d not ReallyVisible",
TreeItem_GetID(tree, item));
-#endif
+ }
if (TreeItem_GetSelected(tree, item))
panic("Tree_AddToSelection: item %d already selected",
TreeItem_GetID(tree, item));
@@ -2606,14 +2610,10 @@ TreeSelectionCmd(
hPtr = Tcl_FirstHashEntry(&tree->itemHash, &search);
while (hPtr != NULL) {
item = (TreeItem) Tcl_GetHashValue(hPtr);
-#ifdef SELECTION_VISIBLE
if (!TreeItem_GetSelected(tree, item) &&
TreeItem_GetEnabled(tree, item) &&
- TreeItem_ReallyVisible(tree, item)) {
-#else
- if (!TreeItem_GetSelected(tree, item) &&
- TreeItem_GetEnabled(tree, item)) {
-#endif
+ (!tree->selectionVisible ||
+ (tree->selectionVisible && TreeItem_ReallyVisible(tree, item)))) {
Tree_AddToSelection(tree, item);
TreeItemList_Append(&items, item);
}
@@ -2629,14 +2629,10 @@ TreeSelectionCmd(
return TCL_ERROR;
TreeItemList_Init(tree, &items, count);
while (1) {
-#ifdef SELECTION_VISIBLE
- if (!TreeItem_GetSelected(tree, itemFirst) &&
- TreeItem_GetEnabled(tree, itemFirst) &&
- TreeItem_ReallyVisible(tree, itemFirst)) {
-#else
- if (!TreeItem_GetSelected(tree, itemFirst) &&
- TreeItem_GetEnabled(tree, itemFirst)) {
-#endif
+ if (!TreeItem_GetSelected(tree, item) &&
+ TreeItem_GetEnabled(tree, item) &&
+ (!tree->selectionVisible ||
+ (tree->selectionVisible && TreeItem_ReallyVisible(tree, item)))) {
Tree_AddToSelection(tree, itemFirst);
TreeItemList_Append(&items, itemFirst);
}
@@ -2650,19 +2646,15 @@ TreeSelectionCmd(
TreeItemList_Init(tree, &items, count);
for (i = 0; i < count; i++) {
item = TreeItemList_Nth(&itemsFirst, i);
-#ifdef SELECTION_VISIBLE
if (!TreeItem_GetSelected(tree, item) &&
TreeItem_GetEnabled(tree, item) &&
- TreeItem_ReallyVisible(tree, item)) {
-#else
- if (!TreeItem_GetSelected(tree, item) &&
- TreeItem_GetEnabled(tree, item)) {
-#endif
+ (!tree->selectionVisible ||
+ (tree->selectionVisible && TreeItem_ReallyVisible(tree, item)))) {
Tree_AddToSelection(tree, item);
TreeItemList_Append(&items, item);
}
}
-doneADD:
+ doneADD:
if (TreeItemList_Count(&items)) {
TreeNotify_Selection(tree, &items, NULL);
}
@@ -2757,7 +2749,7 @@ doneADD:
}
}
TreeItemList_Free(&itemsFirst);
-doneCLEAR:
+ doneCLEAR:
if (TreeItemList_Count(&items)) {
TreeNotify_Selection(tree, NULL, &items);
}
@@ -2780,7 +2772,7 @@ doneCLEAR:
Tcl_HashEntry *hPtr;
Tcl_HashSearch search;
-#ifdef SELECTION_VISIBLE
+ if (tree->selectionVisible) {
if (objc < 3 || objc > 5) {
Tcl_WrongNumArgs(interp, 3, objv, "?first? ?last?");
return TCL_ERROR;
@@ -2835,14 +2827,14 @@ doneCLEAR:
TreeItemList_Free(&items);
break;
}
-#else /* SELECTION_VISIBLE */
+ } else { /* SELECTION_VISIBLE */
/* If any item may be selected, including orphans, then getting
* a sorted list of selected items is impossible. */
if (objc != 3) {
Tcl_WrongNumArgs(interp, 3, objv, (char *) NULL);
return TCL_ERROR;
}
-#endif /* SELECTION_VISIBLE */
+ } /* SELECTION_VISIBLE */
if (tree->selectCount < 1)
break;
@@ -2955,7 +2947,7 @@ doneCLEAR:
/* Select all */
if (allS) {
TreeItemList_Init(tree, &newS, tree->itemCount - tree->selectCount);
-#ifdef SELECTION_VISIBLE
+ if (tree->selectionVisible) {
item = tree->root;
if (!TreeItem_ReallyVisible(tree, item))
item = TreeItem_NextVisible(tree, item);
@@ -2966,7 +2958,7 @@ doneCLEAR:
}
item = TreeItem_NextVisible(tree, item);
}
-#else
+ } else {
/* Include detached items */
hPtr = Tcl_FirstHashEntry(&tree->itemHash, &search);
while (hPtr != NULL) {
@@ -2977,7 +2969,7 @@ doneCLEAR:
}
hPtr = Tcl_NextHashEntry(&search);
}
-#endif
+ }
/* Ignore the deselect list. */
goto modifyDONE;
}
@@ -2991,10 +2983,10 @@ doneCLEAR:
continue;
if (!TreeItem_GetEnabled(tree, item))
continue;
-#ifdef SELECTION_VISIBLE
+ if (tree->selectionVisible) {
if (!TreeItem_ReallyVisible(tree, item))
continue;
-#endif
+ }
TreeItemList_Append(&newS, item);
}
}
@@ -3034,7 +3026,7 @@ doneCLEAR:
}
}
}
-modifyDONE:
+ modifyDONE:
for (i = 0; i < TreeItemList_Count(&newS); i++)
Tree_AddToSelection(tree, TreeItemList_Nth(&newS, i));
for (i = 0; i < TreeItemList_Count(&newD); i++)
@@ -3578,7 +3570,7 @@ Tree_ReleaseItems(
*/
/*
-textlayout $font $text
+ textlayout $font $text
-width pixels
-wrap word|char
-justify left|center|right
@@ -4274,7 +4266,7 @@ Treectrl_Init(
return TCL_ERROR;
}
return Tcl_EvalEx(interp, initScript, -1, TCL_EVAL_GLOBAL);
-}
+ }
/*
*--------------------------------------------------------------
@@ -4293,11 +4285,11 @@ Treectrl_Init(
*--------------------------------------------------------------
*/
-DLLEXPORT int
-Treectrl_SafeInit(
+ DLLEXPORT int
+ Treectrl_SafeInit(
Tcl_Interp *interp /* Interpreter the package is loading into. */
)
-{
+ {
return Treectrl_Init(interp);
-}
+ }
diff --git a/generic/tkTreeCtrl.h b/generic/tkTreeCtrl.h
index 96bb93b..59f7d1c 100644
--- a/generic/tkTreeCtrl.h
+++ b/generic/tkTreeCtrl.h
@@ -37,7 +37,6 @@ extern void dbwin_add_interp(Tcl_Interp *interp);
#define MAX(a,b) ((a) > (b) ? (a) : (b))
#endif
-#define SELECTION_VISIBLE
#define ALLOC_HAX
#define DEPRECATED
#define PACKAGE_PATCHLEVEL "/""/"
@@ -407,8 +406,8 @@ struct TreeCtrl
int itemTagExpr; /* Enable/disable operators in item tags */
int columnTagExpr; /* Enable/disable operators in column tags */
- Tcl_Obj* fillStripesObj; /* Enable filling empty space with more stripes. */
int fillStripes; /* Enable filling empty space with more stripes. */
+ int selectionVisible; /* Allow non-visible items to be selected. */
int iAverageHeight;
};
diff --git a/generic/tkTreeDisplay.c b/generic/tkTreeDisplay.c
index 3e65b0d..6ceaa4b 100644
--- a/generic/tkTreeDisplay.c
+++ b/generic/tkTreeDisplay.c
@@ -5373,12 +5373,12 @@ displayRetry:
/* Some change requires selection changes */
if (dInfo->flags & DINFO_REDO_SELECTION) {
-#ifdef SELECTION_VISIBLE
+ if (tree->selectionVisible) {
/* Possible <Selection> event. */
Tree_DeselectHidden(tree);
if (tree->deleted)
goto displayExit;
-#endif
+ }
dInfo->flags &= ~(DINFO_REDO_SELECTION);
}
diff --git a/generic/tkTreeItem.c b/generic/tkTreeItem.c
index 32e9e72..e776235 100644
--- a/generic/tkTreeItem.c
+++ b/generic/tkTreeItem.c
@@ -7029,7 +7029,6 @@ ItemTagCmd(
return result;
}
-#ifdef SELECTION_VISIBLE
/*
*----------------------------------------------------------------------
@@ -7063,6 +7062,8 @@ Tree_DeselectHidden(
TreeItem item;
int i;
+ fprintf(stderr, "bingbong %d\n", tree->selectionVisible);
+
if (tree->selectCount < 1)
return;
@@ -7086,7 +7087,6 @@ Tree_DeselectHidden(
TreeItemList_Free(&items);
}
-#endif /* SELECTION_VISIBLE */
/*
*----------------------------------------------------------------------
@@ -7464,9 +7464,9 @@ TreeItemCmd(
TreeItem_OpenClose(tree, item, mode);
}
TreeItemList_Free(&items);
-#ifdef SELECTION_VISIBLE
+ if (tree->selectionVisible) {
Tree_DeselectHidden(tree);
-#endif
+ }
break;
}
/* T item compare I op I */
@@ -7780,9 +7780,9 @@ TreeItemCmd(
item2->parent = item;
item->numChildren++;
TreeItem_AddToParent(tree, item2);
-#ifdef SELECTION_VISIBLE
+ if (tree->selectionVisible) {
Tree_DeselectHidden(tree);
-#endif
+ }
}
if (item->firstChild != NULL)
Tcl_SetObjResult(interp, TreeItem_ToObj(tree, item->firstChild));
@@ -7823,9 +7823,9 @@ TreeItemCmd(
item2->parent = item;
item->numChildren++;
TreeItem_AddToParent(tree, item2);
-#ifdef SELECTION_VISIBLE
+ if (tree->selectionVisible) {
Tree_DeselectHidden(tree);
-#endif
+ }
}
if (item->lastChild != NULL)
Tcl_SetObjResult(interp, TreeItem_ToObj(tree, item->lastChild));
@@ -7844,9 +7844,9 @@ TreeItemCmd(
item2->parent = item->parent;
item->parent->numChildren++;
TreeItem_AddToParent(tree, item2);
-#ifdef SELECTION_VISIBLE
+ if (tree->selectionVisible) {
Tree_DeselectHidden(tree);
-#endif
+ }
}
if (item->nextSibling != NULL)
Tcl_SetObjResult(interp, TreeItem_ToObj(tree, item->nextSibling));
@@ -7915,9 +7915,9 @@ TreeItemCmd(
item2->parent = item->parent;
item->parent->numChildren++;
TreeItem_AddToParent(tree, item2);
-#ifdef SELECTION_VISIBLE
+ if (tree->selectionVisible) {
Tree_DeselectHidden(tree);
-#endif
+ }
}
if (item->prevSibling != NULL)
Tcl_SetObjResult(interp, TreeItem_ToObj(tree, item->prevSibling));
@@ -7938,9 +7938,9 @@ TreeItemCmd(
if (tree->debug.enable && tree->debug.data)
Tree_Debug(tree);
Tree_InvalidateColumnWidth(tree, NULL);
-#ifdef SELECTION_VISIBLE
+ if (tree->selectionVisible) {
Tree_DeselectHidden(tree);
-#endif
+ }
break;
}
case COMMAND_RNC: {