@@ -315,17 +315,24 @@ popup_filter (GdkXEvent *gdk_xevent,
315315 return GDK_FILTER_CONTINUE ;
316316}
317317
318+ static void
319+ prepare_root_window (GdkSeat * seat ,
320+ GdkWindow * window ,
321+ gpointer user_data )
322+ {
323+ gdk_window_show_unraised (window );
324+ }
325+
318326void
319327panel_force_quit (GdkScreen * screen ,
320328 guint time )
321329{
322330 GdkGrabStatus status ;
323331 GdkCursor * cross ;
332+ GdkSeatCapabilities caps ;
324333 GtkWidget * popup ;
325334 GdkWindow * root ;
326335 GdkDisplay * display ;
327- GdkDevice * pointer ;
328- GdkDevice * keyboard ;
329336 GdkSeat * seat ;
330337
331338 popup = display_popup_window (screen );
@@ -335,23 +342,18 @@ panel_force_quit (GdkScreen *screen,
335342 gdk_window_add_filter (root , (GdkFilterFunc ) popup_filter , popup );
336343 cross = gdk_cursor_new_for_display (gdk_display_get_default (),
337344 GDK_CROSS );
345+ caps = GDK_SEAT_CAPABILITY_POINTER | GDK_SEAT_CAPABILITY_KEYBOARD ;
338346 display = gdk_window_get_display (root );
339347 seat = gdk_display_get_default_seat (display );
340- pointer = gdk_seat_get_pointer (seat );
341- keyboard = gdk_device_get_associated_device (pointer );
342348
343- status = gdk_device_grab (pointer , root ,
344- GDK_OWNERSHIP_NONE , FALSE,
345- GDK_BUTTON_PRESS_MASK ,
346- cross , time );
349+ status = gdk_seat_grab (seat , root ,
350+ caps , FALSE,
351+ cross , NULL ,
352+ prepare_root_window ,
353+ NULL );
347354
348355 g_object_unref (cross );
349356
350- status = gdk_device_grab (keyboard , root ,
351- GDK_OWNERSHIP_NONE , FALSE,
352- GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK ,
353- NULL , time );
354-
355357 if (status != GDK_GRAB_SUCCESS ) {
356358 g_warning ("Pointer grab failed\n" );
357359 remove_popup (popup );
0 commit comments