diff options
author | treectrl <treectrl> | 2004-07-30 21:12:18 (GMT) |
---|---|---|
committer | treectrl <treectrl> | 2004-07-30 21:12:18 (GMT) |
commit | c16f07359705a65a485f401162722b5d25840ae9 (patch) | |
tree | f8004c8c300206202a84597c680c2dfcfa289dff /generic | |
parent | 747f79d223505e019ab611ad684ab7f745c75d96 (diff) | |
download | tktreectrl-c16f07359705a65a485f401162722b5d25840ae9.zip tktreectrl-c16f07359705a65a485f401162722b5d25840ae9.tar.gz tktreectrl-c16f07359705a65a485f401162722b5d25840ae9.tar.bz2 |
Add copyright.
Beefed up Marquee_Config(); handle -visible option properly.
Removed "marquee visible" command.
Diffstat (limited to 'generic')
-rw-r--r-- | generic/tkTreeMarquee.c | 86 |
1 files changed, 50 insertions, 36 deletions
diff --git a/generic/tkTreeMarquee.c b/generic/tkTreeMarquee.c index 0916aa0..358ce65 100644 --- a/generic/tkTreeMarquee.c +++ b/generic/tkTreeMarquee.c @@ -1,3 +1,13 @@ +/* + * tkTreeMarquee.c -- + * + * This module implements the selection marquee for treectrl widgets. + * + * Copyright (c) 2002-2004 Tim Baker + * + * RCS: @(#) $Id: tkTreeMarquee.c,v 1.3 2004/07/30 21:12:18 treectrl Exp $ + */ + #include "tkTreeCtrl.h" typedef struct Marquee Marquee; @@ -12,10 +22,12 @@ struct Marquee int sx, sy; }; +#define MARQ_CONF_VISIBLE 0x0001 + static Tk_OptionSpec optionSpecs[] = { {TK_OPTION_BOOLEAN, "-visible", (char *) NULL, (char *) NULL, "0", -1, Tk_Offset(Marquee, visible), - 0, (ClientData) NULL, 0}, + 0, (ClientData) NULL, MARQ_CONF_VISIBLE}, {TK_OPTION_END, (char *) NULL, (char *) NULL, (char *) NULL, (char *) NULL, 0, -1, 0, 0, 0} }; @@ -97,18 +109,45 @@ static int Marquee_Config(Marquee *marquee, int objc, Tcl_Obj *CONST objv[]) { TreeCtrl *tree = marquee->tree; Tk_SavedOptions savedOptions; - int mask, result; + int error; + Tcl_Obj *errorResult = NULL; + int mask; - result = Tk_SetOptions(tree->interp, (char *) marquee, marquee->optionTable, - objc, objv, tree->tkwin, &savedOptions, &mask); - if (result != TCL_OK) + for (error = 0; error <= 1; error++) { - Tk_RestoreSavedOptions(&savedOptions); - return TCL_ERROR; + if (error == 0) + { + if (Tk_SetOptions(tree->interp, (char *) marquee, marquee->optionTable, + objc, objv, tree->tkwin, &savedOptions, &mask) != TCL_OK) + { + mask = 0; + continue; + } + + /* xxx */ + + Tk_FreeSavedOptions(&savedOptions); + break; + } + else + { + errorResult = Tcl_GetObjResult(tree->interp); + Tcl_IncrRefCount(errorResult); + Tk_RestoreSavedOptions(&savedOptions); + + /* xxx */ + + Tcl_SetObjResult(tree->interp, errorResult); + Tcl_DecrRefCount(errorResult); + return TCL_ERROR; + } } - Tk_FreeSavedOptions(&savedOptions); -/* Marquee_Redraw(marquee); */ + if (mask & MARQ_CONF_VISIBLE) + { + TreeMarquee_Undisplay((TreeMarquee) marquee); + TreeMarquee_Display((TreeMarquee) marquee); + } return TCL_OK; } @@ -119,9 +158,9 @@ int TreeMarqueeCmd(ClientData clientData, Tcl_Interp *interp, int objc, TreeCtrl *tree = (TreeCtrl *) clientData; Marquee *marquee = (Marquee *) tree->marquee; static CONST char *commandNames[] = { "anchor", "cget", "configure", - "coords", "corner", "identify", "visible", (char *) NULL }; + "coords", "corner", "identify", (char *) NULL }; enum { COMMAND_ANCHOR, COMMAND_CGET, COMMAND_CONFIGURE, COMMAND_COORDS, - COMMAND_CORNER, COMMAND_IDENTIFY, COMMAND_VISIBLE }; + COMMAND_CORNER, COMMAND_IDENTIFY }; int index; if (objc < 3) @@ -330,31 +369,6 @@ int TreeMarqueeCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_SetObjResult(interp, listObj); break; } - - /* T marquee visible ?boolean? */ - case COMMAND_VISIBLE: - { - int visible; - - if (objc != 3 && objc != 4) - { - Tcl_WrongNumArgs(interp, 3, objv, "?boolean?"); - return TCL_ERROR; - } - if (objc == 4) - { - if (Tcl_GetBooleanFromObj(interp, objv[3], &visible) != TCL_OK) - return TCL_ERROR; - if (visible != marquee->visible) - { - marquee->visible = visible; - TreeMarquee_Undisplay(tree->marquee); - TreeMarquee_Display(tree->marquee); - } - } - Tcl_SetObjResult(interp, Tcl_NewBooleanObj(marquee->visible)); - break; - } } return TCL_OK; |