Add shell_global_focus_stage()
Add a a method shell_global_focus_stage() to set the input focus to the stage window, so that Clutter gets keyboard events. Adapted from patch in Bug 561299 from Colin Walters svn path=/trunk/; revision=59
This commit is contained in:
parent
f81e9d3aaa
commit
8f615e833e
@ -2,6 +2,9 @@
|
|||||||
|
|
||||||
#include "shell-global.h"
|
#include "shell-global.h"
|
||||||
|
|
||||||
|
#include "display.h"
|
||||||
|
#include <clutter/x11/clutter-x11.h>
|
||||||
|
|
||||||
struct _ShellGlobal {
|
struct _ShellGlobal {
|
||||||
GObject parent;
|
GObject parent;
|
||||||
|
|
||||||
@ -217,3 +220,21 @@ _shell_global_set_plugin (ShellGlobal *global,
|
|||||||
|
|
||||||
global->plugin = plugin;
|
global->plugin = plugin;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* shell_global_focus_stage:
|
||||||
|
*
|
||||||
|
* Set the keyboard focus to the Clutter stage window. This function
|
||||||
|
* is best used in combination with some sort of visual notification
|
||||||
|
* that the shell has taken over input.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
shell_global_focus_stage (ShellGlobal *global)
|
||||||
|
{
|
||||||
|
MetaScreen *screen = mutter_plugin_get_screen (global->plugin);
|
||||||
|
MetaDisplay *display = meta_screen_get_display (screen);
|
||||||
|
Display *xdisplay = meta_display_get_xdisplay (display);
|
||||||
|
ClutterStage *stage = CLUTTER_STAGE (mutter_plugin_get_stage (global->plugin));
|
||||||
|
Window stagewin = clutter_x11_get_stage_window (stage);
|
||||||
|
XSetInputFocus (xdisplay, stagewin, RevertToParent, CurrentTime);
|
||||||
|
}
|
||||||
|
@ -42,6 +42,10 @@ GList *shell_global_get_windows (ShellGlobal *global);
|
|||||||
void _shell_global_set_plugin (ShellGlobal *global,
|
void _shell_global_set_plugin (ShellGlobal *global,
|
||||||
MutterPlugin *plugin);
|
MutterPlugin *plugin);
|
||||||
|
|
||||||
|
MetaScreen * shell_global_get_screen (ShellGlobal *global);
|
||||||
|
|
||||||
|
void shell_global_focus_stage (ShellGlobal *global);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
#endif /* __SHELL_GLOBAL_H__ */
|
#endif /* __SHELL_GLOBAL_H__ */
|
||||||
|
Loading…
Reference in New Issue
Block a user