summaryrefslogtreecommitdiff
path: root/gio/gapplication.c
diff options
context:
space:
mode:
Diffstat (limited to 'gio/gapplication.c')
-rw-r--r--gio/gapplication.c52
1 files changed, 47 insertions, 5 deletions
diff --git a/gio/gapplication.c b/gio/gapplication.c
index a0fe35143..18d510cfe 100644
--- a/gio/gapplication.c
+++ b/gio/gapplication.c
@@ -36,6 +36,7 @@
#include "gioenumtypes.h"
#include "gioenums.h"
#include "gfile.h"
+#include "gicon.h"
#include "glibintl.h"
@@ -240,6 +241,7 @@ struct _GApplicationPrivate
GApplicationImpl *impl;
GNotificationBackend *notifications;
+ GIcon *status_icon;
/* GOptionContext support */
GOptionGroup *main_options;
@@ -261,7 +263,8 @@ enum
PROP_IS_REMOTE,
PROP_INACTIVITY_TIMEOUT,
PROP_ACTION_GROUP,
- PROP_IS_BUSY
+ PROP_IS_BUSY,
+ PROP_STATUS_ICON
};
enum
@@ -1125,8 +1128,7 @@ g_application_set_property (GObject *object,
break;
case PROP_INACTIVITY_TIMEOUT:
- g_application_set_inactivity_timeout (application,
- g_value_get_uint (value));
+ g_application_set_inactivity_timeout (application, g_value_get_uint (value));
break;
case PROP_ACTION_GROUP:
@@ -1134,6 +1136,10 @@ g_application_set_property (GObject *object,
application->priv->actions = g_value_dup_object (value);
break;
+ case PROP_STATUS_ICON:
+ g_application_set_status_icon (application, g_value_get_object (value));
+ break;
+
default:
g_assert_not_reached ();
}
@@ -1214,6 +1220,10 @@ g_application_get_property (GObject *object,
g_value_set_boolean (value, g_application_get_is_busy (application));
break;
+ case PROP_STATUS_ICON:
+ g_value_set_object (value, g_application_get_status_icon (application));
+ break;
+
default:
g_assert_not_reached ();
}
@@ -1270,8 +1280,9 @@ g_application_finalize (GObject *object)
g_free (application->priv->resource_path);
- G_OBJECT_CLASS (g_application_parent_class)
- ->finalize (object);
+ g_clear_object (&application->priv->status_icon);
+
+ G_OBJECT_CLASS (g_application_parent_class)->finalize (object);
}
static void
@@ -1391,6 +1402,13 @@ g_application_class_init (GApplicationClass *class)
P_("If this application is currently marked busy"),
FALSE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property (object_class, PROP_STATUS_ICON,
+ g_param_spec_object ("status-icon",
+ P_("Status icon"),
+ P_("The status icon for the application"),
+ G_TYPE_ICON,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
/**
* GApplication::startup:
* @application: the application
@@ -2927,5 +2945,29 @@ g_application_unbind_busy_property (GApplication *application,
g_signal_handler_disconnect (object, handler_id);
}
+/* Status icon {{{1 */
+
+void
+g_application_set_status_icon (GApplication *application,
+ GIcon *icon)
+{
+ g_return_if_fail (G_IS_APPLICATION (application));
+ g_return_if_fail (icon == NULL || G_IS_ICON (icon));
+
+ if (g_set_object (&application->priv->status_icon, icon))
+ {
+ g_application_impl_set_status_icon (application->priv->impl, icon);
+ g_object_notify (G_OBJECT (application), "status-icon");
+ }
+}
+
+GIcon *
+g_application_get_status_icon (GApplication *application)
+{
+ g_return_val_if_fail (G_IS_APPLICATION (application), NULL);
+
+ return application->priv->status_icon;
+}
+
/* Epilogue {{{1 */
/* vim:set foldmethod=marker: */