* so reparent it to the root window, and then send
* it a delete event, as if we were a WM
*/
- XClientMessageEvent xevent;
+ XClientMessageEvent xclient;
gdk_error_trap_push ();
gdk_window_hide (window);
gdk_window_reparent (window, NULL, 0, 0);
- xevent.type = ClientMessage;
- xevent.window = GDK_WINDOW_XID (window);
- xevent.message_type = gdk_x11_get_xatom_by_name_for_display (GDK_WINDOW_DISPLAY (window),
+ memset (&xclient, 0, sizeof (xclient));
+ xclient.type = ClientMessage;
+ xclient.window = GDK_WINDOW_XID (window);
+ xclient.message_type = gdk_x11_get_xatom_by_name_for_display (GDK_WINDOW_DISPLAY (window),
"WM_PROTOCOLS");
- xevent.format = 32;
- xevent.data.l[0] = gdk_x11_get_xatom_by_name_for_display (GDK_WINDOW_DISPLAY (window),
+ xclient.format = 32;
+ xclient.data.l[0] = gdk_x11_get_xatom_by_name_for_display (GDK_WINDOW_DISPLAY (window),
"WM_DELETE_WINDOW");
- xevent.data.l[1] = CurrentTime;
- xevent.data.l[2] = 0;
- xevent.data.l[3] = 0;
- xevent.data.l[4] = 0;
+ xclient.data.l[1] = CurrentTime;
+ xclient.data.l[2] = 0;
+ xclient.data.l[3] = 0;
+ xclient.data.l[4] = 0;
XSendEvent (GDK_WINDOW_XDISPLAY (window),
GDK_WINDOW_XID (window),
- False, 0, (XEvent *)&xevent);
+ False, 0, (XEvent *)&xclient);
gdk_display_sync (GDK_WINDOW_DISPLAY (window));
gdk_error_trap_pop ();
}
if (gdk_x11_screen_supports_net_wm_hint (GDK_WINDOW_SCREEN (window),
gdk_atom_intern_static_string ("_NET_WM_DESKTOP")))
{
- XEvent xev;
Atom type;
gint format;
gulong nitems;
if (type == XA_CARDINAL)
{
+ XClientMessageEvent xclient;
current_desktop = (gulong *)data;
- xev.xclient.type = ClientMessage;
- xev.xclient.serial = 0;
- xev.xclient.send_event = True;
- xev.xclient.window = GDK_WINDOW_XWINDOW (window);
- xev.xclient.message_type = gdk_x11_get_xatom_by_name_for_display (display, "_NET_WM_DESKTOP");
- xev.xclient.format = 32;
-
- xev.xclient.data.l[0] = *current_desktop;
- xev.xclient.data.l[1] = 0;
- xev.xclient.data.l[2] = 0;
- xev.xclient.data.l[3] = 0;
- xev.xclient.data.l[4] = 0;
+ memset (&xclient, 0, sizeof (xclient));
+ xclient.type = ClientMessage;
+ xclient.serial = 0;
+ xclient.send_event = True;
+ xclient.window = GDK_WINDOW_XWINDOW (window);
+ xclient.message_type = gdk_x11_get_xatom_by_name_for_display (display, "_NET_WM_DESKTOP");
+ xclient.format = 32;
+
+ xclient.data.l[0] = *current_desktop;
+ xclient.data.l[1] = 0;
+ xclient.data.l[2] = 0;
+ xclient.data.l[3] = 0;
+ xclient.data.l[4] = 0;
XSendEvent (GDK_DISPLAY_XDISPLAY (display),
GDK_WINDOW_XROOTWIN (window),
False,
SubstructureRedirectMask | SubstructureNotifyMask,
- &xev);
+ (XEvent *)&xclient);
XFree (current_desktop);
}
if (gdk_x11_screen_supports_net_wm_hint (GDK_WINDOW_SCREEN (window),
gdk_atom_intern_static_string ("_NET_ACTIVE_WINDOW")))
{
- XEvent xev;
+ XClientMessageEvent xclient;
- xev.xclient.type = ClientMessage;
- xev.xclient.serial = 0;
- xev.xclient.send_event = True;
- xev.xclient.window = GDK_WINDOW_XWINDOW (window);
- xev.xclient.message_type = gdk_x11_get_xatom_by_name_for_display (display,
+ memset (&xclient, 0, sizeof (xclient));
+ xclient.type = ClientMessage;
+ xclient.window = GDK_WINDOW_XWINDOW (window);
+ xclient.message_type = gdk_x11_get_xatom_by_name_for_display (display,
"_NET_ACTIVE_WINDOW");
- xev.xclient.format = 32;
- xev.xclient.data.l[0] = 1; /* requestor type; we're an app */
- xev.xclient.data.l[1] = timestamp;
- xev.xclient.data.l[2] = None; /* currently active window */
- xev.xclient.data.l[3] = 0;
- xev.xclient.data.l[4] = 0;
+ xclient.format = 32;
+ xclient.data.l[0] = 1; /* requestor type; we're an app */
+ xclient.data.l[1] = timestamp;
+ xclient.data.l[2] = None; /* currently active window */
+ xclient.data.l[3] = 0;
+ xclient.data.l[4] = 0;
XSendEvent (GDK_DISPLAY_XDISPLAY (display), GDK_WINDOW_XROOTWIN (window), False,
SubstructureRedirectMask | SubstructureNotifyMask,
- &xev);
+ (XEvent *)&xclient);
}
else
{
GdkAtom state2)
{
GdkDisplay *display = GDK_WINDOW_DISPLAY (window);
- XEvent xev;
+ XClientMessageEvent xclient;
#define _NET_WM_STATE_REMOVE 0 /* remove/unset property */
#define _NET_WM_STATE_ADD 1 /* add/set property */
#define _NET_WM_STATE_TOGGLE 2 /* toggle property */
- xev.xclient.type = ClientMessage;
- xev.xclient.serial = 0;
- xev.xclient.send_event = True;
- xev.xclient.window = GDK_WINDOW_XID (window);
- xev.xclient.message_type = gdk_x11_get_xatom_by_name_for_display (display, "_NET_WM_STATE");
- xev.xclient.format = 32;
- xev.xclient.data.l[0] = add ? _NET_WM_STATE_ADD : _NET_WM_STATE_REMOVE;
- xev.xclient.data.l[1] = gdk_x11_atom_to_xatom_for_display (display, state1);
- xev.xclient.data.l[2] = gdk_x11_atom_to_xatom_for_display (display, state2);
- xev.xclient.data.l[3] = 0;
- xev.xclient.data.l[4] = 0;
+ memset (&xclient, 0, sizeof (xclient));
+ xclient.type = ClientMessage;
+ xclient.window = GDK_WINDOW_XID (window);
+ xclient.message_type = gdk_x11_get_xatom_by_name_for_display (display, "_NET_WM_STATE");
+ xclient.format = 32;
+ xclient.data.l[0] = add ? _NET_WM_STATE_ADD : _NET_WM_STATE_REMOVE;
+ xclient.data.l[1] = gdk_x11_atom_to_xatom_for_display (display, state1);
+ xclient.data.l[2] = gdk_x11_atom_to_xatom_for_display (display, state2);
+ xclient.data.l[3] = 0;
+ xclient.data.l[4] = 0;
XSendEvent (GDK_WINDOW_XDISPLAY (window), GDK_WINDOW_XROOTWIN (window), False,
SubstructureRedirectMask | SubstructureNotifyMask,
- &xev);
+ (XEvent *)&xclient);
}
/**
* viewport. i.e. glue to the monitor glass in all cases.
*/
- XEvent xev;
+ XClientMessageEvent xclient;
/* Request stick during viewport scroll */
gdk_wmspec_change_state (TRUE, window,
NULL);
/* Request desktop 0xFFFFFFFF */
- xev.xclient.type = ClientMessage;
- xev.xclient.serial = 0;
- xev.xclient.send_event = True;
- xev.xclient.window = GDK_WINDOW_XWINDOW (window);
- xev.xclient.display = GDK_WINDOW_XDISPLAY (window);
- xev.xclient.message_type = gdk_x11_get_xatom_by_name_for_display (GDK_WINDOW_DISPLAY (window),
+ memset (&xclient, 0, sizeof (xclient));
+ xclient.type = ClientMessage;
+ xclient.window = GDK_WINDOW_XWINDOW (window);
+ xclient.display = GDK_WINDOW_XDISPLAY (window);
+ xclient.message_type = gdk_x11_get_xatom_by_name_for_display (GDK_WINDOW_DISPLAY (window),
"_NET_WM_DESKTOP");
- xev.xclient.format = 32;
+ xclient.format = 32;
- xev.xclient.data.l[0] = 0xFFFFFFFF;
- xev.xclient.data.l[1] = 0;
- xev.xclient.data.l[2] = 0;
- xev.xclient.data.l[3] = 0;
- xev.xclient.data.l[4] = 0;
+ xclient.data.l[0] = 0xFFFFFFFF;
+ xclient.data.l[1] = 0;
+ xclient.data.l[2] = 0;
+ xclient.data.l[3] = 0;
+ xclient.data.l[4] = 0;
XSendEvent (GDK_WINDOW_XDISPLAY (window), GDK_WINDOW_XROOTWIN (window), False,
SubstructureRedirectMask | SubstructureNotifyMask,
- &xev);
+ (XEvent *)&xclient);
}
else
{
{
GdkDisplay *display = GDK_WINDOW_DISPLAY (window);
- XEvent xev;
+ XClientMessageEvent xclient;
/* Release passive grab */
gdk_display_pointer_ungrab (display, timestamp);
- xev.xclient.type = ClientMessage;
- xev.xclient.serial = 0;
- xev.xclient.send_event = True;
- xev.xclient.window = GDK_WINDOW_XID (window);
- xev.xclient.message_type =
+ memset (&xclient, 0, sizeof (xclient));
+ xclient.type = ClientMessage;
+ xclient.window = GDK_WINDOW_XID (window);
+ xclient.message_type =
gdk_x11_get_xatom_by_name_for_display (display, "_NET_WM_MOVERESIZE");
- xev.xclient.format = 32;
- xev.xclient.data.l[0] = root_x;
- xev.xclient.data.l[1] = root_y;
- xev.xclient.data.l[2] = direction;
- xev.xclient.data.l[3] = 0;
- xev.xclient.data.l[4] = 0;
+ xclient.format = 32;
+ xclient.data.l[0] = root_x;
+ xclient.data.l[1] = root_y;
+ xclient.data.l[2] = direction;
+ xclient.data.l[3] = 0;
+ xclient.data.l[4] = 0;
XSendEvent (GDK_DISPLAY_XDISPLAY (display), GDK_WINDOW_XROOTWIN (window), False,
SubstructureRedirectMask | SubstructureNotifyMask,
- &xev);
+ (XEvent *)&xclient);
}
typedef struct _MoveResizeData MoveResizeData;
GdkEvent *gdk_event,
gboolean mask_key_presses)
{
- XEvent xevent;
+ XKeyEvent xkey;
GdkScreen *screen = gdk_drawable_get_screen (socket->plug_window);
- xevent.xkey.type = (gdk_event->type == GDK_KEY_PRESS) ? KeyPress : KeyRelease;
- xevent.xkey.window = GDK_WINDOW_XWINDOW (socket->plug_window);
- xevent.xkey.root = GDK_WINDOW_XWINDOW (gdk_screen_get_root_window (screen));
- xevent.xkey.subwindow = None;
- xevent.xkey.time = gdk_event->key.time;
- xevent.xkey.x = 0;
- xevent.xkey.y = 0;
- xevent.xkey.x_root = 0;
- xevent.xkey.y_root = 0;
- xevent.xkey.state = gdk_event->key.state;
- xevent.xkey.keycode = gdk_event->key.hardware_keycode;
- xevent.xkey.same_screen = True;/* FIXME ? */
+ memset (&xkey, 0, sizeof (xkey));
+ xkey.type = (gdk_event->type == GDK_KEY_PRESS) ? KeyPress : KeyRelease;
+ xkey.window = GDK_WINDOW_XWINDOW (socket->plug_window);
+ xkey.root = GDK_WINDOW_XWINDOW (gdk_screen_get_root_window (screen));
+ xkey.subwindow = None;
+ xkey.time = gdk_event->key.time;
+ xkey.x = 0;
+ xkey.y = 0;
+ xkey.x_root = 0;
+ xkey.y_root = 0;
+ xkey.state = gdk_event->key.state;
+ xkey.keycode = gdk_event->key.hardware_keycode;
+ xkey.same_screen = True;/* FIXME ? */
gdk_error_trap_push ();
XSendEvent (GDK_WINDOW_XDISPLAY (socket->plug_window),
GDK_WINDOW_XWINDOW (socket->plug_window),
False,
(mask_key_presses ? KeyPressMask : NoEventMask),
- &xevent);
+ (XEvent *)&xkey);
gdk_display_sync (gdk_screen_get_display (screen));
gdk_error_trap_pop ();
}
void
_gtk_socket_windowing_send_configure_event (GtkSocket *socket)
{
- XEvent event;
+ XConfigureEvent xconfigure;
gint x, y;
g_return_if_fail (socket->plug_window != NULL);
- event.xconfigure.type = ConfigureNotify;
+ memset (&xconfigure, 0, sizeof (xconfigure));
+ xconfigure.type = ConfigureNotify;
- event.xconfigure.event = GDK_WINDOW_XWINDOW (socket->plug_window);
- event.xconfigure.window = GDK_WINDOW_XWINDOW (socket->plug_window);
+ xconfigure.event = GDK_WINDOW_XWINDOW (socket->plug_window);
+ xconfigure.window = GDK_WINDOW_XWINDOW (socket->plug_window);
/* The ICCCM says that synthetic events should have root relative
* coordinates. We still aren't really ICCCM compliant, since
gdk_window_get_origin (socket->plug_window, &x, &y);
gdk_error_trap_pop ();
- event.xconfigure.x = x;
- event.xconfigure.y = y;
- event.xconfigure.width = GTK_WIDGET(socket)->allocation.width;
- event.xconfigure.height = GTK_WIDGET(socket)->allocation.height;
+ xconfigure.x = x;
+ xconfigure.y = y;
+ xconfigure.width = GTK_WIDGET(socket)->allocation.width;
+ xconfigure.height = GTK_WIDGET(socket)->allocation.height;
- event.xconfigure.border_width = 0;
- event.xconfigure.above = None;
- event.xconfigure.override_redirect = False;
+ xconfigure.border_width = 0;
+ xconfigure.above = None;
+ xconfigure.override_redirect = False;
gdk_error_trap_push ();
XSendEvent (GDK_WINDOW_XDISPLAY (socket->plug_window),
GDK_WINDOW_XWINDOW (socket->plug_window),
- False, NoEventMask, &event);
+ False, NoEventMask, (XEvent *)&xconfigure);
gdk_display_sync (gtk_widget_get_display (GTK_WIDGET (socket)));
gdk_error_trap_pop ();
}