home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #16 / NN_1992_16.iso / spool / comp / windows / x / 14309 < prev    next >
Encoding:
Internet Message Format  |  1992-07-23  |  2.9 KB

  1. Path: sparky!uunet!gatech!rutgers!micro-heart-of-gold.mit.edu!bloom-beacon!INTERNET!dont-send-mail-to-path-lines
  2. From: converse@expo.lcs.mit.EDU (Donna Converse)
  3. Newsgroups: comp.windows.x
  4. Subject: Re: cursor in spring-loaded menu
  5. Message-ID: <9207232002.AA13823@excess.lcs.mit.edu>
  6. Date: 23 Jul 92 20:02:46 GMT
  7. References: <14608@umd5.umd.edu>
  8. Sender: daemon@athena.mit.edu (Mr Background)
  9. Organization: X Consortium, MIT Laboratory for Computer Science
  10. Lines: 56
  11.  
  12.  
  13. > I have a menu widget which I have written intended to be used as a
  14. > spring-loaded popup when a button is pressed (by means of an XtMenuPopup() in
  15. > the translations).  While the menu is popped up I would like the cursor to have
  16. > some special shape.  It seems to be hard to do this.
  17.  
  18. In the Athena widget set, the SimpleMenu widget has a cursor resource.
  19. In this widget's realize method, the cursor for the menu is set as a
  20. window attribute, and this works fine.
  21.  
  22. > Setting the default cursor on the widget does not do anything.
  23.  
  24. I don't understand.
  25.  
  26. > Nor does setting the cursor with
  27. > XDefineCursor() in the popup callback.
  28.  
  29. This wouldn't work because the grab is already active and the pointer for
  30. the menu widget's window is already defined.
  31.  
  32. > The cursor always seems to be that of
  33. > the widget that issued the grab.  The XtMenuPopup action routine puts out a
  34. > passive pointer grab (XGrabButton).  XGrabButton specifies a cursor that is
  35. > used during the grab.  The code for this in the Intrinsics is hard for me to
  36. > follow but it is not obvious to me how to have cursor have any other value but
  37. > None.
  38.  
  39. If you call XtGrabButton directly, you can specify the cursor ID through
  40. this interface.  But this is a lot of extra work.
  41.  
  42. >  Perhaps I have to write my own action routine rather than XtMenuPopup()?
  43.  
  44. Too much work.
  45.  
  46. > Is there something I am missing? some way to get the grab to be issued with a
  47. > particular cursor? I have solved it with a call to XChangeActivePointerGrab()
  48. > in the popup callback which seems to be what the doctor ordered except that it
  49. > wants a new event mask to be specified. I would want to use the same event mask
  50. > as used in the original XGrabButton call but I have no easy way of knowing
  51. > that.  I have used a mask for all possible pointer events.
  52.  
  53. Using XChangeActivePointerGrab is okay; the actual changing of the cursor
  54. might be visible on slow connections, which is suboptimal.  The event mask
  55. should be ButtonPressMask | ButtonReleaseMask which is the same as the event
  56. mask of the original grab.  
  57.  
  58. It seems to me that the menu widget should have a cursor resource, and could 
  59. use the String to Cursor converter supplied by the Intrinsics, so that the
  60. cursor can be described by the application programmer and/or the user.  Then
  61. when the widget's window is created, the supplied cursor is used for that
  62. window.  You should be able to do this and still use XtMenuPopup; you ought
  63. not have to supply and register the grab action yourself.
  64.  
  65.  
  66. Donna Converse
  67. MIT X Consortium
  68.