[gnome-control-center] user-accounts: Disable animations when reloading users
- From: Felipe Borges <felipeborges src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-control-center] user-accounts: Disable animations when reloading users
- Date: Mon, 13 Feb 2017 11:08:34 +0000 (UTC)
commit b4c26363d8ae37452deedb0120f4ff7c1a7c99e6
Author: Ondrej Holy <oholy redhat com>
Date: Mon Feb 13 09:16:59 2017 +0100
user-accounts: Disable animations when reloading users
Animations cause unwanted effects when reloading users, disable them.
https://bugzilla.gnome.org/show_bug.cgi?id=778405
panels/user-accounts/um-user-panel.c | 36 +++++++++++++++++++--------------
1 files changed, 21 insertions(+), 15 deletions(-)
---
diff --git a/panels/user-accounts/um-user-panel.c b/panels/user-accounts/um-user-panel.c
index 0a88a45..ceea188 100644
--- a/panels/user-accounts/um-user-panel.c
+++ b/panels/user-accounts/um-user-panel.c
@@ -96,6 +96,7 @@ get_widget (CcUserPanelPrivate *d, const char *name)
#define PAGE_ADDUSER "_adduser"
static void show_restart_notification (CcUserPanelPrivate *d, const gchar *locale);
+static gint user_compare (gconstpointer i, gconstpointer u);
typedef struct {
CcUserPanel *self;
@@ -265,10 +266,18 @@ sort_users (gconstpointer a, gconstpointer b)
}
static void
-reload_users (CcUserPanelPrivate *d)
+reload_users (CcUserPanelPrivate *d, ActUser *selected_user)
{
ActUser *user;
GSList *list, *l;
+ UmCarouselItem *item;
+ GtkSettings *settings;
+ gboolean animations;
+
+ settings = gtk_settings_get_default ();
+
+ g_object_get (settings, "gtk-enable-animations", &animations, NULL);
+ g_object_set (settings, "gtk-enable-animations", FALSE, NULL);
um_carousel_purge_items (d->carousel);
@@ -284,6 +293,13 @@ reload_users (CcUserPanelPrivate *d)
user_added (d->um, user, d);
}
g_slist_free (list);
+
+ if (selected_user) {
+ item = um_carousel_find_item (d->carousel, selected_user, user_compare);
+ um_carousel_select_item (d->carousel, item);
+ }
+
+ g_object_set (settings, "gtk-enable-animations", animations, NULL);
}
static void
@@ -296,7 +312,7 @@ user_removed (ActUserManager *um, ActUser *user, CcUserPanelPrivate *d)
gtk_revealer_set_reveal_child (GTK_REVEALER (d->carousel),
show_carousel);
- reload_users (d);
+ reload_users (d, NULL);
/* Show the current user */
user = act_user_manager_get_user_by_id (d->um, getuid ());
@@ -326,15 +342,10 @@ user_compare (gconstpointer i,
static void
user_changed (ActUserManager *um, ActUser *user, CcUserPanelPrivate *d)
{
- UmCarouselItem *item;
-
if (act_user_get_uid (user) != act_user_get_uid (d->selected_user))
return;
- reload_users (d);
-
- item = um_carousel_find_item (d->carousel, user, user_compare);
- um_carousel_select_item (d->carousel, item);
+ reload_users (d, user);
}
static void
@@ -344,7 +355,6 @@ select_created_user (GObject *object,
{
CcUserPanelPrivate *d = user_data;
UmAccountDialog *dialog;
- UmCarouselItem *item;
ActUser *user;
dialog = UM_ACCOUNT_DIALOG (object);
@@ -355,11 +365,7 @@ select_created_user (GObject *object,
if (user == NULL)
return;
- reload_users (d);
-
- /* Find and select the last created user */
- item = um_carousel_find_item (d->carousel, user, user_compare);
- um_carousel_select_item (d->carousel, item);
+ reload_users (d, user);
}
static void
@@ -1124,7 +1130,7 @@ users_loaded (ActUserManager *manager,
g_signal_connect (d->um, "user-added", G_CALLBACK (user_added), d);
g_signal_connect (d->um, "user-removed", G_CALLBACK (user_removed), d);
- reload_users (d);
+ reload_users (d, NULL);
/* Show the current user firstly. */
user = act_user_manager_get_user_by_id (d->um, getuid ());
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]