static GdkFilterReturn panel_action_protocol_filter (GdkXEvent *gdk_xevent, GdkEvent *event, gpointer data) { GdkWindow *window; GdkScreen *screen; #if GTK_CHECK_VERSION (3, 0, 0) GdkDisplay *display; #endif XEvent *xevent = (XEvent *) gdk_xevent; if (xevent->type != ClientMessage) return GDK_FILTER_CONTINUE; if ((xevent->xclient.message_type != atom_mate_panel_action) && (xevent->xclient.message_type != atom_gnome_panel_action)) return GDK_FILTER_CONTINUE; #if GTK_CHECK_VERSION (3, 0, 0) screen = gdk_event_get_screen (event); display = gdk_screen_get_display (screen); window = gdk_x11_window_lookup_for_display (display, xevent->xclient.window); #else window = gdk_window_lookup (xevent->xclient.window); screen = gdk_drawable_get_screen (window); #endif if (!window) return GDK_FILTER_CONTINUE; #if GTK_CHECK_VERSION (3, 0, 0) if (window != gdk_screen_get_root_window (screen)) return GDK_FILTER_CONTINUE; #endif if (xevent->xclient.data.l [0] == atom_mate_panel_action_main_menu) panel_action_protocol_main_menu (screen, xevent->xclient.data.l [1]); else if (xevent->xclient.data.l [0] == atom_mate_panel_action_run_dialog) panel_action_protocol_run_dialog (screen, xevent->xclient.data.l [1]); else if (xevent->xclient.data.l [0] == atom_gnome_panel_action_main_menu) panel_action_protocol_main_menu (screen, xevent->xclient.data.l [1]); else if (xevent->xclient.data.l [0] == atom_gnome_panel_action_run_dialog) panel_action_protocol_run_dialog (screen, xevent->xclient.data.l [1]); else if (xevent->xclient.data.l [0] == atom_mate_panel_action_kill_dialog) panel_action_protocol_kill_dialog (screen, xevent->xclient.data.l [1]); else return GDK_FILTER_CONTINUE; return GDK_FILTER_REMOVE; }
static GdkFilterReturn panel_action_protocol_filter (GdkXEvent *gdk_xevent, GdkEvent *event, gpointer data) { GdkWindow *window; GdkScreen *screen; XEvent *xevent = (XEvent *) gdk_xevent; if (xevent->type != ClientMessage) return GDK_FILTER_CONTINUE; if (xevent->xclient.message_type != atom_gnome_panel_action) return GDK_FILTER_CONTINUE; window = gdk_window_lookup (xevent->xclient.window); if (!window) return GDK_FILTER_CONTINUE; screen = gdk_drawable_get_screen (window); if (xevent->xclient.data.l [0] == atom_gnome_panel_action_main_menu) panel_action_protocol_main_menu (screen, xevent->xclient.data.l [1]); else if (xevent->xclient.data.l [0] == atom_gnome_panel_action_run_dialog) panel_action_protocol_run_dialog (screen, xevent->xclient.data.l [1]); else return GDK_FILTER_CONTINUE; return GDK_FILTER_REMOVE; }
static GdkFilterReturn panel_action_protocol_filter (GdkXEvent *gdk_xevent, GdkEvent *event, gpointer data) { GdkWindow *window; GdkScreen *screen; GdkDisplay *display; XEvent *xevent = (XEvent *) gdk_xevent; Atom atom; if (xevent->type != ClientMessage) return GDK_FILTER_CONTINUE; if (xevent->xclient.message_type != atom_gnome_panel_action) return GDK_FILTER_CONTINUE; screen = gdk_event_get_screen (event); display = gdk_screen_get_display (screen); window = gdk_x11_window_lookup_for_display (display, xevent->xclient.window); if (!window) return GDK_FILTER_CONTINUE; if (window != gdk_screen_get_root_window (screen)) return GDK_FILTER_CONTINUE; atom = xevent->xclient.data.l[0]; if (atom == atom_gnome_panel_action_main_menu) panel_action_protocol_main_menu (screen, xevent->xclient.data.l [1]); else if (atom == atom_gnome_panel_action_run_dialog) panel_action_protocol_run_dialog (screen, xevent->xclient.data.l [1]); else if (atom == atom_gnome_panel_action_kill_dialog) panel_action_protocol_kill_dialog (screen, xevent->xclient.data.l [1]); else return GDK_FILTER_CONTINUE; return GDK_FILTER_REMOVE; }