You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
calculate-overlay/profiles/patches/gnome-base/gnome-panel-2.30-disable_sh...

104 lines
3.9 KiB

diff --git a/gnome-panel/panel-action-button.c b/gnome-panel/panel-action-button.c
index ad8e64a..3f0c044 100644
--- a/gnome-panel/panel-action-button.c
+++ b/gnome-panel/panel-action-button.c
@@ -194,7 +194,7 @@ panel_action_shutdown_reboot_is_disabled (void)
{
PanelSessionManager *manager;
- if (panel_lockdown_get_disable_log_out())
+ if (panel_lockdown_get_disable_shutdown())
return TRUE;
manager = panel_session_manager_get ();
diff --git a/gnome-panel/panel-lockdown.c b/gnome-panel/panel-lockdown.c
index 5b63ed2..3fd0e0f 100644
--- a/gnome-panel/panel-lockdown.c
+++ b/gnome-panel/panel-lockdown.c
@@ -29,12 +29,13 @@
#include <string.h>
#include "panel-gconf.h"
-#define N_LISTENERS 6
+#define N_LISTENERS 7
#define PANEL_GLOBAL_LOCKDOWN_DIR "/apps/panel/global"
#define DESKTOP_GNOME_LOCKDOWN_DIR "/desktop/gnome/lockdown"
#define PANEL_GLOBAL_LOCKED_DOWN_KEY PANEL_GLOBAL_LOCKDOWN_DIR "/locked_down"
#define DISABLE_COMMAND_LINE_KEY DESKTOP_GNOME_LOCKDOWN_DIR "/disable_command_line"
+#define DISABLE_SHUTDOWN_KEY DESKTOP_GNOME_LOCKDOWN_DIR "/disable_shutdown"
#define DISABLE_LOCK_SCREEN_KEY DESKTOP_GNOME_LOCKDOWN_DIR "/disable_lock_screen"
#define DISABLE_LOG_OUT_KEY PANEL_GLOBAL_LOCKDOWN_DIR "/disable_log_out"
#define DISABLE_FORCE_QUIT_KEY PANEL_GLOBAL_LOCKDOWN_DIR "/disable_force_quit"
@@ -45,6 +46,7 @@ typedef struct {
guint locked_down : 1;
guint disable_command_line : 1;
+ guint disable_shutdown : 1;
guint disable_lock_screen : 1;
guint disable_log_out : 1;
guint disable_force_quit : 1;
@@ -83,6 +85,20 @@ locked_down_notify (GConfClient *client,
}
static void
+disable_shutdown_notify (GConfClient *client,
+ guint cnxn_id,
+ GConfEntry *entry,
+ PanelLockdown *lockdown)
+{
+ if (!entry->value || entry->value->type != GCONF_VALUE_BOOL)
+ return;
+
+ lockdown->disable_shutdown = gconf_value_get_bool (entry->value);
+
+ panel_lockdown_invoke_closures (lockdown);
+}
+
+static void
disable_command_line_notify (GConfClient *client,
guint cnxn_id,
GConfEntry *entry,
@@ -246,6 +262,14 @@ panel_lockdown_init (void)
DISABLE_COMMAND_LINE_KEY,
(GConfClientNotifyFunc) disable_command_line_notify,
i++);
+
+ panel_lockdown.disable_shutdown =
+ panel_lockdown_load_bool (&panel_lockdown,
+ client,
+ DISABLE_SHUTDOWN_KEY,
+ (GConfClientNotifyFunc) disable_shutdown_notify,
+ i++);
+
panel_lockdown.disable_lock_screen =
panel_lockdown_load_bool (&panel_lockdown,
@@ -334,6 +358,14 @@ panel_lockdown_get_disable_command_line (void)
}
gboolean
+panel_lockdown_get_disable_shutdown (void)
+{
+ g_assert (panel_lockdown.initialized != FALSE);
+
+ return panel_lockdown.disable_shutdown;
+}
+
+gboolean
panel_lockdown_get_disable_lock_screen (void)
{
g_assert (panel_lockdown.initialized != FALSE);
diff --git a/gnome-panel/panel-lockdown.h b/gnome-panel/panel-lockdown.h
index 8c843b1..e67bc53 100644
--- a/gnome-panel/panel-lockdown.h
+++ b/gnome-panel/panel-lockdown.h
@@ -35,6 +35,7 @@ void panel_lockdown_finalize (void);
gboolean panel_lockdown_get_locked_down (void);
gboolean panel_lockdown_get_disable_command_line (void);
+gboolean panel_lockdown_get_disable_shutdown (void);
gboolean panel_lockdown_get_disable_lock_screen (void);
gboolean panel_lockdown_get_disable_log_out (void);
gboolean panel_lockdown_get_disable_force_quit (void);