Re: [g-a-devel]Question about Accessible_getStateSet?
- From: "Padraig O'Briain" <Padraig Obriain Sun COM>
- To: gnome-accessibility-devel gnome org, mlang delysid org
- Subject: Re: [g-a-devel]Question about Accessible_getStateSet?
- Date: Thu, 3 Jul 2003 12:55:02 +0100 (BST)
This is a bug in atk. I have logged bug 116621 about it and committed fix to CVS
HEAD.
Padraig
>
> Mario,
>
> It looks to me that AccessibleState_isEmpty is returing the wrong value.
> That is, it returns TRUE when there are states and FALSE if there are not.
>
> Can you confirm?
>
> Padraig
>
> > Hi.
> >
> > I am developing a small Guile binding for AT-SPI for experimentation
> > purposes. While some things are quite nicely working already
> > (getting the role, name and description of objects),
> > I can not get the AccessibleStateSet stuff to work. From looking
> > at the code, it should, but I always seem to detect a
> > empty set, even if AccessibleStateSet_isEmpty!=TRUE.
> >
> > Is there anything special about the StateSets I might have missed?
> >
> > Below is the code I use to extract an accessible state set
> > into a Scheme (Guile) list of symbols. The printf's are in
> > there in case I messed up the symbol creation, but I never saw
> > any printf output, even if I recursively look at *every*
> > object on the whole desktop, like this:
> >
> > gspi> (define (descend node proc)
> > ... (if (> (length (children node)) 0)
> > ... (map (lambda (node) (descend node proc)) (children node))
> > ... (proc node)))
> > gspi> (map get-name (children (desktop 0)))
> > ("gnome-session" "nautilus" "gnome-panel" "mixer_applet2" "gnopernicus"
> "srcore")
> > gspi> (define gnopi (car (cddddr (children (desktop 0)))))
> > gspi> gnopi
> > #<Accessible 0x81118f8, name="gnopernicus", role=application>
> > gspi> (descend gnopi get-role)
> > ((((push-button push-button push-button push-button push-button push-button
> push-button push-button))))
> > gspi> (descend gnopi states)
> > ((((() () () () () () () ()))))
> >
> > No matter what, I always get a empty list of states.
> >
> > gspi> (descend (desktop 0) states)
> > (() ((((((() ((() () () () () () () (() () () () ()) () (() () ()) () () ()
()
> () () () () () ()) (() () () () () () () () () () () () () () () () () () ()
> ())(() () () () () () () () () () (() () () () () () () () () ()) () () () ()
()
> () () () () () () () () ()) (() () () () () () () () () () () () ()) (() () ()
> ()) () () (() () () ()) (() ())))) ((() ((()) ((() (()))) (()) ((() (())))
(())
> (()) (()) () (()) (()) (()) () (())))) ((() (((((((((((()) ())))) () (((() ()
()
> () () ()) ()))))) (()))) (())))) (((((() () () ())))))) (())))) ((((() () ()
()
> () ((((((())))) (((((() () () ()))))) ((((((() () () ()))))))))))) ((((())
(((()
> () () () () ()) (() () () () () () () () () () () () () ()) (()) (() ()) (()
())
> (() () () () () () () () () () () () () ()) (()) (() () ()) (() () () () ())
()
> () () () (((() () () () ()) (() () () () () () () () () () () () () () () ()
()
> () () () () ()) (()) (() () () () () () ()) (() () () () () () () () () () ()
()
> () () () () () () ()) (() () () () () () () () () () () () () () ()) (() () ()
> () () ()) (() () () () () () () ()) (() () () () () () () () () () () () () ()
> () () () () ()) (() () () ()) (() () () () () () () () () () () () () () () ()
> () () ()) ()) (() () () ()) (() () () ()) (() () ()) (() () () ())) (() ()
()))
> (() () () (()) () () () () ())) (() () ((((())))) (((((())))))) (()) (())))))
()
> ((((() () () () () () () ())))) ())
> >
> > Does anyone have an idea what I might be doing wrong?
> >
> > SCM_DEFINE (aobj_stateset, "states", 1, 0, 0, (SCM smob), "")
> > {
> > Accessible *acc;
> > AccessibleStateSet *states;
> > SCM ret = SCM_EOL;
> >
> > SCM_ASSERT (SCM_SMOB_PREDICATE (aobj_tag, smob), smob, SCM_ARG1,
"states");
> >
> > acc = (Accessible *) SCM_SMOB_DATA (smob);
> > states = Accessible_getStateSet (acc);
> > if (!states) {
> > return SCM_BOOL_F;
> > } else if (AccessibleStateSet_isEmpty(states) == FALSE) {
> > if (AccessibleStateSet_contains(states, SPI_STATE_INVALID)) {
> > printf("invalid\n");
> > ret = scm_cons (scm_str2symbol("invalid"), ret);
> > }
> > if (AccessibleStateSet_contains(states, SPI_STATE_ACTIVE)) {
> > printf("active\n");
> > ret = scm_cons (scm_str2symbol("active"), ret);
> > }
> > if (AccessibleStateSet_contains(states, SPI_STATE_ARMED)) {
> > printf("armed\n");
> > ret = scm_cons (scm_str2symbol("armed"), ret);
> > }
> > if (AccessibleStateSet_contains(states, SPI_STATE_BUSY)) {
> > printf("busy\n");
> > ret = scm_cons (scm_str2symbol("busy"), ret);
> > }
> > if (AccessibleStateSet_contains(states, SPI_STATE_CHECKED)) {
> > printf("checked\n");
> > ret = scm_cons (scm_str2symbol("checked"), ret);
> > }
> > if (AccessibleStateSet_contains(states, SPI_STATE_COLLAPSED)) {
> > printf("collapsed\n");
> > ret = scm_cons (scm_str2symbol("collapsed"), ret);
> > }
> > if (AccessibleStateSet_contains(states, SPI_STATE_DEFUNCT)) {
> > printf("defunct\n");
> > ret = scm_cons (scm_str2symbol("defunct"), ret);
> > }
> > if (AccessibleStateSet_contains(states, SPI_STATE_EDITABLE)) {
> > printf("editable\n");
> > ret = scm_cons (scm_str2symbol("editable"), ret);
> > }
> > if (AccessibleStateSet_contains(states, SPI_STATE_ENABLED)) {
> > printf("enabled\n");
> > ret = scm_cons (scm_str2symbol("enabled"), ret);
> > }
> > if (AccessibleStateSet_contains(states, SPI_STATE_EXPANDABLE)) {
> > printf("expandable\n");
> > ret = scm_cons (scm_str2symbol("expandable"), ret);
> > }
> > if (AccessibleStateSet_contains(states, SPI_STATE_EXPANDED)) {
> > printf("expanded\n");
> > ret = scm_cons (scm_str2symbol("expanded"), ret);
> > }
> > if (AccessibleStateSet_contains(states, SPI_STATE_FOCUSABLE)) {
> > printf("focusable\n");
> > ret = scm_cons (scm_str2symbol("focusable"), ret);
> > }
> > if (AccessibleStateSet_contains(states, SPI_STATE_FOCUSED)) {
> > printf("focused\n");
> > ret = scm_cons (scm_str2symbol("focused"), ret);
> > }
> > if (AccessibleStateSet_contains(states, SPI_STATE_HORIZONTAL)) {
> > printf("horizontal\n");
> > ret = scm_cons (scm_str2symbol("horizontal"), ret);
> > }
> > if (AccessibleStateSet_contains(states, SPI_STATE_ICONIFIED)) {
> > printf("iconified\n");
> > ret = scm_cons (scm_str2symbol("iconified"), ret);
> > }
> > if (AccessibleStateSet_contains(states, SPI_STATE_MODAL)) {
> > printf("modal\n");
> > ret = scm_cons (scm_str2symbol("modal"), ret);
> > }
> > if (AccessibleStateSet_contains(states, SPI_STATE_MULTI_LINE)) {
> > printf("multi_line\n");
> > ret = scm_cons (scm_str2symbol("multi_line"), ret);
> > }
> > if (AccessibleStateSet_contains(states, SPI_STATE_MULTISELECTABLE)) {
> > printf("multiselectable\n");
> > ret = scm_cons (scm_str2symbol("multiselectable"), ret);
> > }
> > if (AccessibleStateSet_contains(states, SPI_STATE_OPAQUE)) {
> > printf("opaque\n");
> > ret = scm_cons (scm_str2symbol("opaque"), ret);
> > }
> > if (AccessibleStateSet_contains(states, SPI_STATE_PRESSED)) {
> > printf("pressed\n");
> > ret = scm_cons (scm_str2symbol("pressed"), ret);
> > }
> > if (AccessibleStateSet_contains(states, SPI_STATE_RESIZABLE)) {
> > printf("resizable\n");
> > ret = scm_cons (scm_str2symbol("resizable"), ret);
> > }
> > if (AccessibleStateSet_contains(states, SPI_STATE_SELECTABLE)) {
> > printf("selectable\n");
> > ret = scm_cons (scm_str2symbol("selectable"), ret);
> > }
> > if (AccessibleStateSet_contains(states, SPI_STATE_SELECTED)) {
> > printf("selected\n");
> > ret = scm_cons (scm_str2symbol("selected"), ret);
> > }
> > if (AccessibleStateSet_contains(states, SPI_STATE_SENSITIVE)) {
> > printf("sensitive\n");
> > ret = scm_cons (scm_str2symbol("sensitive"), ret);
> > }
> > if (AccessibleStateSet_contains(states, SPI_STATE_SHOWING)) {
> > printf("showing\n");
> > ret = scm_cons (scm_str2symbol("showing"), ret);
> > }
> > if (AccessibleStateSet_contains(states, SPI_STATE_SINGLE_LINE)) {
> > printf("single_line\n");
> > ret = scm_cons (scm_str2symbol("single_line"), ret);
> > }
> > if (AccessibleStateSet_contains(states, SPI_STATE_STALE)) {
> > printf("stale\n");
> > ret = scm_cons (scm_str2symbol("stale"), ret);
> > }
> > if (AccessibleStateSet_contains(states, SPI_STATE_TRANSIENT)) {
> > printf("transient\n");
> > ret = scm_cons (scm_str2symbol("transient"), ret);
> > }
> > if (AccessibleStateSet_contains(states, SPI_STATE_VERTICAL)) {
> > printf("vertical\n");
> > ret = scm_cons (scm_str2symbol("vertical"), ret);
> > }
> > if (AccessibleStateSet_contains(states, SPI_STATE_VISIBLE)) {
> > printf("visible\n");
> > ret = scm_cons (scm_str2symbol("visible"), ret);
> > }
> > if (AccessibleStateSet_contains(states, SPI_STATE_MANAGES_DESCENDANTS))
{
> > printf("manages_descendants\n");
> > ret = scm_cons (scm_str2symbol("manages_descendants"), ret);
> > }
> > }
> > if (states) {
> > AccessibleStateSet_unref (states);
> > }
> > return ret;
> > }
> >
> > --
> > CYa,
> > Mario | Debian Developer <URL:http://debian.org/>
> > | Get my public key via finger mlang db debian org
> > | 1024D/7FC1A0854909BCCDBE6C102DDFFC022A6B113E44
> > _______________________________________________
> > Gnome-accessibility-devel mailing list
> > Gnome-accessibility-devel gnome org
> > http://mail.gnome.org/mailman/listinfo/gnome-accessibility-devel
> >
>
> _______________________________________________
> Gnome-accessibility-devel mailing list
> Gnome-accessibility-devel gnome org
> http://mail.gnome.org/mailman/listinfo/gnome-accessibility-devel
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]