Report 2211 Actions
Problem Report Number |
2211 |
Submitter's Classification |
Specification problem |
State |
Resolved |
Resolution |
Rejected (REJ) |
Problem Resolution ID |
REJ.X.0624 |
Raised |
1998-03-20 08:00 |
Updated |
2003-03-13 08:00 |
Published |
null |
Product Standard |
Motif Toolkit |
Certification Program |
The Open Brand certification program |
Test Suite |
VSM version 4.0.0 |
Test Identification |
widgets/XmText 4 |
Problem Summary |
PG4M.00019 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 "OSF/Motif Programmer's Refere... |
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 "OSF/Motif Programmer's Reference (Rel. 1.2)". 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 "OSF/Motif Programmer's Reference (Rel. 1.2)" states the following:
"In normal mode, if there is a nonnull 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 nonnull 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. nonnull selection, add/normal mode, or XmNpendingDelete). Instead it always removes the text from the insertion cursor to the end of line. Please note that the same argument applies to the kill-to-start-of-line() action routine.
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 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 |
We note that the journal shows two errors: in once case a callback is received that was not expected and in another a callback was not received which was expected. We recommend that this request be returned to the applicant for further explanation of the rationale.
|
Review Type |
SA Review |
Start Date |
null |
Completed |
null |
Status |
Complete |
Review Resolution |
No Resolution Given |
Review Conclusion |
The specification under test is the X/Open Motif Toolkit API Specification not the OSF/Motif Programmer's Reference (Rel.1.2).
We need further information as requested by the consultant below.
|
Review Type |
SA Review |
Start Date |
null |
Completed |
null |
Status |
Complete |
Review Resolution |
Rejected (REJ) |
Review Conclusion |
This request is refused.
|
Problem Reporting System Options:
|