diff options
author | Robert Ancell <robert.ancell@canonical.com> | 2012-03-08 15:24:00 +1100 |
---|---|---|
committer | Robert Ancell <robert.ancell@canonical.com> | 2012-03-08 15:24:00 +1100 |
commit | c0ce01798f047caf7a6fc5d02c0512c024dcc328 (patch) | |
tree | 38f3cfbc56306030bac8e68a13acbac15d7235e6 /src | |
parent | d2441cda122a6194f09ac7e295da2e9491740830 (diff) | |
parent | 9bcd650a07b4320e683b1501d03791d56a9b06ae (diff) | |
download | lightdm-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.c | 12 | ||||
-rw-r--r-- | src/display.h | 2 | ||||
-rw-r--r-- | src/lightdm.c | 2 | ||||
-rw-r--r-- | src/seat.c | 8 | ||||
-rw-r--r-- | src/seat.h | 2 |
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")) @@ -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 @@ -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); |