|
Home About Us A-Z Index Search * Contact Us Register Login Press ShopThe Open Brand -- Problem Reporting and Interpretations System |
Problem Report 2170 Details
Show help | Quick Search | Submit a Test Suite Support Request | Click here to view your privileges
This page provides all information on Problem Report 2170.
Report 2170 Actions
Problem Report Number 2170 Submitter's Classification Specification problem State Resolved Resolution Temporary Interpretation (TIN) Problem Resolution ID TIN.X.0110 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.00017 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-end-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 following the insertion cursor to the
next end 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 following the insertion
cursor to the next end of line character and stores the characters in
the cut buffer. This may impact the selection."
The KillToEndOfLine() 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 end 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 0 to 32.
XmTextSetSelection(Text_info->widget, 0, 32, xisGetServerTime(0) )
;
Next, the test suite positions the cursor at position 44.
XmTextSetInsertionPosition(Text_info->widget, 44 ) ;
Then, it invokes the kill-to-end-of-line() action.
xisClickKey(KeyKillToEOL);
Since there is a non-null selection the selected text should be deleted.
This would cause the cursor, which is AFTER the selection, to move to
the left because the text to its left was deleted. But, since the
KillToEndOfLine function always deletes from the current cursor position
to the end of line, the cursor remains where it is. Hence, we get an
error message because the cursor didn't move.
static void
#ifdef _NO_PROTO
KillToEndOfLine( w, event, params, num_params )
Widget w ;
XEvent *event ;
String *params ;
Cardinal *num_params ;
#else
KillToEndOfLine(
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);
RemoveToEndOfLine(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
KillToEndOfLine( w, event, params, num_params )
Widget w ;
XEvent *event ;
String *params ;
Cardinal *num_params ;
#else
KillToEndOfLine(
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
RemoveToEndOfLine( 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 1Review 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:
- View Report 2170
- List All PRs
- Search Reports
- Email the System Administrator
- View the The Open Brand Interpretations Database User Manual
Contact the Certification Authority