Posted to tcl by emiliano at Tue Nov 12 00:55:44 GMT 2024view raw

  1. int
  2. Tk_SetAccessibleRole(
  3. TCL_UNUSED(void *),
  4. Tcl_Interp *ip, /* Current interpreter. */
  5. int objc, /* Number of arguments. */
  6. Tcl_Obj *const objv[]) /* Argument objects. */
  7. {
  8. Tk_Window win;
  9. Tcl_HashEntry *hPtr, *hPtr2;
  10. int isNew;
  11. Tcl_HashTable *AccessibleAttributes;
  12. if (objc < 3) {
  13. Tcl_WrongNumArgs(ip, 1, objv, "window role");
  14. return TCL_ERROR;
  15. }
  16. win = Tk_NameToWindow(ip, Tcl_GetString(objv[1]), Tk_MainWindow(ip));
  17. if (win == NULL) {
  18. return TCL_ERROR;
  19. }
  20. /* Set accessible role for window. */
  21. hPtr = Tcl_CreateHashEntry(TkAccessibilityObject, win, &isNew);
  22. if (isNew) {
  23. AccessibleAttributes = (Tcl_HashTable *)ckalloc(sizeof(Tcl_HashTable));
  24. Tcl_InitHashTable(AccessibleAttributes,TCL_STRING_KEYS);
  25. Tcl_SetHashValue(hPtr, AccessibleAttributes);
  26. } else {
  27. AccessibleAttributes = Tcl_GetHashValue(hPtr);
  28. }
  29. hPtr2 = Tcl_CreateHashEntry(AccessibleAttributes, "role", &isNew);
  30. if (!isNew) {
  31. Tcl_DecrRefCount(Tcl_GetHashValue(hPtr2));
  32. }
  33. Tcl_IncrRefCount(objv[2]);
  34. Tcl_SetHashValue(hPtr2, objv[2]);
  35. Tcl_SetObjResult(ip, Tcl_GetHashValue(hPtr2));
  36. return TCL_OK;
  37. }

AltStyle によって変換されたページ (->オリジナル) /