HomeAbout Us A-Z IndexSearch * Contact Us Register LoginPress Shop

The Open Brand -- Problem Reporting and Interpretations System


Problem Report 2132 Details

Help Show help | Quick Search | Submit a Test Suite Support Request | Click here to view your privileges

This page provides all information on Problem Report 2132.


Report 2132 Actions


    Problem Report Number 2132
    Submitter's Classification Minor System Fault
    State Resolved
    Resolution Minor System Fault (MSF)
    Problem Resolution ID MSF.X.0090
    Raised 1970-01-01 08:00
    Updated 2003-03-13 08:00
    Published 1997-12-31 08:00
    Expiry Date 1998-12-31
    Product Standard Motif Toolkit
    Certification Program The Open Brand certification program
    Test Suite VSM version 4.0.0
    Test Identification vsm4/tset/funcs/XmGetVisibility test1A
    Problem Summary MSF4M.00002 Function XmGetVisibility currently doesn't fulfill the requirement it says on the spec. When we check the visibility of a widget using XmGetVisibility, (XmGetVisibility is defined in Traversal.c in X...
    Problem Text

    Function XmGetVisibility currently doesn't fulfill the requirement
    it says on the spec.

    When we check the visibility of a widget using XmGetVisibility,
    (XmGetVisibility is defined in Traversal.c in Xm lib) here are the steps
    we check through(Please look at the code in Traversal.c for more detailed
    infomation):

    We check whether this is a valid widget or not, and check whether we
    can create a visiable rectangle on this widget, if either one is wrong, we
    return XmVISIBILITY_FULLY_OBSCURED, otherwise we continue, the code is :

    if( !wid
    !_XmCreateVisibilityRect( wid, &rect) )
    {
    return( XmVISIBILITY_FULLY_OBSCURED) ;
    }

    Here "wid" is valid. Functional call _XmCreateVisibilityRect will

    X/Open Waiver Reference: Page: 1

    WAIVER DOCUMENT X/Open Waiver Reference:


    return a rectangle whose width and height are the same as this widget which
    we passed it in to XmGetVisibility. So this function XmGetVisibility will
    return XmVISIBILITY_UNOBSCURED in our first failed place in this journal file.
    Functional call _XmCreateVisibilityRect will return true in this case.

    Function _XmCreateVisibilityRect is defined in the same file
    Traversal.c in lib Xm.
    For functional call _XmCreateVisibilityRect(wid, &rect), it first
    check whether the widget is viewable, if a widget is realized and mapped then
    it is viewable, this is done when it calls _XmIsViewable, here all 3 buttons
    are viewable when we reach the first failed test case.
    Then _XmCreateVisibilityRect will create a rectangle from the widget
    which we are testing(We pass this widget to functional call XmGetVisibility).
    Here is the code:
    .......................
    else
    { _XmSetRect( rectPtr, w) ;
    }
    ......................

    Function _XmSetRect is defined in the same file Traversal.c, its
    purpose is to get the widget size and its anchor.
    The last thing to do in function _XmCreateVisibilityRect is to compare
    this rectangle against all its ancestors to see if there is any intersection.
    Here is the code:
    .......................................................
    /* Process all widgets, excluding the shell widget.
    */
    while( (w = XtParent( w)) && !XtIsShell( w) )
    {
    if( !_XmIsViewable( w)
    !_XmIntersectRect( rectPtr, w, rectPtr) )
    {
    _XmClearRect( rectPtr) ;
    return( False) ;
    }
    }
    .......................................................

    All three buttons are mapped and realized on the bulletin board, so
    _XmIsViewable and _XmIntersectRect both return true here, so functional call
    _XmCreateVisibilityRect return true.
    _XmIntersectRect is defined in TraversalI.c.
    The problem here is we only check the currently being checked widget
    against its ancestors, we don't care who else is on the top of current widget,
    such as its siblings(This is the actual situation in our test case), and it
    is very hard to check whoever is on the current widget(which means we have
    search the whole widget tree start from root window, this could be the reason
    that the current Motif hasn't implemented the requirements it stated in the
    spec for XmGetVisibility).

    X/Open Waiver Reference: Page: 2

    WAIVER DOCUMENT X/Open Waiver Reference:


    This is a system implementation problem.

    Review Information

    Review Type SA Review
    Start Date null
    Completed null
    Status Complete
    Review Resolution Minor System Fault (MSF)
    Review Conclusion
    A Temporary Waiver is granted.


    Problem Reporting System Options:

     

    Back   


Contact the Certification Authority