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

  1. Path: sparky!uunet!olivea!hal.com!halaus!alf.hal.COM!not-for-mail
  2. From: ess@hal.COM (Eric Swildens)
  3. Newsgroups: comp.windows.x
  4. Subject: Re: Double Click in a window (Motif Drawing Area)
  5. Keywords: Mouse Events, double click, drawing area, ButtonPress
  6. Message-ID: <1513odINNqh6@alf.hal.COM>
  7. Date: 27 Jul 92 15:12:13 GMT
  8. References: <50599@dime.cs.umass.edu> <1992Jul24.183723.583@thunder.mcrcim.mcgill.edu>
  9. Sender: news@hal.com
  10. Organization: HaL Computer Systems, Inc.
  11. Lines: 35
  12.  
  13. In article <1992Jul24.183723.583@thunder.mcrcim.mcgill.edu>
  14.    mouse@thunder.mcrcim.mcgill.edu (der Mouse) writes:
  15. >In article <50599@dime.cs.umass.edu>,
  16.    nikoulis@venice.pilgrim.umass.edu (Panos Nikoulis) writes:
  17. >> Is there a way to detect a double click mouse event in a window
  18. >Not reliably.  The protocol does not contain enough support to allow
  19. >this to be done right.  (It needs some sort of timeout event.)
  20. >
  21. >> Currently, I am using time functions to make it "wait" for a time
  22. >> equal to the double click interval and detect a second ButtonPress
  23. >> after the first one (inside the Drawing Area callback).
  24. >Some toolkits/widget sets contain code that does this for you.  It'll
  25. >work as well as your code does, presumably, but will suffer from the
  26. >same basic problem: it can lose big in the presence of network hiccups
  27. >(it can fail both ways: it can mistake a double click for two single
  28. >clicks, and it can mistake two single clicks for a double click).
  29.  
  30. The protocol does contain support for this, but whether you can do
  31. this correctly is X server dependent.  If the device driver for the
  32. mouse puts timestamps on the events when it receives them raw,
  33. the X server can get timestamps for the events correctly, which it
  34. will send on down the pipe for your application to receive and these
  35. timestamps wont be affected by network/server delays.  You can
  36. check for double-click events without problems in this case:
  37. get a mouse down/up, check the next mouse down/up whenever it comes,
  38. check the delta between the two event timestamps in your application.
  39.  
  40. If you are running on an X server which doesnt have a friendly device
  41. driver and which puts timestamps on the events itself, you are
  42. in trouble.  If the server reads the first mouse down/up, draws some
  43. huge primitive which takes 10 seconds, reads the second mouse down/up
  44. and puts the current time as a timestamp you probably arent going to
  45. see that double-click in your application.
  46.  
  47. ESS
  48.