(clientData, interp, argc, argv)
| 177 | * See the user documentation. |
| 178 | * |
| 179 | *---------------------------------------------------------------------- |
| 180 | */ |
| 181 | |
| 182 | int |
| 183 | Tk_BindCmd(clientData, interp, argc, argv) |
| 184 | ClientData clientData; /* Main window associated with |
| 185 | * interpreter. */ |
| 186 | Tcl_Interp *interp; /* Current interpreter. */ |
| 187 | int argc; /* Number of arguments. */ |
| 188 | char **argv; /* Argument strings. */ |
| 189 | { |
| 190 | Tk_Window tkwin = (Tk_Window) clientData; |
| 191 | TkWindow *winPtr; |
| 192 | ClientData object; |
| 193 | |
| 194 | if ((argc < 2) || (argc > 4)) { |
| 195 | Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], |
| 196 | " window ?pattern? ?command?\"", (char *) NULL); |
| 197 | return TCL_ERROR; |
| 198 | } |
| 199 | if (argv[1][0] == '.') { |
| 200 | winPtr = (TkWindow *) Tk_NameToWindow(interp, argv[1], tkwin); |
| 201 | if (winPtr == NULL) { |
| 202 | return TCL_ERROR; |
| 203 | } |
| 204 | object = (ClientData) winPtr->pathName; |
| 205 | } else { |
| 206 | winPtr = (TkWindow *) clientData; |
| 207 | object = (ClientData) Tk_GetUid(argv[1]); |
| 208 | } |
| 209 | |
| 210 | if (argc == 4) { |
| 211 | int append = 0; |
| 212 | unsigned long mask; |
| 213 | |
| 214 | if (argv[3][0] == 0) { |
| 215 | return Tk_DeleteBinding(interp, winPtr->mainPtr->bindingTable, |
| 216 | object, argv[2]); |
| 217 | } |
| 218 | if (argv[3][0] == '+') { |
| 219 | argv[3]++; |
| 220 | append = 1; |
| 221 | } |
| 222 | mask = Tk_CreateBinding(interp, winPtr->mainPtr->bindingTable, |
| 223 | object, argv[2], argv[3], append); |
| 224 | if (mask == 0) { |
| 225 | return TCL_ERROR; |
| 226 | } |
| 227 | } else if (argc == 3) { |
| 228 | char *command; |
| 229 | |
| 230 | command = Tk_GetBinding(interp, winPtr->mainPtr->bindingTable, |
| 231 | object, argv[2]); |
| 232 | if (command == NULL) { |
| 233 | Tcl_ResetResult(interp); |
| 234 | return TCL_OK; |
| 235 | } |
| 236 | interp->result = command; |
nothing calls this directly
no test coverage detected