diff -Nrup a/plugins/xrandr/gsd-xrandr-manager.c b/plugins/xrandr/gsd-xrandr-manager.c --- a/plugins/xrandr/gsd-xrandr-manager.c 2008-04-01 23:21:52.000000000 +0200 +++ b/plugins/xrandr/gsd-xrandr-manager.c 2008-04-02 02:28:20.000000000 +0200 @@ -56,15 +56,15 @@ G_DEFINE_TYPE (GsdXrandrManager, gsd_xra static gpointer manager_object = NULL; static GdkAtom -gnome_randr_atom (void) +get_gdk_atom (char *atom_name) { - return gdk_atom_intern ("_GNOME_RANDR_ATOM", FALSE); + return gdk_atom_intern(atom_name, FALSE); } static Atom -gnome_randr_xatom (void) +get_x_atom (char *atom_name) { - return gdk_x11_atom_to_xatom (gnome_randr_atom()); + return gdk_x11_atom_to_xatom (get_gdk_atom(atom_name)); } static GdkFilterReturn @@ -75,12 +75,17 @@ on_client_message (GdkXEvent *xevent, RWScreen *screen = data; XEvent *ev = (XEvent *)xevent; - if (ev->type == ClientMessage && - ev->xclient.message_type == gnome_randr_xatom()) { + if (ev->type == ClientMessage) { - configuration_apply_stored (screen); + if (ev->xclient.message_type == get_x_atom ("_GNOME_RANDR_ATOM")) { + configuration_apply_stored (screen); + return GDK_FILTER_REMOVE; + } - return GDK_FILTER_REMOVE; + if (ev->xclient.message_type == get_x_atom ("_GNOME_RANDR_TEST_ATOM")) { + configuration_apply_test (screen); + return GDK_FILTER_REMOVE; + } } /* Pass the event on to GTK+ */ @@ -125,9 +130,14 @@ gsd_xrandr_manager_start (GsdXrandrManag configuration_apply_stored (rw_screen); - gdk_add_client_message_filter (gnome_randr_atom(), + gdk_add_client_message_filter (get_gdk_atom ("_GNOME_RANDR_ATOM"), on_client_message, rw_screen); + + gdk_add_client_message_filter (get_gdk_atom ("_GNOME_RANDR_TEST_ATOM"), + on_client_message, + rw_screen); + #endif /* HAVE_RANDR */ return TRUE; }