Index: gnome-panel/panel-action-protocol.c
===================================================================
--- gnome-panel/panel-action-protocol.c	(revision 10451)
+++ gnome-panel/panel-action-protocol.c	(working copy)
@@ -42,6 +42,7 @@
 static Atom atom_gnome_panel_action            = None;
 static Atom atom_gnome_panel_action_main_menu  = None;
 static Atom atom_gnome_panel_action_run_dialog = None;
+static Atom atom_gnome_panel_action_kill_dialog = None;
 
 static void
 panel_action_protocol_main_menu (GdkScreen *screen,
@@ -82,6 +83,13 @@
 	panel_run_dialog_present (screen, activate_time);
 }
 
+static void
+panel_action_protocol_kill_dialog (GdkScreen *screen,
+				   guint32    activate_time)
+{
+	panel_run_dialog_present (screen, activate_time);
+}
+
 static GdkFilterReturn
 panel_action_protocol_filter (GdkXEvent *gdk_xevent,
 			      GdkEvent  *event,
@@ -107,6 +115,8 @@
 		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_gnome_panel_action_kill_dialog)
+		panel_action_protocol_kill_dialog (screen, xevent->xclient.data.l [1]);
 	else
 		return GDK_FILTER_CONTINUE;
 
@@ -136,7 +146,12 @@
 		XInternAtom (GDK_DISPLAY_XDISPLAY (display),
 			     "_GNOME_PANEL_ACTION_RUN_DIALOG",
 			     FALSE);
+	atom_gnome_panel_action_kill_dialog =
+		XInternAtom (GDK_DISPLAY_XDISPLAY (display),
+			     "_GNOME_PANEL_ACTION_KILL_DIALOG",
+			     FALSE);
 
+
 	gdk_display_add_client_message_filter (
 		display, gdk_atom_gnome_panel_action,
 		panel_action_protocol_filter, NULL);
Index: gnome-panel/panel-action-button.c
===================================================================
--- gnome-panel/panel-action-button.c	(revision 10451)
+++ gnome-panel/panel-action-button.c	(working copy)
@@ -226,7 +226,8 @@
 static void
 panel_action_force_quit (GtkWidget *widget)
 {
-	panel_force_quit (gtk_widget_get_screen (widget));
+	panel_force_quit (gtk_widget_get_screen (widget),
+			  gtk_get_current_event_time ());
 }
 
 /* Connect Server
Index: gnome-panel/panel-force-quit.c
===================================================================
--- gnome-panel/panel-force-quit.c	(revision 10451)
+++ gnome-panel/panel-force-quit.c	(working copy)
@@ -273,7 +273,7 @@
 }
 
 void
-panel_force_quit (GdkScreen *screen)
+panel_force_quit (GdkScreen *screen, guint time)
 {
 	GdkGrabStatus  status;
 	GdkCursor     *cross;
@@ -288,7 +288,7 @@
 
 	cross = gdk_cursor_new (GDK_CROSS);
 	status = gdk_pointer_grab (root, FALSE, GDK_BUTTON_PRESS_MASK,
-				   NULL, cross, GDK_CURRENT_TIME);
+				   NULL, cross, time);
 	gdk_cursor_unref (cross);
 	if (status != GDK_GRAB_SUCCESS) {
 		g_warning ("Pointer grab failed\n");
@@ -296,7 +296,7 @@
 		return;
 	}
 
-	status = gdk_keyboard_grab (root, FALSE, GDK_CURRENT_TIME);
+	status = gdk_keyboard_grab (root, FALSE, time);
 	if (status != GDK_GRAB_SUCCESS) {
 		g_warning ("Keyboard grab failed\n");
 		remove_popup (popup);
Index: gnome-panel/panel-force-quit.h
===================================================================
--- gnome-panel/panel-force-quit.h	(revision 10451)
+++ gnome-panel/panel-force-quit.h	(working copy)
@@ -29,7 +29,7 @@
 
 G_BEGIN_DECLS
 
-void panel_force_quit (GdkScreen *screen);
+void panel_force_quit (GdkScreen *screen, guint time);
 
 G_END_DECLS
 
