comparison src/xselect.c @ 111512:4f757d8e8ed7

Apply XAtom revork patches from Julien Danjou. * xsettings.c (init_xsettings): Use already fetch atoms. * xsmfns.c (create_client_leader_window): Use SM_CLIENT_ID atom from dpyinfo. * xselect.c (Fx_send_client_event): Split and create x_send_client_event. * lisp.h: Do not EXFUN Fx_send_client_event. * xterm.c (x_set_frame_alpha): Use _NET_WM_WINDOW_OPACITY atom from dpyinfo. (wm_supports): Use atoms from dpyinfo. (do_ewmh_fullscreen): Use atoms from dpyinfo. (x_ewmh_activate_frame): Use atoms from dpyinfo. (xembed_set_info): Use atoms from dpyinfo. (x_term_init): Fetch _XEMBED_INFO, _NET_SUPPORTED, _NET_SUPPORTING_WM_CHECK, _NET_WM_WINDOW_OPACITY and _NET_ACTIVE_WINDOW, XSETTINGS atoms. Get all atoms in one round-trip. (set_wm_state): Use x_send_client_event rather than Fx_send_client_event, using Atom directly. (x_ewmh_activate_frame): Ditto. (x_set_sticky): Pass atoms to set_wm_state. (do_ewmh_fullscreen): Ditto. * xterm.h (x_display_info): Add Xatom_net_supported, Xatom_net_supporting_wm_check, Xatom_net_active_window, Xatom_net_wm_window_opacity, Xatom_XEMBED_INFO, SM_CLIENT_ID. * xfns.c (Fx_show_tip): Fix typo in docstring.
author Jan D. <jan.h.d@swipnet.se>
date Fri, 12 Nov 2010 10:31:44 +0100
parents c403c2e0a620
children d61a54d15a90
comparison
equal deleted inserted replaced
111511:9b8b83a18b1c 111512:4f757d8e8ed7
2525 If more values than fits into the event is given, the excessive values 2525 If more values than fits into the event is given, the excessive values
2526 are ignored. */) 2526 are ignored. */)
2527 (Lisp_Object display, Lisp_Object dest, Lisp_Object from, Lisp_Object message_type, Lisp_Object format, Lisp_Object values) 2527 (Lisp_Object display, Lisp_Object dest, Lisp_Object from, Lisp_Object message_type, Lisp_Object format, Lisp_Object values)
2528 { 2528 {
2529 struct x_display_info *dpyinfo = check_x_display_info (display); 2529 struct x_display_info *dpyinfo = check_x_display_info (display);
2530
2531 x_send_client_event(display, dest, from,
2532 XInternAtom (dpyinfo->display, SDATA (message_type), False),
2533 format, values);
2534
2535 return Qnil;
2536 }
2537
2538 void
2539 x_send_client_event (Lisp_Object display, Lisp_Object dest, Lisp_Object from, Atom message_type, Lisp_Object format, Lisp_Object values)
2540 {
2541 struct x_display_info *dpyinfo = check_x_display_info (display);
2530 Window wdest; 2542 Window wdest;
2531 XEvent event; 2543 XEvent event;
2532 Lisp_Object cons; 2544 Lisp_Object cons;
2533 int size; 2545 int size;
2534 struct frame *f = check_x_frame (from); 2546 struct frame *f = check_x_frame (from);
2582 for (cons = values, size = 0; CONSP (cons); cons = XCDR (cons), ++size) 2594 for (cons = values, size = 0; CONSP (cons); cons = XCDR (cons), ++size)
2583 ; 2595 ;
2584 2596
2585 BLOCK_INPUT; 2597 BLOCK_INPUT;
2586 2598
2587 event.xclient.message_type 2599 event.xclient.message_type = message_type;
2588 = XInternAtom (dpyinfo->display, SDATA (message_type), False);
2589 event.xclient.display = dpyinfo->display; 2600 event.xclient.display = dpyinfo->display;
2590 2601
2591 /* Some clients (metacity for example) expects sending window to be here 2602 /* Some clients (metacity for example) expects sending window to be here
2592 when sending to the root window. */ 2603 when sending to the root window. */
2593 event.xclient.window = to_root ? FRAME_OUTER_WINDOW (f) : wdest; 2604 event.xclient.window = to_root ? FRAME_OUTER_WINDOW (f) : wdest;
2608 XSendEvent (dpyinfo->display, wdest, propagate, mask, &event); 2619 XSendEvent (dpyinfo->display, wdest, propagate, mask, &event);
2609 XFlush (dpyinfo->display); 2620 XFlush (dpyinfo->display);
2610 } 2621 }
2611 x_uncatch_errors (); 2622 x_uncatch_errors ();
2612 UNBLOCK_INPUT; 2623 UNBLOCK_INPUT;
2613
2614 return Qnil;
2615 } 2624 }
2616 2625
2617 2626
2618 void 2627 void
2619 syms_of_xselect (void) 2628 syms_of_xselect (void)