Esempio n. 1
0
bool send_message(
    Display* dpy, /* display */
    Window w,     /* sender (tray icon window) */
    long message, /* message opcode */
    long data1,   /* message data 1 */
    long data2,   /* message data 2 */
    long data3    /* message data 3 */
){
    XEvent ev;

    memset(&ev, 0, sizeof(ev));
    ev.xclient.type = ClientMessage;
    ev.xclient.window = w;
    ev.xclient.message_type = XInternAtom (dpy, "_NET_SYSTEM_TRAY_OPCODE", False );
    ev.xclient.format = 32;
    ev.xclient.data.l[0] = CurrentTime;
    ev.xclient.data.l[1] = message;
    ev.xclient.data.l[2] = data1;
    ev.xclient.data.l[3] = data2;
    ev.xclient.data.l[4] = data3;

    trap_errors();
    XSendEvent(dpy, w, False, NoEventMask, &ev);
    XSync(dpy, False);
    return untrap_errors();
}
Esempio n. 2
0
bool XMessages::send_message_internal( WId w_P, const QString& msg_P, long mask_P, Display* disp, Atom atom1_P, Atom atom2_P, Window handle_P )
{
	unsigned int pos = 0;
	QByteArray msg = msg_P.toUtf8();
	unsigned int len = msg.size(); // originally strlen ( QCString(msg_P) ), is it different ? --- J. Verner
	XEvent e;

	e.xclient.type = ClientMessage;
	e.xclient.message_type = atom1_P; // leading message
	e.xclient.display = disp;
	e.xclient.window = handle_P;
	e.xclient.format = 8;

	trap_errors();
	do
	{
		unsigned int i;
		for( i = 0; i < 20 && i + pos <= len; ++i )
			e.xclient.data.b[ i ] = msg[ i + pos ];

		XSendEvent( disp, w_P, False, mask_P, &e );

		e.xclient.message_type = atom2_P; // following messages
		pos += i;
	} while( pos <= len );

	XSync( disp, False );
	return untrap_errors();
}