MCPcopy Create free account
hub / github.com/SimHacker/micropolis / Tk_BindCmd

Function Tk_BindCmd

micropolis-activity/src/tk/tkcmds.c:179–238  ·  view source on GitHub ↗
(clientData, interp, argc, argv)

Source from the content-addressed store, hash-verified

177 * See the user documentation.
178 *
179 *----------------------------------------------------------------------
180 */
181
182int
183Tk_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;

Callers

nothing calls this directly

Calls 7

Tcl_AppendResultFunction · 0.85
Tk_NameToWindowFunction · 0.85
Tk_GetUidFunction · 0.85
Tk_DeleteBindingFunction · 0.85
Tk_CreateBindingFunction · 0.85
Tcl_ResetResultFunction · 0.85
Tk_GetAllBindingsFunction · 0.85

Tested by

no test coverage detected