home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1993 #1 / NN_1993_1.iso / spool / comp / windows / x / motif / 8462 < prev    next >
Encoding:
Text File  |  1993-01-09  |  4.4 KB  |  128 lines

  1. Newsgroups: comp.windows.x.motif
  2. Path: sparky!uunet!gatech!destroyer!wsu-cs!vela!sglanger
  3. From: sglanger@vela.acs.oakland.edu (LANGER STEVEN C)
  4. Subject: heller updates
  5. Message-ID: <1993Jan9.145509.27277@vela.acs.oakland.edu>
  6. Organization: Oakland University, Rochester MI.
  7. Distribution: na
  8. Date: Sat, 9 Jan 1993 14:55:09 GMT
  9. Lines: 117
  10.  
  11. Since Dan Heller's book (Vol. 6 Motif Programming Manual) is arguably
  12. the Bible of this group, I think it would be a benefit to all of us to 
  13. keep a running list of the typos, errors and points that could maybe
  14. profit from a little clarification. This will help the readers of this
  15. group profit from other's experience and (since I will send this update
  16. periodically to O'Reilly and Assoc.) will help Dan Heller when the
  17. second edition rolls around. I volunteer to update this list as you
  18. fellow readers send me your suggestions.
  19.  
  20. As to format, I've already been informed that the page numbers I quote
  21. do not match with others, so I suggest the following
  22.  
  23. Example  Chapter-number        program.c
  24.  
  25.     5-10 lines of code around the point in question with
  26.         the trouble spot underlined thus
  27. -------------------------------------^
  28.  
  29.   Your description of the problem and the code showing the solution.
  30.  
  31. Remember, every clarification reported here will help someone avoid the 
  32. pain you had to go through ;-) 
  33.  
  34. I'd also like to thank Jeffrey Wood, Bob Hays and S. Ramakrishnan for
  35. the advice which they selflessly doled out to me during the initial
  36. steep climb up the "X learning curve".
  37.  
  38. ***********************************************************************
  39.  
  40. Example 5-5     the PostDialog routine
  41.  
  42. PostDialog (Widget parent, int dialog_type, char *msg)
  43. {
  44.     Widget dialog;
  45.     XmString text;
  46.  
  47.     dialog = XmCreateMessageDialog (parent, "dialog", NULL, 0);
  48.     text = XmStringCreateSimple (dialog, msg);
  49. ----------------------------------------------^
  50. this will not compile, XmStringCreateSimple only takes char *msg
  51.  
  52. should be
  53.     text = XmStringCreateSimple (msg);
  54.  
  55. **********************************************************************
  56.  
  57. Example 5-10        the askuser routine
  58.  
  59.     /* While the user hasn't provided an answer, simulate main loop
  60.     *
  61.     *
  62.     */
  63.  
  64.     while (answer == 0)
  65.         XtAppProcessEvents (app, XtIMAll);
  66. ---------------------------------^
  67. will not compile, the function is XtAppProcessEvent
  68.  
  69. **********************************************************************
  70.  
  71. Example 17-4           wm_delete.c
  72.  
  73.     /* several problems in here */
  74.  
  75. void activate (Widget w)
  76. {
  77.     Widget dialog, shell;
  78.     *
  79.     *
  80.     Atom WM_DELETE_WINDOW;    
  81.  
  82.  
  83.     *
  84.     *
  85.     dialog = XmCreateWarningDialog (w, "notice", args, 2);
  86.     *
  87.     *
  88.     XtManageChild (dialog);
  89.  
  90.     /* Add a callback for the WM_DELETE_WINDOW protocol */
  91.     shell = XtParent (dialog);
  92.     WM_DELETE_WINDOW = XmInternAtom(XtDisplay(w), "WM_DELETE_WINDOW", 
  93.                 False);
  94.     XmAddWMProtocolCallback(shell, WM_DELETE_WINDOW, cbfunc, dialog);
  95. ----------------------------------------------------------------^
  96. will not compile without a (XtPointer) cast in front of dialog
  97.  
  98. The other problem is less obvious. While fixing the cast will get this
  99. code to work, changing dialog to a XmCreateDialogShell results in the
  100. following X-warning (at dialog creation)
  101.  
  102. Warning: must be a vendor shell
  103.  
  104. And the callback function is never called. Same situation for any
  105. other XmCreate function except XmCreateWarningDialog and
  106. XmCreateInformationDialog.
  107. This despite the fact that we used an XmCreate routine. The problem is
  108. that this example uses shell in the ProtocolCallback. Instead use
  109.  
  110.     WM_DELETE_WINDOW = XmInternAtom(XtDisplay(w), "WM_DELETE_WINDOW", 
  111.                 False);
  112.     XmAddWMProtocolCallback(dialog, WM_DELETE_WINDOW, cbfunc, dialog);
  113.  
  114. and forget about the shell. Then all works well.
  115.  
  116. **********************************************************************
  117. -- 
  118. Steve Langer                     sglanger@argo.acs.oakland.edu (VMS)
  119. Oakland University               sglanger@vela.acs.oakland.edu (Ultrix)
  120. ---------------------------------------------------------------------------
  121. Standard disclaimers apply. In addition, the author makes no guarantees,
  122. concerning the grammatical accuracy of his writing. Therefore, any ^B's, ^C's, 
  123. midword character additions/deletions and other non-sense which occurs (after 
  124. the work leaves the author's decade old text editor via his decade old Amiga, 
  125. struggles through a local 1200 baud Merit server to be further mauled via the 
  126. remote VAX mail servers) is someone elses problem - namely yours.
  127. ---------------------------------------------------------------------------
  128.