summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRobert Ancell <robert.ancell@canonical.com>2012-03-08 15:24:00 +1100
committerRobert Ancell <robert.ancell@canonical.com>2012-03-08 15:24:00 +1100
commitc0ce01798f047caf7a6fc5d02c0512c024dcc328 (patch)
tree38f3cfbc56306030bac8e68a13acbac15d7235e6 /src
parentd2441cda122a6194f09ac7e295da2e9491740830 (diff)
parent9bcd650a07b4320e683b1501d03791d56a9b06ae (diff)
downloadlightdm-c0ce01798f047caf7a6fc5d02c0512c024dcc328.tar.gz
Add a seat option greeter-allow-guest which controls if the greeter should show a guest option
Diffstat (limited to 'src')
-rw-r--r--src/display.c12
-rw-r--r--src/display.h2
-rw-r--r--src/lightdm.c2
-rw-r--r--src/seat.c8
-rw-r--r--src/seat.h2
5 files changed, 25 insertions, 1 deletions
diff --git a/src/display.c b/src/display.c
index 54f8c8a7..3f26395a 100644
--- a/src/display.c
+++ b/src/display.c
@@ -97,6 +97,9 @@ struct DisplayPrivate
/* TRUE if allowed to log into guest account */
gboolean allow_guest;
+ /* TRUE if greeter is to show the guest account */
+ gboolean greeter_allow_guest;
+
/* TRUE if stopping the display (waiting for dispaly server, greeter and session to stop) */
gboolean stopping;
@@ -168,6 +171,13 @@ display_set_allow_guest (Display *display, gboolean allow_guest)
}
void
+display_set_greeter_allow_guest (Display *display, gboolean greeter_allow_guest)
+{
+ g_return_if_fail (display != NULL);
+ display->priv->greeter_allow_guest = greeter_allow_guest;
+}
+
+void
display_set_autologin_user (Display *display, const gchar *username, gboolean is_guest, gint timeout)
{
g_return_if_fail (display != NULL);
@@ -405,7 +415,7 @@ start_greeter (Display *display)
greeter_set_hint (display->priv->greeter, "select-guest", "true");
greeter_set_hint (display->priv->greeter, "default-session", display->priv->user_session);
greeter_set_allow_guest (display->priv->greeter, display->priv->allow_guest);
- greeter_set_hint (display->priv->greeter, "has-guest-account", display->priv->allow_guest ? "true" : "false");
+ greeter_set_hint (display->priv->greeter, "has-guest-account", (display->priv->allow_guest && display->priv->greeter_allow_guest) ? "true" : "false");
greeter_set_hint (display->priv->greeter, "hide-users", display->priv->greeter_hide_users ? "true" : "false");
if (display->priv->greeter_is_lock)
greeter_set_hint (display->priv->greeter, "lock-screen", "true");
diff --git a/src/display.h b/src/display.h
index 5c569bb7..c7e0850b 100644
--- a/src/display.h
+++ b/src/display.h
@@ -64,6 +64,8 @@ void display_set_session_wrapper (Display *display, const gchar *session_wrapper
void display_set_allow_guest (Display *display, gboolean allow_guest);
+void display_set_greeter_allow_guest (Display *display, gboolean greeter_allow_guest);
+
void display_set_autologin_user (Display *display, const gchar *username, gboolean is_guest, gint timeout);
void display_set_select_user_hint (Display *display, const gchar *username, gboolean is_guest);
diff --git a/src/lightdm.c b/src/lightdm.c
index e2b9f8d2..f7aa0506 100644
--- a/src/lightdm.c
+++ b/src/lightdm.c
@@ -997,6 +997,8 @@ main (int argc, char **argv)
config_set_boolean (config_get_instance (), "SeatDefaults", "start-session", TRUE);
if (!config_has_key (config_get_instance (), "SeatDefaults", "allow-guest"))
config_set_boolean (config_get_instance (), "SeatDefaults", "allow-guest", TRUE);
+ if (!config_has_key (config_get_instance (), "SeatDefaults", "greeter-allow-guest"))
+ config_set_boolean (config_get_instance (), "SeatDefaults", "greeter-allow-guest", TRUE);
if (!config_has_key (config_get_instance (), "SeatDefaults", "greeter-session"))
config_set_string (config_get_instance (), "SeatDefaults", "greeter-session", GREETER_SESSION);
if (!config_has_key (config_get_instance (), "SeatDefaults", "user-session"))
diff --git a/src/seat.c b/src/seat.c
index 369aa885..d17e008b 100644
--- a/src/seat.c
+++ b/src/seat.c
@@ -179,6 +179,13 @@ seat_get_allow_guest (Seat *seat)
return seat_get_boolean_property (seat, "allow-guest") && guest_account_is_installed ();
}
+gboolean
+seat_get_greeter_allow_guest (Seat *seat)
+{
+ g_return_val_if_fail (seat != NULL, FALSE);
+ return seat_get_allow_guest (seat) && seat_get_boolean_property (seat, "greeter-allow-guest");
+}
+
static gboolean
switch_to_user (Seat *seat, const gchar *username, gboolean unlock)
{
@@ -483,6 +490,7 @@ switch_to_user_or_start_greeter (Seat *seat, const gchar *username, gboolean use
if (is_lock)
display_set_lock_hint (display, TRUE);
display_set_allow_guest (display, seat_get_allow_guest (seat));
+ display_set_greeter_allow_guest (display, seat_get_greeter_allow_guest (seat));
if (autologin)
display_set_autologin_user (display, username, is_guest, 0);
else
diff --git a/src/seat.h b/src/seat.h
index 4b4a8d1e..4760268f 100644
--- a/src/seat.h
+++ b/src/seat.h
@@ -78,6 +78,8 @@ gboolean seat_get_can_switch (Seat *seat);
gboolean seat_get_allow_guest (Seat *seat);
+gboolean seat_get_greeter_allow_guest (Seat *seat);
+
gboolean seat_switch_to_greeter (Seat *seat);
gboolean seat_switch_to_user (Seat *seat, const gchar *username, const gchar *session_name);