diff options
Diffstat (limited to 'uisimulator/x11/screenhack.c')
-rw-r--r-- | uisimulator/x11/screenhack.c | 121 |
1 files changed, 59 insertions, 62 deletions
diff --git a/uisimulator/x11/screenhack.c b/uisimulator/x11/screenhack.c index 0c795e7d19..72915f41a5 100644 --- a/uisimulator/x11/screenhack.c +++ b/uisimulator/x11/screenhack.c | |||
@@ -166,6 +166,7 @@ static int screenhack_ehandler (Display *dpy, XErrorEvent *error) | |||
166 | 166 | ||
167 | static Bool MapNotify_event_p (Display *dpy, XEvent *event, XPointer window) | 167 | static Bool MapNotify_event_p (Display *dpy, XEvent *event, XPointer window) |
168 | { | 168 | { |
169 | (void)dpy; | ||
169 | return (event->xany.type == MapNotify && | 170 | return (event->xany.type == MapNotify && |
170 | event->xvisibility.window == (Window) window); | 171 | event->xvisibility.window == (Window) window); |
171 | } | 172 | } |
@@ -184,64 +185,60 @@ static Atom XA_WM_PROTOCOLS, XA_WM_DELETE_WINDOW; | |||
184 | int screenhack_handle_event (Display *dpy, XEvent *event) | 185 | int screenhack_handle_event (Display *dpy, XEvent *event) |
185 | { | 186 | { |
186 | int key=0; | 187 | int key=0; |
187 | switch (event->xany.type) | 188 | switch (event->xany.type) { |
188 | { | 189 | case KeyPress: |
189 | case KeyPress: | 190 | { |
190 | { | 191 | KeySym keysym; |
191 | KeySym keysym; | 192 | unsigned char c = 0; |
192 | unsigned char c = 0; | 193 | XLookupString (&event->xkey, &c, 1, &keysym, 0); |
193 | XLookupString (&event->xkey, &c, 1, &keysym, 0); | 194 | if (! (keysym >= XK_Shift_L && keysym <= XK_Hyper_R)) |
194 | if (! (keysym >= XK_Shift_L && keysym <= XK_Hyper_R)) | 195 | XBell (dpy, 0); /* beep for non-chord keys */ |
195 | XBell (dpy, 0); /* beep for non-chord keys */ | 196 | key = keysym; |
196 | key = keysym; | 197 | /* fprintf(stderr, "KEY PRESSED: %c (%02x)\n", c, c); */ |
197 | /* fprintf(stderr, "KEY PRESSED: %c (%02x)\n", c, c); */ | 198 | } |
198 | } | 199 | break; |
199 | break; | 200 | case ResizeRequest: |
200 | case ResizeRequest: | 201 | screen_resized(event->xresizerequest.width, |
201 | screen_resized(event->xresizerequest.width, | 202 | event->xresizerequest.height); |
202 | event->xresizerequest.height); | 203 | screen_redraw(); |
203 | screen_redraw(); | 204 | fprintf(stderr, "WINDOW RESIZED to width %d height %d\n", |
204 | fprintf(stderr, "WINDOW RESIZED to width %d height %d\n", | 205 | event->xresizerequest.width, event->xresizerequest.height); |
205 | event->xresizerequest.width, event->xresizerequest.height); | 206 | break; |
206 | break; | 207 | default: |
207 | default: | ||
208 | /* fprintf(stderr, "EVENT: %d (see /usr/include/X11/X.h)\n", | 208 | /* fprintf(stderr, "EVENT: %d (see /usr/include/X11/X.h)\n", |
209 | event->xany.type); | 209 | event->xany.type); |
210 | */ | 210 | */ |
211 | break; | 211 | break; |
212 | case Expose: | 212 | case Expose: |
213 | screen_redraw(); | 213 | screen_redraw(); |
214 | fprintf(stderr, "EXPOSE: x: %d y: %d width: %d height: %d\n", | 214 | fprintf(stderr, "EXPOSE: x: %d y: %d width: %d height: %d\n", |
215 | event->xexpose.x, event->xexpose.y, | 215 | event->xexpose.x, event->xexpose.y, |
216 | event->xexpose.width, event->xexpose.height); | 216 | event->xexpose.width, event->xexpose.height); |
217 | break; | 217 | break; |
218 | case ButtonPress: | 218 | case ButtonPress: |
219 | fprintf(stderr, "BUTTON PRESSED: x: %d y:%d\n",event->xbutton.x,event->xbutton.y); | 219 | fprintf(stderr, "BUTTON PRESSED: x: %d y:%d\n",event->xbutton.x,event->xbutton.y); |
220 | break; | 220 | break; |
221 | case ClientMessage: | 221 | case ClientMessage: |
222 | { | 222 | { |
223 | if (event->xclient.message_type != XA_WM_PROTOCOLS) | 223 | if (event->xclient.message_type != XA_WM_PROTOCOLS) { |
224 | { | 224 | char *s = XGetAtomName(dpy, event->xclient.message_type); |
225 | char *s = XGetAtomName(dpy, event->xclient.message_type); | 225 | if (!s) s = "(null)"; |
226 | if (!s) s = "(null)"; | 226 | fprintf (stderr, "%s: unknown ClientMessage %s received!\n", |
227 | fprintf (stderr, "%s: unknown ClientMessage %s received!\n", | 227 | progname, s); |
228 | progname, s); | 228 | } |
229 | } | 229 | else if (event->xclient.data.l[0] != (int)XA_WM_DELETE_WINDOW) { |
230 | else if (event->xclient.data.l[0] != XA_WM_DELETE_WINDOW) | 230 | char *s1 = XGetAtomName(dpy, event->xclient.message_type); |
231 | { | 231 | char *s2 = XGetAtomName(dpy, event->xclient.data.l[0]); |
232 | char *s1 = XGetAtomName(dpy, event->xclient.message_type); | 232 | if (!s1) s1 = "(null)"; |
233 | char *s2 = XGetAtomName(dpy, event->xclient.data.l[0]); | 233 | if (!s2) s2 = "(null)"; |
234 | if (!s1) s1 = "(null)"; | 234 | fprintf (stderr, "%s: unknown ClientMessage %s[%s] received!\n", |
235 | if (!s2) s2 = "(null)"; | 235 | progname, s1, s2); |
236 | fprintf (stderr, "%s: unknown ClientMessage %s[%s] received!\n", | 236 | } |
237 | progname, s1, s2); | 237 | else { |
238 | } | 238 | exit (0); |
239 | else | 239 | } |
240 | { | 240 | } |
241 | exit (0); | 241 | break; |
242 | } | ||
243 | } | ||
244 | break; | ||
245 | } | 242 | } |
246 | return key; | 243 | return key; |
247 | } | 244 | } |
@@ -311,10 +308,10 @@ static void visual_warning (Screen *screen, Window window, Visual *visual, | |||
311 | if (window == RootWindowOfScreen (screen)) | 308 | if (window == RootWindowOfScreen (screen)) |
312 | strcpy (win, "root window"); | 309 | strcpy (win, "root window"); |
313 | else | 310 | else |
314 | sprintf (win, "window 0x%x", (unsigned long) window); | 311 | sprintf (win, "window 0x%lx", (long) window); |
315 | 312 | ||
316 | if (window_p) | 313 | if (window_p) |
317 | sprintf (why, "-window-id 0x%x", (unsigned long) window); | 314 | sprintf (why, "-window-id 0x%lx", (long)window); |
318 | else | 315 | else |
319 | strcpy (why, "-root"); | 316 | strcpy (why, "-root"); |
320 | 317 | ||
@@ -333,8 +330,8 @@ static void visual_warning (Screen *screen, Window window, Visual *visual, | |||
333 | { | 330 | { |
334 | fprintf (stderr, "%s: ignoring `-visual %s' because of `%s'.\n", | 331 | fprintf (stderr, "%s: ignoring `-visual %s' because of `%s'.\n", |
335 | progname, visual_string, why); | 332 | progname, visual_string, why); |
336 | fprintf (stderr, "%s: using %s's visual 0x%x.\n", | 333 | fprintf (stderr, "%s: using %s's visual 0x%lx.\n", |
337 | progname, win, XVisualIDFromVisual (visual)); | 334 | progname, win, (long)XVisualIDFromVisual (visual)); |
338 | } | 335 | } |
339 | free (visual_string); | 336 | free (visual_string); |
340 | } | 337 | } |
@@ -345,8 +342,8 @@ static void visual_warning (Screen *screen, Window window, Visual *visual, | |||
345 | { | 342 | { |
346 | fprintf (stderr, "%s: ignoring `-install' because of `%s'.\n", | 343 | fprintf (stderr, "%s: ignoring `-install' because of `%s'.\n", |
347 | progname, why); | 344 | progname, why); |
348 | fprintf (stderr, "%s: using %s's colormap 0x%x.\n", | 345 | fprintf (stderr, "%s: using %s's colormap 0x%lx.\n", |
349 | progname, win, (unsigned long) cmap); | 346 | progname, win, (long) cmap); |
350 | } | 347 | } |
351 | } | 348 | } |
352 | 349 | ||