Listen for permission changes

Since the lockbutton doesn't have a changed signal, connecting to
it doesn't help... directly listen for changes of the permission
object instead.
This commit is contained in:
Matthias Clasen 2010-11-15 14:02:27 -05:00
parent bd7cd034a4
commit 1607beaea2
2 changed files with 24 additions and 22 deletions

View file

@ -311,8 +311,9 @@ update_autologin (GtkWidget *widget,
}
static void
lockbutton_changed (UmLockButton *button,
gpointer data)
on_permission_changed (GPermission *permission,
GParamSpec *spec,
gpointer data)
{
UmLoginOptions *d = data;
gboolean authorized;
@ -395,9 +396,9 @@ um_login_options_new (GtkBuilder *builder)
gtk_widget_show (widget);
box = (GtkWidget *)gtk_builder_get_object (builder, "lockbutton-alignment");
gtk_container_add (GTK_CONTAINER (box), widget);
g_signal_connect (widget, "changed",
G_CALLBACK (lockbutton_changed), um);
lockbutton_changed (UM_LOCK_BUTTON (widget), um);
g_signal_connect (um->permission, "notify",
G_CALLBACK (on_permission_changed), um);
on_permission_changed (um->permission, NULL, um);
um->lock_button = widget;
}

View file

@ -69,7 +69,7 @@ struct _UmUserPanelPrivate {
GtkWidget *notebook;
GtkWidget *lock_button;
PolkitPermission *permission;
GPermission *permission;
GtkWidget *language_chooser;
UmAccountDialog *account_dialog;
@ -546,7 +546,7 @@ show_user (UmUser *user, UmUserPanelPrivate *d)
}
}
static void lockbutton_changed (UmLockButton *button, gpointer data);
static void on_permission_changed (GPermission *permission, GParamSpec *pspec, gpointer data);
static void
selected_user_changed (GtkTreeSelection *selection, UmUserPanelPrivate *d)
@ -559,7 +559,7 @@ selected_user_changed (GtkTreeSelection *selection, UmUserPanelPrivate *d)
gtk_tree_model_get (model, &iter, USER_COL, &user, -1);
show_user (user, d);
if (d->lock_button != NULL) {
lockbutton_changed (UM_LOCK_BUTTON (d->lock_button), d);
on_permission_changed (d->permission, NULL, d);
}
g_object_unref (user);
}
@ -842,13 +842,13 @@ users_loaded (UmUserManager *manager,
static void
add_unlock_tooltip (GtkWidget *button)
{
const gchar *names[3];
gchar *names[3];
GIcon *icon;
names[0] = "changes-prevent-symbolic";
names[1] = "changes-prevent";
names[2] = NULL;
icon = g_themed_icon_new_from_names (names, -1);
icon = (GIcon *)g_themed_icon_new_from_names (names, -1);
setup_tooltip_with_embedded_icon (button,
_("To make changes,\nclick the * icon first"),
"*",
@ -867,8 +867,9 @@ remove_unlock_tooltip (GtkWidget *button)
}
static void
lockbutton_changed (UmLockButton *button,
gpointer data)
on_permission_changed (GPermission *permission,
GParamSpec *pspec,
gpointer data)
{
UmUserPanelPrivate *d = data;
gboolean is_authorized;
@ -890,13 +891,13 @@ lockbutton_changed (UmLockButton *button,
setup_tooltip_with_embedded_icon (widget, _("Create a user"), NULL, NULL);
}
else {
const gchar *names[3];
gchar *names[3];
GIcon *icon;
names[0] = "changes-prevent-symbolic";
names[1] = "changes-prevent";
names[2] = NULL;
icon = g_themed_icon_new_from_names (names, -1);
icon = (GIcon *)g_themed_icon_new_from_names (names, -1);
setup_tooltip_with_embedded_icon (widget,
_("To create a user,\nclick the * icon first"),
"*",
@ -910,13 +911,13 @@ lockbutton_changed (UmLockButton *button,
setup_tooltip_with_embedded_icon (widget, _("Delete the selected user"), NULL, NULL);
}
else {
const gchar *names[3];
gchar *names[3];
GIcon *icon;
names[0] = "changes-prevent-symbolic";
names[1] = "changes-prevent";
names[2] = NULL;
icon = g_themed_icon_new_from_names (names, -1);
icon = (GIcon *)g_themed_icon_new_from_names (names, -1);
setup_tooltip_with_embedded_icon (widget,
_("To delete the selected user,\nclick the * icon first"),
@ -1059,7 +1060,7 @@ setup_main_window (UmUserPanelPrivate *d)
GtkWidget *box;
gchar *title;
GIcon *icon;
const gchar *names[3];
gchar *names[3];
userlist = get_widget (d, "list-treeview");
store = gtk_list_store_new (NUM_USER_LIST_COLS,
@ -1154,7 +1155,7 @@ setup_main_window (UmUserPanelPrivate *d)
g_signal_connect (button, "clicked",
G_CALLBACK (change_fingerprint), d);
d->permission = polkit_permission_new_sync ("org.freedesktop.accounts.user-administration", NULL, NULL, NULL);
d->permission = (GPermission *)polkit_permission_new_sync ("org.freedesktop.accounts.user-administration", NULL, NULL, NULL);
if (d->permission != NULL) {
/* accounts service not available? */
button = um_lock_button_new (d->permission);
@ -1162,9 +1163,9 @@ setup_main_window (UmUserPanelPrivate *d)
gtk_widget_show (button);
box = get_widget (d, "userlist-vbox");
gtk_box_pack_end (GTK_BOX (box), button, FALSE, FALSE, 0);
g_signal_connect (button, "changed",
G_CALLBACK (lockbutton_changed), d);
lockbutton_changed (UM_LOCK_BUTTON (button), d);
g_signal_connect (d->permission, "notify",
G_CALLBACK (on_permission_changed), d);
on_permission_changed (d->permission, NULL, d);
d->lock_button = button;
}
@ -1172,7 +1173,7 @@ setup_main_window (UmUserPanelPrivate *d)
names[0] = "changes-prevent-symbolic";
names[1] = "changes-prevent";
names[2] = NULL;
icon = g_themed_icon_new_from_names (names, -1);
icon = (GIcon *)g_themed_icon_new_from_names (names, -1);
setup_tooltip_with_embedded_icon (button,
_("To create a user,\nclick the * icon first"),
"*",