diff --git a/src/resources/gtk/help-overlay.ui b/src/resources/gtk/help-overlay.ui
new file mode 100644
index 00000000..a08fa8e6
--- /dev/null
+++ b/src/resources/gtk/help-overlay.ui
@@ -0,0 +1,82 @@
+
+
+
+
diff --git a/src/resources/gtk/menus.ui b/src/resources/gtk/menus.ui
index 095f4d3b..ccdbb94c 100644
--- a/src/resources/gtk/menus.ui
+++ b/src/resources/gtk/menus.ui
@@ -22,6 +22,10 @@
Help
app.help
+ -
+ Keyboard Shortcuts
+ app.show-help-overlay
+
-
_Quit
app.quit
diff --git a/src/resources/sysprof.gresource.xml b/src/resources/sysprof.gresource.xml
index b6735f39..644667b1 100644
--- a/src/resources/sysprof.gresource.xml
+++ b/src/resources/sysprof.gresource.xml
@@ -3,6 +3,7 @@
gtk/menus.ui
+ gtk/help-overlay.ui
../../data/icons/16x16/apps/sysprof.png
diff --git a/src/sp-application.c b/src/sp-application.c
index 4efe88ee..17b1d0d5 100644
--- a/src/sp-application.c
+++ b/src/sp-application.c
@@ -263,15 +263,52 @@ sysprof_open_capture (GSimpleAction *action,
sp_window_open_from_dialog (SP_WINDOW (window));
}
+static void
+sysprof_show_help_overlay (GSimpleAction *action,
+ GVariant *variant,
+ gpointer user_data)
+{
+ GtkApplication *app = user_data;
+ SpWindow *window = NULL;
+
+ g_assert (G_IS_APPLICATION (app));
+ g_assert (G_IS_SIMPLE_ACTION (action));
+ g_assert (variant == NULL);
+
+ for (GList *list = gtk_application_get_windows (app); list; list = list->next)
+ {
+ GtkWindow *element = list->data;
+
+ if (SP_IS_WINDOW (element))
+ {
+ window = SP_WINDOW (element);
+ break;
+ }
+ }
+
+ if (window == NULL)
+ {
+ window = g_object_new (SP_TYPE_WINDOW,
+ "application", app,
+ NULL);
+ gtk_window_present (GTK_WINDOW (window));
+ }
+
+ g_assert (g_action_group_has_action (G_ACTION_GROUP (window), "show-help-overlay"));
+
+ g_action_group_activate_action (G_ACTION_GROUP (window), "show-help-overlay", NULL);
+}
+
static void
sp_application_init (SpApplication *self)
{
static const GActionEntry actions[] = {
- { "about", sysprof_about },
- { "new-window", sysprof_new_window },
- { "open-capture", sysprof_open_capture },
- { "help", sysprof_help },
- { "quit", sysprof_quit },
+ { "about", sysprof_about },
+ { "new-window", sysprof_new_window },
+ { "open-capture", sysprof_open_capture },
+ { "help", sysprof_help },
+ { "show-help-overlay", sysprof_show_help_overlay },
+ { "quit", sysprof_quit },
};
g_action_map_add_action_entries (G_ACTION_MAP (self), actions, G_N_ELEMENTS (actions), self);