home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #26 / NN_1992_26.iso / spool / comp / windows / x / 18811 < prev    next >
Encoding:
Text File  |  1992-11-07  |  3.9 KB  |  99 lines

  1. Path: sparky!uunet!ogicse!uwm.edu!wupost!darwin.sura.net!ra!hightop!humphrey
  2. From: humphrey@hightop.nrl.navy.mil (Jeff Humphrey [Jeffus])
  3. Newsgroups: comp.windows.x
  4. Subject: Xlib Bug ?
  5. Message-ID: <BxB0nz.1nx@ra.nrl.navy.mil>
  6. Date: 6 Nov 92 17:02:22 GMT
  7. Article-I.D.: ra.BxB0nz.1nx
  8. Sender: usenet@ra.nrl.navy.mil
  9. Organization: Naval Research Labs (Washington DC)
  10. Lines: 86
  11. Originator: humphrey@hightop
  12.  
  13.  
  14.   Problem:
  15.     A program I recently wrote worked fine except for one thing.  When
  16.   recieving key events, the program wouldn't catch them if you initially
  17.   placed the base window over the root window of the display.  I thought
  18.   it might have just been my code, so I tried out a few other programs.
  19.   'xev' would do the same thing ... that is to say ... If I run 'xev'
  20.   and place the window in the root window (completely .. not overlapping
  21.   any other windows), then 'xev' will not display key events.  Instead
  22.   of catching them, they go to the window which I ran 'xev' from.
  23.   More confusing ... if I run 'xev' and put it over a window OR put it
  24.   in the root window and iconify then reopen it ... it works fine.
  25.     Thinking that the problem might then be part of my environment, I
  26.   used someone elses account to test it out.  It was still messed up.
  27.     Now I thought it was the setup of X-Windows on my machine, so I
  28.   went to another facility and tried it there ... still now luck.
  29.   The window still didn't catch events until it was closed and reopened.
  30.  
  31.   Question:
  32.     Can anyone verify whether or not this is ...
  33.       A) A bug in two X programs and the one I wrote
  34.       B) Incorrect machine setup on two completely seperate systems
  35.       C) A bug in X
  36.     Can anyone mimic this problem on their machine ?
  37.  
  38.   Test:
  39.     Following is the code I used to determine whether or not I was
  40.   getting KeyPress events or not.  Compile and run the program under
  41.   the following conditions ...
  42.     A) Place the window completely on the root window initially.  Type
  43.        on the window ... Possible results ...
  44.          a) The program works fine ... You get a bunch of lines saying
  45.             'Got KeyPress' on your xterm (or whatever)
  46.          b) The program is hosed up and you get everything you type
  47.             on the xterm.
  48.     B) If you fall into the second catagory above, close the window and
  49.        reopen it.  Now try it ... Did you get the 'Got KeyPress' response
  50.        now ?
  51.     C) Re-run the program and place the window initially over one of your
  52.        xterms ... Did you get 'Got KeyPress' ?  I did ...
  53.  
  54.   /*** INCLUDED TEST PROGRAM THING ***/
  55.  
  56.       #include <X11/Xlib.h>
  57.       int main (argc,argv)
  58.       int argc;
  59.       char **argv;
  60.       /***************************/
  61.       /* cc -o prog prog.c -lX11 */
  62.       /***************************/
  63.       {
  64.         Display *display;
  65.         Window window;
  66.         int screen;
  67.         XEvent event;
  68.       
  69.         if ((display = XOpenDisplay ("")) == (Display *) NULL)
  70.           { printf ("Can't open display\n"); exit (1); }
  71.         screen = DefaultScreen (display);
  72.         window = XCreateSimpleWindow (display,RootWindow (display,screen),
  73.                                       10,10,160,160,3,
  74.                                       BlackPixel (display,screen),
  75.                                       WhitePixel (display,screen));
  76.         XSelectInput (display,window,KeyPressMask);
  77.         XMapWindow (display,window);
  78.         XFlush (display);
  79.         for (;;)
  80.           {
  81.             XNextEvent (display,&event);
  82.             switch (event.type) {
  83.               case (KeyPress):
  84.                 printf ("Got KeyPress\n");
  85.                 break;
  86.               default: break;
  87.             }
  88.           }
  89.       }
  90.  
  91.   /*** END INCLUDED TEST PROGRAM THING ***/
  92.  
  93.   Thanks in advance for any info ...
  94. -- 
  95.  _     ___   ___ _   _ ____
  96. | |   / _ \ / __| | | | ___| #include "standard.disclaimer"   <- IMHO
  97. | |__| |_| | |__| |_| |___ | humphrey@hightop.nrl.navy.mil  (703)960-1000
  98. |____|\___/ \___|\___/|____| @Naval Research Labs           (202)404-8241
  99.