summaryrefslogtreecommitdiffstats
path: root/generic/tkTreeDrag.c
diff options
context:
space:
mode:
authortreectrl <treectrl>2005-09-16 23:24:20 (GMT)
committertreectrl <treectrl>2005-09-16 23:24:20 (GMT)
commit57aa137a3d2ccd20c7fd09baa635e3933eee4d5e (patch)
tree3f32116bcc8503352a4ba14546c0081a024589c7 /generic/tkTreeDrag.c
parentbf00b9981a50c5594017ed97e252b84548732128 (diff)
downloadtktreectrl-57aa137a3d2ccd20c7fd09baa635e3933eee4d5e.zip
tktreectrl-57aa137a3d2ccd20c7fd09baa635e3933eee4d5e.tar.gz
tktreectrl-57aa137a3d2ccd20c7fd09baa635e3933eee4d5e.tar.bz2
Converted to tab+space indentation.
Diffstat (limited to 'generic/tkTreeDrag.c')
-rw-r--r--generic/tkTreeDrag.c770
1 files changed, 385 insertions, 385 deletions
diff --git a/generic/tkTreeDrag.c b/generic/tkTreeDrag.c
index 4192faf..09e695e 100644
--- a/generic/tkTreeDrag.c
+++ b/generic/tkTreeDrag.c
@@ -5,7 +5,7 @@
*
* Copyright (c) 2002-2005 Tim Baker
*
- * RCS: @(#) $Id: tkTreeDrag.c,v 1.13 2005/07/12 02:50:34 treectrl Exp $
+ * RCS: @(#) $Id: tkTreeDrag.c,v 1.14 2005/09/16 23:24:20 treectrl Exp $
*/
#include "tkTreeCtrl.h"
@@ -15,472 +15,472 @@ typedef struct DragImage DragImage;
struct DragElem
{
- int x, y, width, height;
- DragElem *next;
+ int x, y, width, height;
+ DragElem *next;
};
struct DragImage
{
- TreeCtrl *tree;
- Tk_OptionTable optionTable;
- int visible;
- int x, y; /* offset to draw at in canvas coords */
- int bounds[4]; /* bounds of all DragElems */
- DragElem *elem;
- int onScreen; /* TRUE if is displayed */
- int sx, sy; /* Window coords where displayed */
+ TreeCtrl *tree;
+ Tk_OptionTable optionTable;
+ int visible;
+ int x, y; /* offset to draw at in canvas coords */
+ int bounds[4]; /* bounds of all DragElems */
+ DragElem *elem;
+ int onScreen; /* TRUE if is displayed */
+ int sx, sy; /* Window coords where displayed */
};
#define DRAG_CONF_VISIBLE 0x0001
static Tk_OptionSpec optionSpecs[] = {
- {TK_OPTION_BOOLEAN, "-visible", (char *) NULL, (char *) NULL,
- "0", -1, Tk_Offset(DragImage, visible),
- 0, (ClientData) NULL, DRAG_CONF_VISIBLE},
- {TK_OPTION_END, (char *) NULL, (char *) NULL, (char *) NULL,
- (char *) NULL, 0, -1, 0, 0, 0}
+ {TK_OPTION_BOOLEAN, "-visible", (char *) NULL, (char *) NULL,
+ "0", -1, Tk_Offset(DragImage, visible),
+ 0, (ClientData) NULL, DRAG_CONF_VISIBLE},
+ {TK_OPTION_END, (char *) NULL, (char *) NULL, (char *) NULL,
+ (char *) NULL, 0, -1, 0, 0, 0}
};
static DragElem *DragElem_Alloc(DragImage *dragImage)
{
- DragElem *elem = (DragElem *) ckalloc(sizeof(DragElem));
- DragElem *walk = dragImage->elem;
- memset(elem, '\0', sizeof(DragElem));
- if (dragImage->elem == NULL)
- dragImage->elem = elem;
- else
- {
- while (walk->next != NULL)
- walk = walk->next;
- walk->next = elem;
- }
- return elem;
+ DragElem *elem = (DragElem *) ckalloc(sizeof(DragElem));
+ DragElem *walk = dragImage->elem;
+ memset(elem, '\0', sizeof(DragElem));
+ if (dragImage->elem == NULL)
+ dragImage->elem = elem;
+ else
+ {
+ while (walk->next != NULL)
+ walk = walk->next;
+ walk->next = elem;
+ }
+ return elem;
}
static DragElem *DragElem_Free(DragImage *dragImage, DragElem *elem)
{
- DragElem *next = elem->next;
- WFREE(elem, DragElem);
- return next;
+ DragElem *next = elem->next;
+ WFREE(elem, DragElem);
+ return next;
}
int TreeDragImage_Init(TreeCtrl *tree)
{
- DragImage *dragImage;
-
- dragImage = (DragImage *) ckalloc(sizeof(DragImage));
- memset(dragImage, '\0', sizeof(DragImage));
- dragImage->tree = tree;
- dragImage->optionTable = Tk_CreateOptionTable(tree->interp, optionSpecs);
- if (Tk_InitOptions(tree->interp, (char *) dragImage, dragImage->optionTable,
- tree->tkwin) != TCL_OK)
- {
- WFREE(dragImage, DragImage);
- return TCL_ERROR;
- }
- tree->dragImage = (TreeDragImage) dragImage;
- return TCL_OK;
+ DragImage *dragImage;
+
+ dragImage = (DragImage *) ckalloc(sizeof(DragImage));
+ memset(dragImage, '\0', sizeof(DragImage));
+ dragImage->tree = tree;
+ dragImage->optionTable = Tk_CreateOptionTable(tree->interp, optionSpecs);
+ if (Tk_InitOptions(tree->interp, (char *) dragImage, dragImage->optionTable,
+ tree->tkwin) != TCL_OK)
+ {
+ WFREE(dragImage, DragImage);
+ return TCL_ERROR;
+ }
+ tree->dragImage = (TreeDragImage) dragImage;
+ return TCL_OK;
}
void TreeDragImage_Free(TreeDragImage dragImage_)
{
- DragImage *dragImage = (DragImage *) dragImage_;
- DragElem *elem = dragImage->elem;
-
- while (elem != NULL)
- elem = DragElem_Free(dragImage, elem);
- Tk_FreeConfigOptions((char *) dragImage, dragImage->optionTable,
- dragImage->tree->tkwin);
- WFREE(dragImage, DragImage);
+ DragImage *dragImage = (DragImage *) dragImage_;
+ DragElem *elem = dragImage->elem;
+
+ while (elem != NULL)
+ elem = DragElem_Free(dragImage, elem);
+ Tk_FreeConfigOptions((char *) dragImage, dragImage->optionTable,
+ dragImage->tree->tkwin);
+ WFREE(dragImage, DragImage);
}
void TreeDragImage_Display(TreeDragImage dragImage_)
{
- DragImage *dragImage = (DragImage *) dragImage_;
- TreeCtrl *tree = dragImage->tree;
-
- if (!dragImage->onScreen && dragImage->visible)
- {
- dragImage->sx = 0 - tree->xOrigin;
- dragImage->sy = 0 - tree->yOrigin;
- TreeDragImage_Draw(dragImage_, Tk_WindowId(tree->tkwin), dragImage->sx, dragImage->sy);
- dragImage->onScreen = TRUE;
- }
+ DragImage *dragImage = (DragImage *) dragImage_;
+ TreeCtrl *tree = dragImage->tree;
+
+ if (!dragImage->onScreen && dragImage->visible)
+ {
+ dragImage->sx = 0 - tree->xOrigin;
+ dragImage->sy = 0 - tree->yOrigin;
+ TreeDragImage_Draw(dragImage_, Tk_WindowId(tree->tkwin), dragImage->sx, dragImage->sy);
+ dragImage->onScreen = TRUE;
+ }
}
void TreeDragImage_Undisplay(TreeDragImage dragImage_)
{
- DragImage *dragImage = (DragImage *) dragImage_;
- TreeCtrl *tree = dragImage->tree;
-
- if (dragImage->onScreen)
- {
- TreeDragImage_Draw(dragImage_, Tk_WindowId(tree->tkwin), dragImage->sx, dragImage->sy);
- dragImage->onScreen = FALSE;
- }
+ DragImage *dragImage = (DragImage *) dragImage_;
+ TreeCtrl *tree = dragImage->tree;
+
+ if (dragImage->onScreen)
+ {
+ TreeDragImage_Draw(dragImage_, Tk_WindowId(tree->tkwin), dragImage->sx, dragImage->sy);
+ dragImage->onScreen = FALSE;
+ }
}
static int DragImage_Config(DragImage *dragImage, int objc, Tcl_Obj *CONST objv[])
{
- TreeCtrl *tree = dragImage->tree;
- Tk_SavedOptions savedOptions;
+ TreeCtrl *tree = dragImage->tree;
+ Tk_SavedOptions savedOptions;
int error;
Tcl_Obj *errorResult = NULL;
- int mask;
+ int mask;
- for (error = 0; error <= 1; error++)
+ for (error = 0; error <= 1; error++)
+ {
+ if (error == 0)
{
- if (error == 0)
- {
- if (Tk_SetOptions(tree->interp, (char *) dragImage, dragImage->optionTable,
- objc, objv, tree->tkwin, &savedOptions, &mask) != TCL_OK)
- {
- mask = 0;
- continue;
- }
+ if (Tk_SetOptions(tree->interp, (char *) dragImage, dragImage->optionTable,
+ objc, objv, tree->tkwin, &savedOptions, &mask) != TCL_OK)
+ {
+ mask = 0;
+ continue;
+ }
- /* xxx */
+ /* xxx */
- Tk_FreeSavedOptions(&savedOptions);
- break;
- }
- else
- {
- errorResult = Tcl_GetObjResult(tree->interp);
- Tcl_IncrRefCount(errorResult);
- Tk_RestoreSavedOptions(&savedOptions);
+ Tk_FreeSavedOptions(&savedOptions);
+ break;
+ }
+ else
+ {
+ errorResult = Tcl_GetObjResult(tree->interp);
+ Tcl_IncrRefCount(errorResult);
+ Tk_RestoreSavedOptions(&savedOptions);
- /* xxx */
+ /* xxx */
- Tcl_SetObjResult(tree->interp, errorResult);
- Tcl_DecrRefCount(errorResult);
- return TCL_ERROR;
- }
+ Tcl_SetObjResult(tree->interp, errorResult);
+ Tcl_DecrRefCount(errorResult);
+ return TCL_ERROR;
}
+ }
- if (mask & DRAG_CONF_VISIBLE)
- {
- TreeDragImage_Undisplay((TreeDragImage) dragImage);
- TreeDragImage_Display((TreeDragImage) dragImage);
- }
+ if (mask & DRAG_CONF_VISIBLE)
+ {
+ TreeDragImage_Undisplay((TreeDragImage) dragImage);
+ TreeDragImage_Display((TreeDragImage) dragImage);
+ }
- return TCL_OK;
+ return TCL_OK;
}
void TreeDragImage_Draw(TreeDragImage dragImage_, Drawable drawable, int x, int y)
{
- DragImage *dragImage = (DragImage *) dragImage_;
- TreeCtrl *tree = dragImage->tree;
- DragElem *elem = dragImage->elem;
- DotState dotState;
+ DragImage *dragImage = (DragImage *) dragImage_;
+ TreeCtrl *tree = dragImage->tree;
+ DragElem *elem = dragImage->elem;
+ DotState dotState;
/* if (!dragImage->visible)
- return; */
- if (elem == NULL)
- return;
-
- DotRect_Setup(tree, drawable, &dotState);
-
- while (elem != NULL)
- {
- DotRect_Draw(&dotState,
- x + dragImage->x + elem->x,
- y + dragImage->y + elem->y,
- elem->width, elem->height);
- elem = elem->next;
- }
-
- DotRect_Restore(&dotState);
+ return; */
+ if (elem == NULL)
+ return;
+
+ DotRect_Setup(tree, drawable, &dotState);
+
+ while (elem != NULL)
+ {
+ DotRect_Draw(&dotState,
+ x + dragImage->x + elem->x,
+ y + dragImage->y + elem->y,
+ elem->width, elem->height);
+ elem = elem->next;
+ }
+
+ DotRect_Restore(&dotState);
}
int DragImageCmd(ClientData clientData, Tcl_Interp *interp, int objc,
Tcl_Obj *CONST objv[])
{
- TreeCtrl *tree = (TreeCtrl *) clientData;
- DragImage *dragImage = (DragImage *) tree->dragImage;
- static CONST char *commandNames[] = { "add", "cget", "clear", "configure",
- "offset", (char *) NULL };
- enum { COMMAND_ADD, COMMAND_CGET, COMMAND_CLEAR, COMMAND_CONFIGURE,
- COMMAND_OFFSET };
- int index;
-
- if (objc < 3)
+ TreeCtrl *tree = (TreeCtrl *) clientData;
+ DragImage *dragImage = (DragImage *) tree->dragImage;
+ static CONST char *commandNames[] = { "add", "cget", "clear", "configure",
+ "offset", (char *) NULL };
+ enum { COMMAND_ADD, COMMAND_CGET, COMMAND_CLEAR, COMMAND_CONFIGURE,
+ COMMAND_OFFSET };
+ int index;
+
+ if (objc < 3)
+ {
+ Tcl_WrongNumArgs(interp, 2, objv, "command ?arg arg ...?");
+ return TCL_ERROR;
+ }
+
+ if (Tcl_GetIndexFromObj(interp, objv[2], commandNames, "command", 0,
+ &index) != TCL_OK)
+ {
+ return TCL_ERROR;
+ }
+
+ switch (index)
+ {
+ /* T dragimage add I ?C? ?E ...? */
+ case COMMAND_ADD:
{
- Tcl_WrongNumArgs(interp, 2, objv, "command ?arg arg ...?");
+ XRectangle staticRects[STATIC_SIZE], *rects = staticRects;
+ TreeItem item;
+ TreeItemColumn itemColumn = NULL;
+ TreeColumn treeColumn;
+ int i, count, columnIndex = -1;
+ int indent, width, totalWidth;
+ int x, y, w, h;
+ DragElem *elem;
+ StyleDrawArgs drawArgs;
+ int result = TCL_OK;
+
+ if (objc < 4)
+ {
+ Tcl_WrongNumArgs(interp, 3, objv, "item ?column? ?element ...?");
return TCL_ERROR;
- }
+ }
- if (Tcl_GetIndexFromObj(interp, objv[2], commandNames, "command", 0,
- &index) != TCL_OK)
- {
+ if (TreeItem_FromObj(tree, objv[3], &item, 0) != TCL_OK)
return TCL_ERROR;
- }
- switch (index)
- {
- /* T dragimage add I ?C? ?E ...? */
- case COMMAND_ADD:
+ /* Validate all of the arguments, even if the command would exit
+ * early without needing to check those arguments. */
+ if (objc > 4)
+ {
+ if (TreeItem_ColumnFromObj(tree, item, objv[4], &itemColumn, &columnIndex) != TCL_OK)
+ return TCL_ERROR;
+ if (objc > 5)
{
- XRectangle staticRects[STATIC_SIZE], *rects = staticRects;
- TreeItem item;
- TreeItemColumn itemColumn = NULL;
- TreeColumn treeColumn;
- int i, count, columnIndex = -1;
- int indent, width, totalWidth;
- int x, y, w, h;
- DragElem *elem;
- StyleDrawArgs drawArgs;
- int result = TCL_OK;
-
- if (objc < 4)
+ if ((itemColumn == NULL) ||
+ (TreeItemColumn_GetStyle(tree, itemColumn) == NULL)) {
+ FormatResult(interp,
+ "item %s%d column %s%d has no style",
+ tree->itemPrefix, TreeItem_GetID(tree, item),
+ tree->columnPrefix,
+ TreeColumn_GetID(Tree_FindColumn(tree, columnIndex)));
+ return TCL_ERROR;
+ }
+ drawArgs.tree = tree;
+ drawArgs.style = TreeItemColumn_GetStyle(tree, itemColumn);
+ if (TreeStyle_ValidateElements(&drawArgs,
+ objc - 5, objv + 5) != TCL_OK)
+ return TCL_ERROR;
+ }
+ }
+
+ if (Tree_ItemBbox(tree, item, &x, &y, &w, &h) < 0)
+ return TCL_OK;
+ if (w < 1 || h < 1)
+ return TCL_OK;
+
+ drawArgs.tree = tree;
+ drawArgs.drawable = None;
+ drawArgs.state = TreeItem_GetState(tree, item);
+ drawArgs.y = y;
+ drawArgs.height = h;
+
+ TreeDragImage_Undisplay(tree->dragImage);
+
+ if (objc > 4)
+ {
+ treeColumn = Tree_FindColumn(tree, columnIndex);
+ if (!TreeColumn_Visible(treeColumn))
+ goto doneAdd;
+ drawArgs.style = TreeItemColumn_GetStyle(tree, itemColumn);
+ totalWidth = 0;
+ treeColumn = tree->columns;
+ for (i = 0; i < columnIndex; i++)
+ {
+ totalWidth += TreeColumn_UseWidth(treeColumn);
+ treeColumn = TreeColumn_Next(treeColumn);
+ }
+ if (treeColumn == tree->columnTree)
+ indent = TreeItem_Indent(tree, item);
+ else
+ indent = 0;
+ drawArgs.indent = indent;
+ drawArgs.x = x + totalWidth;
+ drawArgs.width = TreeColumn_UseWidth(treeColumn);
+ drawArgs.justify = TreeColumn_Justify(treeColumn);
+ if (objc - 5 > STATIC_SIZE)
+ STATIC_ALLOC(rects, XRectangle, objc - 5);
+ count = TreeStyle_GetElemRects(&drawArgs, objc - 5, objv + 5, rects);
+ if (count == -1)
+ {
+ result = TCL_ERROR;
+ goto doneAdd;
+ }
+ for (i = 0; i < count; i++)
+ {
+ elem = DragElem_Alloc(dragImage);
+ elem->x = rects[i].x;
+ elem->y = rects[i].y;
+ elem->width = rects[i].width;
+ elem->height = rects[i].height;
+ }
+ }
+ else
+ {
+ totalWidth = 0;
+ treeColumn = tree->columns;
+ itemColumn = TreeItem_GetFirstColumn(tree, item);
+ while (itemColumn != NULL)
+ {
+ if (!TreeColumn_Visible(treeColumn))
+ goto nextColumn;
+ width = TreeColumn_UseWidth(treeColumn);
+ if (treeColumn == tree->columnTree)
+ indent = TreeItem_Indent(tree, item);
+ else
+ indent = 0;
+ drawArgs.style = TreeItemColumn_GetStyle(tree, itemColumn);
+ if (drawArgs.style != NULL)
+ {
+ drawArgs.indent = indent;
+ drawArgs.x = x + totalWidth;
+ drawArgs.width = width;
+ drawArgs.justify = TreeColumn_Justify(treeColumn);
+ count = TreeStyle_NumElements(tree, drawArgs.style);
+ STATIC_ALLOC(rects, XRectangle, count);
+ count = TreeStyle_GetElemRects(&drawArgs, 0, NULL, rects);
+ if (count == -1)
{
- Tcl_WrongNumArgs(interp, 3, objv, "item ?column? ?element ...?");
- return TCL_ERROR;
+ result = TCL_ERROR;
+ goto doneAdd;
}
-
- if (TreeItem_FromObj(tree, objv[3], &item, 0) != TCL_OK)
- return TCL_ERROR;
-
- /* Validate all of the arguments, even if the command would exit
- * early without needing to check those arguments. */
- if (objc > 4)
+ for (i = 0; i < count; i++)
{
- if (TreeItem_ColumnFromObj(tree, item, objv[4], &itemColumn, &columnIndex) != TCL_OK)
- return TCL_ERROR;
- if (objc > 5)
- {
- if ((itemColumn == NULL) ||
- (TreeItemColumn_GetStyle(tree, itemColumn) == NULL)) {
- FormatResult(interp,
- "item %s%d column %s%d has no style",
- tree->itemPrefix, TreeItem_GetID(tree, item),
- tree->columnPrefix,
- TreeColumn_GetID(Tree_FindColumn(tree, columnIndex)));
- return TCL_ERROR;
- }
- drawArgs.tree = tree;
- drawArgs.style = TreeItemColumn_GetStyle(tree, itemColumn);
- if (TreeStyle_ValidateElements(&drawArgs,
- objc - 5, objv + 5) != TCL_OK)
- return TCL_ERROR;
- }
+ elem = DragElem_Alloc(dragImage);
+ elem->x = rects[i].x;
+ elem->y = rects[i].y;
+ elem->width = rects[i].width;
+ elem->height = rects[i].height;
}
-
- if (Tree_ItemBbox(tree, item, &x, &y, &w, &h) < 0)
- return TCL_OK;
- if (w < 1 || h < 1)
- return TCL_OK;
-
- drawArgs.tree = tree;
- drawArgs.drawable = None;
- drawArgs.state = TreeItem_GetState(tree, item);
- drawArgs.y = y;
- drawArgs.height = h;
-
- TreeDragImage_Undisplay(tree->dragImage);
-
- if (objc > 4)
+ if (rects != staticRects)
{
- treeColumn = Tree_FindColumn(tree, columnIndex);
- if (!TreeColumn_Visible(treeColumn))
- goto doneAdd;
- drawArgs.style = TreeItemColumn_GetStyle(tree, itemColumn);
- totalWidth = 0;
- treeColumn = tree->columns;
- for (i = 0; i < columnIndex; i++)
- {
- totalWidth += TreeColumn_UseWidth(treeColumn);
- treeColumn = TreeColumn_Next(treeColumn);
- }
- if (treeColumn == tree->columnTree)
- indent = TreeItem_Indent(tree, item);
- else
- indent = 0;
- drawArgs.indent = indent;
- drawArgs.x = x + totalWidth;
- drawArgs.width = TreeColumn_UseWidth(treeColumn);
- drawArgs.justify = TreeColumn_Justify(treeColumn);
- if (objc - 5 > STATIC_SIZE)
- STATIC_ALLOC(rects, XRectangle, objc - 5);
- count = TreeStyle_GetElemRects(&drawArgs, objc - 5, objv + 5, rects);
- if (count == -1)
- {
- result = TCL_ERROR;
- goto doneAdd;
- }
- for (i = 0; i < count; i++)
- {
- elem = DragElem_Alloc(dragImage);
- elem->x = rects[i].x;
- elem->y = rects[i].y;
- elem->width = rects[i].width;
- elem->height = rects[i].height;
- }
+ ckfree((char *) rects);
+ rects = staticRects;
}
- else
- {
- totalWidth = 0;
- treeColumn = tree->columns;
- itemColumn = TreeItem_GetFirstColumn(tree, item);
- while (itemColumn != NULL)
- {
- if (!TreeColumn_Visible(treeColumn))
- goto nextColumn;
- width = TreeColumn_UseWidth(treeColumn);
- if (treeColumn == tree->columnTree)
- indent = TreeItem_Indent(tree, item);
- else
- indent = 0;
- drawArgs.style = TreeItemColumn_GetStyle(tree, itemColumn);
- if (drawArgs.style != NULL)
- {
- drawArgs.indent = indent;
- drawArgs.x = x + totalWidth;
- drawArgs.width = width;
- drawArgs.justify = TreeColumn_Justify(treeColumn);
- count = TreeStyle_NumElements(tree, drawArgs.style);
- STATIC_ALLOC(rects, XRectangle, count);
- count = TreeStyle_GetElemRects(&drawArgs, 0, NULL, rects);
- if (count == -1)
- {
- result = TCL_ERROR;
- goto doneAdd;
- }
- for (i = 0; i < count; i++)
- {
- elem = DragElem_Alloc(dragImage);
- elem->x = rects[i].x;
- elem->y = rects[i].y;
- elem->width = rects[i].width;
- elem->height = rects[i].height;
- }
- if (rects != staticRects)
- {
- ckfree((char *) rects);
- rects = staticRects;
- }
- }
- totalWidth += width;
+ }
+ totalWidth += width;
nextColumn:
- treeColumn = TreeColumn_Next(treeColumn);
- itemColumn = TreeItemColumn_GetNext(tree, itemColumn);
- }
- }
- dragImage->bounds[0] = 100000;
- dragImage->bounds[1] = 100000;
- dragImage->bounds[2] = -100000;
- dragImage->bounds[3] = -100000;
- for (elem = dragImage->elem;
- elem != NULL;
- elem = elem->next)
- {
- if (elem->x < dragImage->bounds[0])
- dragImage->bounds[0] = elem->x;
- if (elem->y < dragImage->bounds[1])
- dragImage->bounds[1] = elem->y;
- if (elem->x + elem->width > dragImage->bounds[2])
- dragImage->bounds[2] = elem->x + elem->width;
- if (elem->y + elem->height > dragImage->bounds[3])
- dragImage->bounds[3] = elem->y + elem->height;
- }
-doneAdd:
- if (rects != staticRects)
- ckfree((char *) rects);
- TreeDragImage_Display(tree->dragImage);
- return result;
+ treeColumn = TreeColumn_Next(treeColumn);
+ itemColumn = TreeItemColumn_GetNext(tree, itemColumn);
}
+ }
+ dragImage->bounds[0] = 100000;
+ dragImage->bounds[1] = 100000;
+ dragImage->bounds[2] = -100000;
+ dragImage->bounds[3] = -100000;
+ for (elem = dragImage->elem;
+ elem != NULL;
+ elem = elem->next)
+ {
+ if (elem->x < dragImage->bounds[0])
+ dragImage->bounds[0] = elem->x;
+ if (elem->y < dragImage->bounds[1])
+ dragImage->bounds[1] = elem->y;
+ if (elem->x + elem->width > dragImage->bounds[2])
+ dragImage->bounds[2] = elem->x + elem->width;
+ if (elem->y + elem->height > dragImage->bounds[3])
+ dragImage->bounds[3] = elem->y + elem->height;
+ }
+doneAdd:
+ if (rects != staticRects)
+ ckfree((char *) rects);
+ TreeDragImage_Display(tree->dragImage);
+ return result;
+ }
- /* T dragimage cget option */
- case COMMAND_CGET:
- {
- Tcl_Obj *resultObjPtr;
+ /* T dragimage cget option */
+ case COMMAND_CGET:
+ {
+ Tcl_Obj *resultObjPtr;
- if (objc != 4)
- {
- Tcl_WrongNumArgs(interp, 3, objv, "option");
- return TCL_ERROR;
- }
- resultObjPtr = Tk_GetOptionValue(interp, (char *) dragImage,
- dragImage->optionTable, objv[3], tree->tkwin);
- if (resultObjPtr == NULL)
- return TCL_ERROR;
- Tcl_SetObjResult(interp, resultObjPtr);
- break;
- }
+ if (objc != 4)
+ {
+ Tcl_WrongNumArgs(interp, 3, objv, "option");
+ return TCL_ERROR;
+ }
+ resultObjPtr = Tk_GetOptionValue(interp, (char *) dragImage,
+ dragImage->optionTable, objv[3], tree->tkwin);
+ if (resultObjPtr == NULL)
+ return TCL_ERROR;
+ Tcl_SetObjResult(interp, resultObjPtr);
+ break;
+ }
- /* T dragimage clear */
- case COMMAND_CLEAR:
- {
- if (objc != 3)
- {
- Tcl_WrongNumArgs(interp, 3, objv, (char *) NULL);
- return TCL_ERROR;
- }
- if (dragImage->elem != NULL)
- {
- DragElem *elem = dragImage->elem;
- TreeDragImage_Undisplay(tree->dragImage);
+ /* T dragimage clear */
+ case COMMAND_CLEAR:
+ {
+ if (objc != 3)
+ {
+ Tcl_WrongNumArgs(interp, 3, objv, (char *) NULL);
+ return TCL_ERROR;
+ }
+ if (dragImage->elem != NULL)
+ {
+ DragElem *elem = dragImage->elem;
+ TreeDragImage_Undisplay(tree->dragImage);
/* if (dragImage->visible)
- DragImage_Redraw(dragImage); */
- while (elem != NULL)
- elem = DragElem_Free(dragImage, elem);
- dragImage->elem = NULL;
- }
- break;
- }
+ DragImage_Redraw(dragImage); */
+ while (elem != NULL)
+ elem = DragElem_Free(dragImage, elem);
+ dragImage->elem = NULL;
+ }
+ break;
+ }
- /* T dragimage configure ?option? ?value? ?option value ...? */
- case COMMAND_CONFIGURE:
- {
- Tcl_Obj *resultObjPtr;
+ /* T dragimage configure ?option? ?value? ?option value ...? */
+ case COMMAND_CONFIGURE:
+ {
+ Tcl_Obj *resultObjPtr;
- if (objc < 3)
- {
- Tcl_WrongNumArgs(interp, 3, objv, "?option? ?value?");
- return TCL_ERROR;
- }
- if (objc <= 4)
- {
- resultObjPtr = Tk_GetOptionInfo(interp, (char *) dragImage,
- dragImage->optionTable,
- (objc == 3) ? (Tcl_Obj *) NULL : objv[3],
- tree->tkwin);
- if (resultObjPtr == NULL)
- return TCL_ERROR;
- Tcl_SetObjResult(interp, resultObjPtr);
- break;
- }
- return DragImage_Config(dragImage, objc - 3, objv + 3);
- }
+ if (objc < 3)
+ {
+ Tcl_WrongNumArgs(interp, 3, objv, "?option? ?value?");
+ return TCL_ERROR;
+ }
+ if (objc <= 4)
+ {
+ resultObjPtr = Tk_GetOptionInfo(interp, (char *) dragImage,
+ dragImage->optionTable,
+ (objc == 3) ? (Tcl_Obj *) NULL : objv[3],
+ tree->tkwin);
+ if (resultObjPtr == NULL)
+ return TCL_ERROR;
+ Tcl_SetObjResult(interp, resultObjPtr);
+ break;
+ }
+ return DragImage_Config(dragImage, objc - 3, objv + 3);
+ }
- /* T dragimage offset ?x y? */
- case COMMAND_OFFSET:
- {
- int x, y;
+ /* T dragimage offset ?x y? */
+ case COMMAND_OFFSET:
+ {
+ int x, y;
- if (objc != 3 && objc != 5)
- {
- Tcl_WrongNumArgs(interp, 3, objv, "?x y?");
- return TCL_ERROR;
- }
- if (objc == 3)
- {
- FormatResult(interp, "%d %d", dragImage->x, dragImage->y);
- break;
- }
- if (Tcl_GetIntFromObj(interp, objv[3], &x) != TCL_OK)
- return TCL_ERROR;
- if (Tcl_GetIntFromObj(interp, objv[4], &y) != TCL_OK)
- return TCL_ERROR;
- TreeDragImage_Undisplay(tree->dragImage);
+ if (objc != 3 && objc != 5)
+ {
+ Tcl_WrongNumArgs(interp, 3, objv, "?x y?");
+ return TCL_ERROR;
+ }
+ if (objc == 3)
+ {
+ FormatResult(interp, "%d %d", dragImage->x, dragImage->y);
+ break;
+ }
+ if (Tcl_GetIntFromObj(interp, objv[3], &x) != TCL_OK)
+ return TCL_ERROR;
+ if (Tcl_GetIntFromObj(interp, objv[4], &y) != TCL_OK)
+ return TCL_ERROR;
+ TreeDragImage_Undisplay(tree->dragImage);
/* if (dragImage->visible)
- DragImage_Redraw(dragImage); */
- dragImage->x = x;
- dragImage->y = y;
- TreeDragImage_Display(tree->dragImage);
- break;
- }
+ DragImage_Redraw(dragImage); */
+ dragImage->x = x;
+ dragImage->y = y;
+ TreeDragImage_Display(tree->dragImage);
+ break;
}
+ }
- return TCL_OK;
+ return TCL_OK;
}