comparison src/frame-x.c @ 1885:51ce4f55d8c3

[xemacs-hg @ 2004-01-27 13:33:18 by stephent] quiet GCC <87ad49o6vl.fsf@tleepslib.sk.tsukuba.ac.jp>
author stephent
date Tue, 27 Jan 2004 13:33:21 +0000
parents 18d2b8dabcf7
children 61855263cb07
comparison
equal deleted inserted replaced
1884:3d25fd3d9ac4 1885:51ce4f55d8c3
308 int need_focus = 1; 308 int need_focus = 1;
309 309
310 assert (XtIsWMShell (widget)); 310 assert (XtIsWMShell (widget));
311 311
312 { 312 {
313 Atom type, *atoms = 0; 313 Atom type;
314 int format = 0; 314 int format = 0;
315 unsigned long nitems = 0; 315 unsigned long nitems = 0;
316 unsigned long bytes_after; 316 unsigned long bytes_after;
317 unsigned char *prop_return = 0; /* semantically a void* */
317 318
318 if (Success == XGetWindowProperty (dpy, w, DEVICE_XATOM_WM_PROTOCOLS (d), 319 if (Success == XGetWindowProperty (dpy, w, DEVICE_XATOM_WM_PROTOCOLS (d),
319 0, 100, False, XA_ATOM, 320 0, 100, False, XA_ATOM,
320 &type, &format, &nitems, &bytes_after, 321 &type, &format, &nitems, &bytes_after,
321 (unsigned char **) &atoms) 322 &prop_return)
322 && format == 32 && type == XA_ATOM) 323 && format == 32 && type == XA_ATOM)
323 while (nitems > 0) 324 while (nitems > 0)
324 { 325 {
326 Atom *atoms = (Atom *) prop_return;
325 nitems--; 327 nitems--;
326 if (atoms [nitems] == DEVICE_XATOM_WM_DELETE_WINDOW (d)) 328 if (atoms[nitems] == DEVICE_XATOM_WM_DELETE_WINDOW (d))
327 need_delete = 0; 329 need_delete = 0;
328 else if (atoms [nitems] == DEVICE_XATOM_WM_TAKE_FOCUS (d)) 330 else if (atoms[nitems] == DEVICE_XATOM_WM_TAKE_FOCUS (d))
329 need_focus = 0; 331 need_focus = 0;
330 } 332 }
331 if (atoms) XFree ((char *) atoms); 333 if (prop_return) XFree ((char *) prop_return);
332 } 334 }
333 { 335 {
334 Atom props [10]; 336 Atom props [10];
335 int count = 0; 337 int count = 0;
336 if (need_delete) props[count++] = DEVICE_XATOM_WM_DELETE_WINDOW (d); 338 if (need_delete) props[count++] = DEVICE_XATOM_WM_DELETE_WINDOW (d);
414 x_frame_window_state (struct frame *f) 416 x_frame_window_state (struct frame *f)
415 { 417 {
416 Atom actual_type; 418 Atom actual_type;
417 int actual_format; 419 int actual_format;
418 unsigned long nitems, bytesafter; 420 unsigned long nitems, bytesafter;
419 unsigned long *datap = 0; 421 unsigned char *datap = 0;
420 Widget widget; 422 Widget widget;
421 int result = -1; 423 int result = -1;
422 struct device *d = XDEVICE (FRAME_DEVICE (f)); 424 struct device *d = XDEVICE (FRAME_DEVICE (f));
423 425
424 widget = FRAME_X_SHELL_WIDGET (f); 426 widget = FRAME_X_SHELL_WIDGET (f);
425 if (Success == XGetWindowProperty (XtDisplay (widget), XtWindow (widget), 427 if (Success == XGetWindowProperty (XtDisplay (widget), XtWindow (widget),
426 DEVICE_XATOM_WM_STATE (d), 0, 2, False, 428 DEVICE_XATOM_WM_STATE (d), 0, 2, False,
427 DEVICE_XATOM_WM_STATE (d), &actual_type, 429 DEVICE_XATOM_WM_STATE (d), &actual_type,
428 &actual_format, &nitems, &bytesafter, 430 &actual_format, &nitems, &bytesafter,
429 (unsigned char **) &datap) 431 &datap)
430 && datap) 432 && datap)
431 { 433 {
434 unsigned long *ul_result_ptr = (unsigned long *) datap;
432 if (nitems <= 2) /* "suggested" by ICCCM version 1 */ 435 if (nitems <= 2) /* "suggested" by ICCCM version 1 */
433 result = (int) datap[0]; 436 result = (int) ul_result_ptr[0];
434 XFree ((char *) datap); 437 XFree ((char *) datap);
435 } 438 }
436 439
437 return result; 440 return result;
438 } 441 }