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

The Open Brand -- Problem Reporting and Interpretations System


Problem Report 2171 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 2171.


Report 2171 Actions


    Problem Report Number 2171
    Submitter's Classification Specification problem
    State Resolved
    Resolution Temporary Interpretation (TIN)
    Problem Resolution ID TIN.X.0111
    Raised 1970-01-01 08:00
    Updated 2003-03-13 08:00
    Published 1998-04-20 08:00
    Product Standard Motif Toolkit
    Certification Program The Open Brand certification program
    Test Suite VSM version 4.0.0
    Test Identification widgets/XmText 4
    Specification Motif Toolkit API
    Location in Spec See Problem Text
    Problem Summary TIN4M.00018 The reference implementation (i.e. The Motif code provided by TOG) being tested is not in line with the standard specification for this Motif function as defined in the "X/Open Motif Toolkit API". The...
    Problem Text
    The reference implementation (i.e. The Motif code provided by TOG) being

    tested is not in line with the standard specification for this Motif
    function as defined in the "X/Open Motif Toolkit API".
    The assertion being tested is in line with the standard specification
    but the behavior of this function is not in line with the specification.

    Either the Motif reference implementation is at fault, or the
    Specification needs to be aligned with the reference implemenation. It
    is our understanding that Motif 1.2.X is no longer supported by TOG,
    hence we request this waiver be granted a Permanent Interpretation.

    The description of the kill-to-start-of-line() action routine in the
    "X/Open Motif Toolkit API" states the following:




    "In normal mode, if there is a non-null selection, deletes the
    selection;
    otherwise, kills the characters preceding the insertion cursor to the
    next beginning-of-line character and stores the characters in the cut
    buffer.
    In add mode, if there is a non-null selection, the cursor is not
    disjoint
    from the selection, and XmNpendingDelete is set to True, deletes the
    selection; otherwise, kills the characters preceding the insertion
    cursor to the next beginning-of-line character and stores the characters
    in
    the cut buffer. This may impact the selection."

    The KillToStartOfLine() function does not check for any of the
    conditions
    stated above (i.e. non-null selection, add/normal mode, or
    XmNpendingDelete). Instead it always removes the text from the
    insertion cursor to the beginning of line.

    The reason for the error message above is this. The test suite
    places some text in the widget and then selects the characters
    at positions 32 to 55.

    XmTextSetSelection(Text_info->widget, 32, 55, xisGetServerTime(0)
    ) ;

    Next, the test suite positions the cursor at position 20.

    XmTextSetInsertionPosition(Text_info->widget, 20 ) ;

    Then, it invokes the kill-to-start-of-line() action.

    xisClickKey(KeyKillToBOL);

    Since there is a non-null selection the selected text should be deleted.

    This would cause the cursor, which is BEFORE the selection, to remain
    where it is. But, since the KillToStartOfLine function always deletes
    from the current cursor position to the beginning of line the cursor
    moves to the left because the text to its left has been deleted.

    static void
    #ifdef _NO_PROTO
    KillToStartOfLine( w, event, params, num_params )
    Widget w ;
    XEvent *event ;
    String *params ;
    Cardinal *num_params ;
    #else
    KillToStartOfLine(
    Widget w,
    XEvent *event,




    String *params,
    Cardinal *num_params )
    #endif /* _NO_PROTO */
    {
    XmTextWidget tw = (XmTextWidget) w;

    (*tw->text.output->DrawInsertionPoint)( tw,
    tw->text.cursor_position, off);
    RemoveToStartOfLine(w, event, params, num_params, TRUE);
    (*tw->text.output->DrawInsertionPoint)( tw,
    tw->text.cursor_position, on);
    }

    The function should be modified to look like this:

    static void
    #ifdef _NO_PROTO
    KillToStartOfLine( w, event, params, num_params )
    Widget w ;
    XEvent *event ;
    String *params ;
    Cardinal *num_params ;
    #else
    KillToStartOfLine(
    Widget w,
    XEvent *event,
    String *params,
    Cardinal *num_params )
    #endif /* _NO_PROTO */
    {
    XmTextPosition left, right;

    XmTextWidget tw = (XmTextWidget) w;

    (*tw->text.output->DrawInsertionPoint)( tw,
    tw->text.cursor_position, off);

    if (NeedsPendingDeleteDisjoint( tw, &left, &right, True))
    DeleteCurrentSelection( w, event, params, num_params);
    else
    RemoveToStartOfLine( w, event, params, num_params, True);

    (*tw->text.output->DrawInsertionPoint)( tw,
    tw->text.cursor_position, on);
    }

    Test Output
    520|1361 4 9472 1 1|VSM4TESTSUITE PURPOSE 4
    520|1361 4 9472 1 2|The XmText widget shall exhibit the behavior
    520|1361 4 9472 1 3|defined in the Motif Toolkit API specification.
    520|1361 4 9472 1 4|INFO: ***************** Beginning Iteration 1
    of 256 *
    ***************
    520|1361 4 9472 1 5|INFO: --XmNsensitive=True
    520|1361 4 9472 1 6|INFO: --XmNautoShowCursorPosition=True
    520|1361 4 9472 1 7|INFO: --XmNeditMode=1
    520|1361 4 9472 1 8|INFO: --XmNeditable=True
    520|1361 4 9472 1 9|INFO: --XmNhighlightOnEnter=True
    520|1361 4 9472 1 10|INFO: --XmNpendingDelete=True
    520|1361 4 9472 1 11|INFO: --XmNresizeHeight=True
    520|1361 4 9472 1 12|INFO: --XmNtraversalOn=True
    520|1361 4 9472 1 13|INFO: --XmNwordWrap=True
    520|1361 4 9472 1 14|PREP: Click KeyDelete (delete-next-char)
    520|1361 4 9472 1 15|TEST: deletes the character following the insertion
    cursor
    520|1361 4 9472 1 16|PREP: Click KeyBackspace (delete-previous-char)
    520|1361 4 9472 1 17|TEST: deletes the character of text before
    insertion cursr.
    520|1361 4 9472 1 18|PREP: Click KeyDelFwdWord(delete-next-word)




    520|1361 4 9472 1 19|TEST: deletes the next word .
    520|1361 4 9472 1 20|PREP: Click KeyDelPrvWord(delete-previous-word)
    520|1361 4 9472 1 21|TEST: deletes the word preceding the insertion
    cursor .
    520|1361 4 9472 1 22|PREP: Click KeyDeleteEOL(delete-to-end-of-line)
    520|1361 4 9472 1 23|PREP: Click KeyDeleteBOL(delete-to-start-of-line)
    520|1361 4 9472 1 24|TEST: Deletes from insertion cursor to beginning of
    line
    520|1361 4 9472 1 25|PREP: Click KeyLeft (backward char)
    520|1361 4 9472 1 26|TEST: Moves the insertion cursor one character to
    the left
    520|1361 4 9472 1 27|TEST: Traverses to next item to left of current
    gadget
    520|1361 4 9472 1 28|PREP: Click KeyRight (forward char)
    520|1361 4 9472 1 29|TEST: Moves the insertion cursor one character to
    right .
    520|1361 4 9472 1 30|TEST: Traverses to next item to right of current
    gadget
    520|1361 4 9472 1 31|PREP: Click MCtrl KRight (forward word)
    520|1361 4 9472 1 32|TEST: moves the insertion cursor forward one word
    520|1361 4 9472 1 33|PREP: Click MCtrl KLeft (backward word)
    520|1361 4 9472 1 34|TEST: moves the insertion cursor backward one word
    520|1361 4 9472 1 35|PREP: Click KeyBeginLine (goto BOL)
    520|1361 4 9472 1 36|TEST: moves the insertion cursor to beginning of
    line
    520|1361 4 9472 1 37|TEST: Traverses to 1st widget or gadget in crnt tab
    grp.
    520|1361 4 9472 1 38|PREP: Click KeyEndLine (goto EOL)
    520|1361 4 9472 1 39|TEST: moves the insertion cursor to end_of_line
    520|1361 4 9472 1 40|PREP: Click MShft MCtrl KLeft(backward word extend)

    520|1361 4 9472 1 41|TEST: extends the insertion cursor backward one
    word
    520|1361 4 9472 1 42|PREP: Click MShft MCtrl KRight (forward word
    extend)
    520|1361 4 9472 1 43|TEST: extends the insertion cursor forward one word

    520|1361 4 9472 1 44|PREP: Click MShift KeyBeginLine (goto BOL extend)
    520|1361 4 9472 1 45|TEST: extends the insertion cursor to beginning of
    line
    520|1361 4 9472 1 46|PREP: Click MShift KeyEndLine (goto EOL extend)
    520|1361 4 9472 1 47|TEST: extends the insertion cursor to end_of_line
    520|1361 4 9472 1 48|PREP: Click KeyKillNextChar outside selection
    (kill-next-char)
    520|1361 4 9472 1 49|TEST: kills the char following the insertion
    cursor.
    520|1361 4 9472 1 50|PREP: Unkill killed text (unkill)
    520|1361 4 9472 1 51|TEST: Restores last killed text to the insertion
    cursor .
    520|1361 4 9472 1 52|PREP: Click KeyKillPrevChar outside selection
    (kill-prev-char)
    520|1361 4 9472 1 53|TEST: kills the character preceding insertion




    cursor.
    520|1361 4 9472 1 54|PREP: Unkill killed text (unkill)
    520|1361 4 9472 1 55|TEST: Restores last killed text to the insertion
    cursor .
    520|1361 4 9472 1 56|PREP: Click KeyKillNextWord outside selection
    (kill-next-word)
    520|1361 4 9472 1 57|TEST: kills the word following the insertion
    cursor.
    520|1361 4 9472 1 58|PREP: Unkill killed text (unkill)
    520|1361 4 9472 1 59|TEST: Restores last killed text to the insertion
    cursor .
    520|1361 4 9472 1 60|PREP: Click KeyKillPrevWord outside selection
    (kill-prev-word)
    520|1361 4 9472 1 61|TEST: kills the word preceding the insertion cursor

    520|1361 4 9472 1 62|PREP: Unkill killed text (unkill)
    520|1361 4 9472 1 63|TEST: Restores last killed text to the insertion
    cursor .
    520|1361 4 9472 1 64|PREP: Click KeyKillToEOL outside selection
    (kill-to-EOL)
    520|1361 4 9472 1 65|TEST: Kills insertion cursor to next EOL .
    520|1361 4 9472 1 66|ERROR: Didn't receive expected callback(s)
    XmNmotionVerifyCallback of widget XmText of class xmTextWidgetClass.
    Received 0,
    Expected 1
    520|1361 4 9472 1 67|PREP: Unkill killed text (unkill)
    520|1361 4 9472 1 68|TEST: Restores last killed text to the insertion
    cursor .
    520|1361 4 9472 1 69|PREP: Click KeyKillToBOL outside
    selection(kill-to-BOL)
    520|1361 4 9472 1 70|TEST: Kills insertion cursor to next BOL .
    520|1361 4 9472 1 71|ERROR: Received unexpected callback(s)
    XmNmotionVerifyCallback of widget XmText of class xmTextWidgetClass
    Received 1,
    Expected 0

    Review Information

    Review Type TSMA Review
    Start Date null
    Completed null
    Status Complete
    Review Recommendation No Resolution Given
    Review Response




    A non-alignment between the reference code and its specification is
    under investigation. Thus it is recommended that a Temporary
    Interpretation be granted for this test while it remains subject to review.
    If a change to the specification results from the conclusion of this
    investigation, then this Temporary Interpretation will be converted
    to a Permanent Waiver. Otherwise this Temporary Interpretation will
    be converted to a Temporary Waiver (Minor System Fault).


    Review Type SA Review
    Start Date null
    Completed null
    Status Complete
    Review Resolution Temporary Interpretation (TIN)
    Review Conclusion
    A Temporary Interpretation is granted.

    Applicability: VSM4.0.0 only.


    Problem Reporting System Options:

     

    Back   


Contact the Certification Authority