aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/actions.c26
-rw-r--r--src/actions.h4
-rw-r--r--src/service.c11
3 files changed, 32 insertions, 9 deletions
diff --git a/src/actions.c b/src/actions.c
index babc285..ca086b7 100644
--- a/src/actions.c
+++ b/src/actions.c
@@ -34,6 +34,7 @@ enum
PROP_CAN_SUSPEND,
PROP_CAN_LOCK,
PROP_CAN_LOGOUT,
+ PROP_CAN_REBOOT,
PROP_CAN_PROMPT,
PROP_HAS_ONLINE_ACCOUNT_ERROR,
PROP_LAST
@@ -71,6 +72,10 @@ my_get_property (GObject * o,
g_value_set_boolean (value, indicator_session_actions_can_logout (self));
break;
+ case PROP_CAN_REBOOT:
+ g_value_set_boolean (value, indicator_session_actions_can_reboot (self));
+ break;
+
case PROP_CAN_PROMPT:
g_value_set_boolean (value, indicator_session_actions_can_prompt (self));
break;
@@ -96,6 +101,7 @@ indicator_session_actions_class_init (IndicatorSessionActionsClass * klass)
klass->can_lock = NULL;
klass->can_logout = NULL;
+ klass->can_reboot = NULL;
klass->can_switch = NULL;
klass->can_suspend = NULL;
klass->can_hibernate = NULL;
@@ -144,6 +150,12 @@ indicator_session_actions_class_init (IndicatorSessionActionsClass * klass)
"Whether or not the system services allow the user to logout",
TRUE, flags);
+ properties[PROP_CAN_REBOOT] =
+ g_param_spec_boolean (INDICATOR_SESSION_ACTIONS_PROP_CAN_REBOOT,
+ "Can Reboot",
+ "Whether or not the system services allow the user to reboot",
+ TRUE, flags);
+
properties[PROP_CAN_PROMPT] =
g_param_spec_boolean (INDICATOR_SESSION_ACTIONS_PROP_CAN_PROMPT,
"Can Show End Session Dialog",
@@ -186,6 +198,14 @@ indicator_session_actions_can_logout (IndicatorSessionActions * self)
}
gboolean
+indicator_session_actions_can_reboot (IndicatorSessionActions * self)
+{
+ g_return_val_if_fail (INDICATOR_IS_SESSION_ACTIONS (self), FALSE);
+
+ return INDICATOR_SESSION_ACTIONS_GET_CLASS (self)->can_reboot (self);
+}
+
+gboolean
indicator_session_actions_can_switch (IndicatorSessionActions * self)
{
g_return_val_if_fail (INDICATOR_IS_SESSION_ACTIONS (self), FALSE);
@@ -353,6 +373,12 @@ indicator_session_actions_notify_can_logout (IndicatorSessionActions * self)
}
void
+indicator_session_actions_notify_can_reboot (IndicatorSessionActions * self)
+{
+ notify_func (self, PROP_CAN_REBOOT);
+}
+
+void
indicator_session_actions_notify_can_switch (IndicatorSessionActions * self)
{
notify_func (self, PROP_CAN_SWITCH);
diff --git a/src/actions.h b/src/actions.h
index bba6045..0f8aa1d 100644
--- a/src/actions.h
+++ b/src/actions.h
@@ -38,6 +38,7 @@ typedef struct _IndicatorSessionActionsClass IndicatorSessionActionsClass;
/* property keys */
#define INDICATOR_SESSION_ACTIONS_PROP_CAN_LOCK "can-lock"
#define INDICATOR_SESSION_ACTIONS_PROP_CAN_LOGOUT "can-logout"
+#define INDICATOR_SESSION_ACTIONS_PROP_CAN_REBOOT "can-reboot"
#define INDICATOR_SESSION_ACTIONS_PROP_CAN_SWITCH "can-switch"
#define INDICATOR_SESSION_ACTIONS_PROP_CAN_SUSPEND "can-suspend"
#define INDICATOR_SESSION_ACTIONS_PROP_CAN_HIBERNATE "can-hibernate"
@@ -62,6 +63,7 @@ struct _IndicatorSessionActionsClass
gboolean (*can_lock) (IndicatorSessionActions * self);
gboolean (*can_logout) (IndicatorSessionActions * self);
+ gboolean (*can_reboot) (IndicatorSessionActions * self);
gboolean (*can_switch) (IndicatorSessionActions * self);
gboolean (*can_suspend) (IndicatorSessionActions * self);
gboolean (*can_hibernate) (IndicatorSessionActions * self);
@@ -92,6 +94,7 @@ GType indicator_session_actions_get_type (void);
gboolean indicator_session_actions_can_lock (IndicatorSessionActions * self);
gboolean indicator_session_actions_can_logout (IndicatorSessionActions * self);
+gboolean indicator_session_actions_can_reboot (IndicatorSessionActions * self);
gboolean indicator_session_actions_can_switch (IndicatorSessionActions * self);
gboolean indicator_session_actions_can_suspend (IndicatorSessionActions * self);
gboolean indicator_session_actions_can_hibernate (IndicatorSessionActions * self);
@@ -101,6 +104,7 @@ gboolean indicator_session_actions_has_online_account_error (IndicatorSession
void indicator_session_actions_notify_can_lock (IndicatorSessionActions * self);
void indicator_session_actions_notify_can_logout (IndicatorSessionActions * self);
+void indicator_session_actions_notify_can_reboot (IndicatorSessionActions * self);
void indicator_session_actions_notify_can_switch (IndicatorSessionActions * self);
void indicator_session_actions_notify_can_suspend (IndicatorSessionActions * self);
void indicator_session_actions_notify_can_hibernate (IndicatorSessionActions * self);
diff --git a/src/service.c b/src/service.c
index 166f729..3de37e3 100644
--- a/src/service.c
+++ b/src/service.c
@@ -529,8 +529,7 @@ create_session_section (IndicatorSessionService * self, int profile)
menu = g_menu_new ();
if ((profile == PROFILE_DESKTOP) &&
- (indicator_session_actions_can_logout (p->backend_actions)) &&
- (!g_settings_get_boolean (s, "suppress-logout-menuitem")))
+ (indicator_session_actions_can_logout (p->backend_actions)))
{
const char * label = ellipsis ? _("Log Out…") : _("Log Out");
g_menu_append (menu, label, "indicator.logout");
@@ -542,9 +541,7 @@ create_session_section (IndicatorSessionService * self, int profile)
if (indicator_session_actions_can_hibernate (p->backend_actions))
g_menu_append (menu, _("Hibernate"), "indicator.hibernate");
- /* NB: check 'ellipsis' here to skip this item if prompting is enabled
- because this shows the same prompt as 'Shut Down' in Unity */
- if (!ellipsis && !g_settings_get_boolean (s, "suppress-restart-menuitem"))
+ if (indicator_session_actions_can_reboot (p->backend_actions))
{
const char * label = ellipsis ? _("Restart…") : _("Restart");
g_menu_append (menu, label, "indicator.reboot");
@@ -1021,10 +1018,6 @@ indicator_session_service_init (IndicatorSessionService * self)
G_CALLBACK(rebuild_switch_section_soon), self);
g_signal_connect_swapped (gp, "changed::suppress-logout-restart-shutdown",
G_CALLBACK(rebuild_session_section_soon), self);
- g_signal_connect_swapped (gp, "changed::suppress-logout-menuitem",
- G_CALLBACK(rebuild_session_section_soon), self);
- g_signal_connect_swapped (gp, "changed::suppress-restart-menuitem",
- G_CALLBACK(rebuild_session_section_soon), self);
g_signal_connect_swapped (gp, "changed::suppress-shutdown-menuitem",
G_CALLBACK(rebuild_session_section_soon), self);
g_signal_connect_swapped (gp, "changed::show-real-name-on-panel",