diff --git a/src/compositor/compositor-private.h b/src/compositor/compositor-private.h index b08746d24..2bd7d696b 100644 --- a/src/compositor/compositor-private.h +++ b/src/compositor/compositor-private.h @@ -71,4 +71,6 @@ MetaCloseDialog * meta_compositor_create_close_dialog (MetaCompositor *composito MetaInhibitShortcutsDialog * meta_compositor_create_inhibit_shortcuts_dialog (MetaCompositor *compositor, MetaWindow *window); +void meta_compositor_locate_pointer (MetaCompositor *compositor); + #endif /* META_COMPOSITOR_PRIVATE_H */ diff --git a/src/compositor/compositor.c b/src/compositor/compositor.c index c8153cb3d..e4ffd1e84 100644 --- a/src/compositor/compositor.c +++ b/src/compositor/compositor.c @@ -1553,3 +1553,9 @@ meta_compositor_create_inhibit_shortcuts_dialog (MetaCompositor *compositor, return meta_plugin_manager_create_inhibit_shortcuts_dialog (compositor->plugin_mgr, window); } + +void +meta_compositor_locate_pointer (MetaCompositor *compositor) +{ + meta_plugin_manager_locate_pointer (compositor->plugin_mgr); +} diff --git a/src/compositor/meta-plugin-manager.c b/src/compositor/meta-plugin-manager.c index ab2d8128f..45fba18da 100644 --- a/src/compositor/meta-plugin-manager.c +++ b/src/compositor/meta-plugin-manager.c @@ -405,3 +405,13 @@ meta_plugin_manager_create_inhibit_shortcuts_dialog (MetaPluginManager *plugin_m return meta_inhibit_shortcuts_dialog_default_new (window); } + +void +meta_plugin_manager_locate_pointer (MetaPluginManager *plugin_mgr) +{ + MetaPlugin *plugin = plugin_mgr->plugin; + MetaPluginClass *klass = META_PLUGIN_GET_CLASS (plugin); + + if (klass->locate_pointer) + klass->locate_pointer (plugin); +} diff --git a/src/compositor/meta-plugin-manager.h b/src/compositor/meta-plugin-manager.h index 81ccdc01a..d1c007fa1 100644 --- a/src/compositor/meta-plugin-manager.h +++ b/src/compositor/meta-plugin-manager.h @@ -100,4 +100,6 @@ MetaInhibitShortcutsDialog * meta_plugin_manager_create_inhibit_shortcuts_dialog (MetaPluginManager *plugin_mgr, MetaWindow *window); +void meta_plugin_manager_locate_pointer (MetaPluginManager *mgr); + #endif diff --git a/src/meta/meta-plugin.h b/src/meta/meta-plugin.h index 6665531bf..b28836e88 100644 --- a/src/meta/meta-plugin.h +++ b/src/meta/meta-plugin.h @@ -239,6 +239,16 @@ struct _MetaPluginClass */ MetaInhibitShortcutsDialog * (* create_inhibit_shortcuts_dialog) (MetaPlugin *plugin, MetaWindow *window); + + /** + * MetaPluginClass::locate_pointer: + * + * Virtual function called when the user triggered the "locate-pointer" + * mechanism. + * The common way to implement this function is to show some animation + * on screen to draw user attention on the pointer location. + */ + void (*locate_pointer) (MetaPlugin *plugin); }; /**