aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Gould <ted@canonical.com>2009-10-01 15:23:17 -0500
committerTed Gould <ted@canonical.com>2009-10-01 15:23:17 -0500
commite1a6856bac9c9a08d7dd5a98b8c524c85d3587fe (patch)
treedd4166666a4507e541bdd68551615dc5413f2120
parentbf66ad549a8d18c6b48d9d26668477c727fad769 (diff)
parent75bf969d3ee50d5d49817e1737b351eb0857b05c (diff)
downloadayatana-indicator-session-e1a6856bac9c9a08d7dd5a98b8c524c85d3587fe.tar.gz
ayatana-indicator-session-e1a6856bac9c9a08d7dd5a98b8c524c85d3587fe.tar.bz2
ayatana-indicator-session-e1a6856bac9c9a08d7dd5a98b8c524c85d3587fe.zip
* Upstream release 0.1.6
* Making startup of services asynchronous (LP: #436181) * Disabling "Lock Screen" item when action is blocked by GDM autologin (LP: #436724) * Disabling "Lock Screen" in guest session (LP: #439068)
-rw-r--r--configure.ac2
-rw-r--r--debian/changelog8
-rw-r--r--src/users-service-dbus.h5
-rw-r--r--src/users-service.c28
4 files changed, 35 insertions, 8 deletions
diff --git a/configure.ac b/configure.ac
index 0ce9fbc..193e88c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -4,7 +4,7 @@ AC_INIT(src/indicator-session.c)
AC_PREREQ(2.53)
AM_CONFIG_HEADER(config.h)
-AM_INIT_AUTOMAKE(indicator-session, 0.1.5)
+AM_INIT_AUTOMAKE(indicator-session, 0.1.6)
AM_MAINTAINER_MODE
diff --git a/debian/changelog b/debian/changelog
index 2ba29f3..3d74832 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,6 +1,10 @@
-indicator-session (0.1.5-0ubuntu3~ppa1) UNRELEASED; urgency=low
+indicator-session (0.1.6-0ubuntu1~ppa1) UNRELEASED; urgency=low
- * Merging in the branch for async startup.
+ * Upstream release 0.1.6
+ * Making startup of services asynchronous (LP: #436181)
+ * Disabling "Lock Screen" item when action is blocked by
+ GDM autologin (LP: #436724)
+ * Disabling "Lock Screen" in guest session (LP: #439068)
-- Ted Gould <ted@ubuntu.com> Mon, 28 Sep 2009 21:01:22 -0500
diff --git a/src/users-service-dbus.h b/src/users-service-dbus.h
index fc14beb..9ba05c9 100644
--- a/src/users-service-dbus.h
+++ b/src/users-service-dbus.h
@@ -50,8 +50,11 @@ struct _UserData
UsersServiceDbus *service;
};
+/* XXX - MAXIMUM_USERS should be set to 7 once we've
+ * got some gdm issues worked out.
+ */
#define MINIMUM_USERS 1
-#define MAXIMUM_USERS 7
+#define MAXIMUM_USERS 1
struct _UsersServiceDbus {
GObject parent;
diff --git a/src/users-service.c b/src/users-service.c
index dc11e8d..9877ba6 100644
--- a/src/users-service.c
+++ b/src/users-service.c
@@ -53,6 +53,9 @@ static DbusmenuMenuitem *root_menuitem = NULL;
static GMainLoop *mainloop = NULL;
static UsersServiceDbus *dbus_interface = NULL;
+static DbusmenuMenuitem *lock_menuitem = NULL;
+static gboolean is_guest = FALSE;
+
static DBusGProxy * gdm_settings_proxy = NULL;
static gboolean gdm_auto_login = FALSE;
static const gchar * gdm_auto_login_string = "daemon/AutomaticLoginEnable";
@@ -78,6 +81,14 @@ gdm_settings_change (DBusGProxy * proxy, const gchar * value, const gchar * old,
gdm_auto_login = FALSE;
}
+ if (lock_menuitem != NULL) {
+ if (gdm_auto_login || is_guest) {
+ dbusmenu_menuitem_property_set(lock_menuitem, DBUSMENU_MENUITEM_PROP_SENSITIVE, "false");
+ } else {
+ dbusmenu_menuitem_property_set(lock_menuitem, DBUSMENU_MENUITEM_PROP_SENSITIVE, "true");
+ }
+ }
+
return;
}
@@ -277,10 +288,15 @@ rebuild_items (DbusmenuMenuitem *root,
g_list_foreach (children, (GFunc)g_object_unref, NULL);
g_list_free (children);
- mi = dbusmenu_menuitem_new();
- dbusmenu_menuitem_property_set(mi, DBUSMENU_MENUITEM_PROP_LABEL, _("Lock Screen"));
- g_signal_connect(G_OBJECT(mi), DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, G_CALLBACK(lock_screen), NULL);
- dbusmenu_menuitem_child_append(root, mi);
+ lock_menuitem = dbusmenu_menuitem_new();
+ dbusmenu_menuitem_property_set(lock_menuitem, DBUSMENU_MENUITEM_PROP_LABEL, _("Lock Screen"));
+ g_signal_connect(G_OBJECT(lock_menuitem), DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, G_CALLBACK(lock_screen), NULL);
+ dbusmenu_menuitem_child_append(root, lock_menuitem);
+ if (gdm_auto_login || is_guest) {
+ dbusmenu_menuitem_property_set(lock_menuitem, DBUSMENU_MENUITEM_PROP_SENSITIVE, "false");
+ } else {
+ dbusmenu_menuitem_property_set(lock_menuitem, DBUSMENU_MENUITEM_PROP_SENSITIVE, "true");
+ }
if (can_activate == TRUE)
{
@@ -394,6 +410,10 @@ main (int argc, char ** argv)
return 1;
}
+ if (!g_strcmp0(g_get_user_name(), "guest")) {
+ is_guest = TRUE;
+ }
+
g_idle_add(build_gdm_proxy, NULL);
dbus_interface = g_object_new (USERS_SERVICE_DBUS_TYPE, NULL);