diff --git a/src/compositor/compositor.c b/src/compositor/compositor.c index 86abfafdc..40b9854b7 100644 --- a/src/compositor/compositor.c +++ b/src/compositor/compositor.c @@ -369,6 +369,28 @@ meta_empty_stage_input_region (MetaScreen *screen) meta_set_stage_input_region (screen, region); } +void +meta_focus_stage_window (MetaScreen *screen, + guint32 timestamp) +{ + ClutterStage *stage; + Window window; + + stage = CLUTTER_STAGE (meta_get_stage_for_screen (screen)); + if (!stage) + return; + + window = clutter_x11_get_stage_window (stage); + + if (window == None) + return; + + meta_display_set_input_focus_xwindow (screen->display, + screen, + window, + timestamp); +} + gboolean meta_begin_modal_for_plugin (MetaScreen *screen, MetaPlugin *plugin, diff --git a/src/core/display-private.h b/src/core/display-private.h index 3415c8414..c9a7d234e 100644 --- a/src/core/display-private.h +++ b/src/core/display-private.h @@ -465,4 +465,9 @@ gboolean meta_display_process_barrier_event (MetaDisplay *display, XIBarrierEvent *event); #endif /* HAVE_XI23 */ +void meta_display_set_input_focus_xwindow (MetaDisplay *display, + MetaScreen *screen, + Window window, + guint32 timestamp); + #endif diff --git a/src/core/display.c b/src/core/display.c index 242d53907..aa3338a5a 100644 --- a/src/core/display.c +++ b/src/core/display.c @@ -5806,6 +5806,18 @@ meta_display_request_take_focus (MetaDisplay *display, timestamp); } +void +meta_display_set_input_focus_xwindow (MetaDisplay *display, + MetaScreen *screen, + Window window, + guint32 timestamp) +{ + request_xserver_input_focus_change (display, + screen, + window, + timestamp); +} + void meta_display_focus_the_no_focus_window (MetaDisplay *display, MetaScreen *screen, diff --git a/src/meta/compositor-mutter.h b/src/meta/compositor-mutter.h index 357b42e60..698f8ded5 100644 --- a/src/meta/compositor-mutter.h +++ b/src/meta/compositor-mutter.h @@ -46,5 +46,7 @@ void meta_enable_unredirect_for_screen (MetaScreen *screen); void meta_set_stage_input_region (MetaScreen *screen, XserverRegion region); void meta_empty_stage_input_region (MetaScreen *screen); +void meta_focus_stage_window (MetaScreen *screen, + guint32 timestamp); #endif