summaryrefslogtreecommitdiff
path: root/gtk/gtkapplication.c
diff options
context:
space:
mode:
Diffstat (limited to 'gtk/gtkapplication.c')
-rw-r--r--gtk/gtkapplication.c37
1 files changed, 37 insertions, 0 deletions
diff --git a/gtk/gtkapplication.c b/gtk/gtkapplication.c
index aab751ce66..999ef1523e 100644
--- a/gtk/gtkapplication.c
+++ b/gtk/gtkapplication.c
@@ -137,6 +137,7 @@ static guint gtk_application_signals[LAST_SIGNAL];
enum {
PROP_ZERO,
PROP_REGISTER_SESSION,
+ PROP_SCREENSAVER_ACTIVE,
PROP_APP_MENU,
PROP_MENUBAR,
PROP_ACTIVE_WINDOW,
@@ -157,6 +158,7 @@ typedef struct
guint last_window_id;
gboolean register_session;
+ gboolean screensaver_active;
GtkActionMuxer *muxer;
GtkBuilder *menus_builder;
gchar *help_overlay_path;
@@ -534,6 +536,10 @@ gtk_application_get_property (GObject *object,
g_value_set_boolean (value, priv->register_session);
break;
+ case PROP_SCREENSAVER_ACTIVE:
+ g_value_set_boolean (value, priv->screensaver_active);
+ break;
+
case PROP_APP_MENU:
g_value_set_object (value, gtk_application_get_app_menu (application));
break;
@@ -661,6 +667,24 @@ gtk_application_class_init (GtkApplicationClass *class)
FALSE,
G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS);
+ /**
+ * GtkApplication:screensaver-active:
+ *
+ * This property is %TRUE if GTK+ believes that the screensaver is
+ * currently active. GTK+ only tracks session state (including this)
+ * when #GtkApplication::register-session is set to %TRUE.
+ *
+ * Tracking the screensaver state is supported on Linux.
+ *
+ * Since: 3.24
+ */
+ gtk_application_props[PROP_SCREENSAVER_ACTIVE] =
+ g_param_spec_boolean ("screensaver-active",
+ P_("Screensaver Active"),
+ P_("Whether the screensaver is active"),
+ FALSE,
+ G_PARAM_READABLE|G_PARAM_STATIC_STRINGS);
+
gtk_application_props[PROP_APP_MENU] =
g_param_spec_object ("app-menu",
P_("Application menu"),
@@ -1370,3 +1394,16 @@ gtk_application_get_menu_by_id (GtkApplication *application,
return G_MENU (object);
}
+
+void
+gtk_application_set_screensaver_active (GtkApplication *application,
+ gboolean active)
+{
+ GtkApplicationPrivate *priv = gtk_application_get_instance_private (application);
+
+ if (priv->screensaver_active != active)
+ {
+ priv->screensaver_active = active;
+ g_object_notify (G_OBJECT (application), "screensaver-active");
+ }
+}