st/settings: Add API to inhibit animations
There may be situations where we shouldn't enable animations. Make it possible for the Shell to decide when there are such situations and in when needed inhibit animations. https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/757
This commit is contained in:
parent
7220f6d25b
commit
f4f8982825
@ -60,6 +60,7 @@ struct _StSettings
|
||||
gchar *font_name;
|
||||
gchar *gtk_theme;
|
||||
gchar *gtk_icon_theme;
|
||||
int inhibit_animations_count;
|
||||
gboolean enable_animations;
|
||||
gboolean primary_paste;
|
||||
gboolean magnifier_active;
|
||||
@ -82,6 +83,41 @@ st_settings_set_slow_down_factor (StSettings *settings,
|
||||
g_object_notify_by_pspec (G_OBJECT (settings), props[PROP_SLOW_DOWN_FACTOR]);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
get_enable_animations (StSettings *settings)
|
||||
{
|
||||
if (settings->inhibit_animations_count > 0)
|
||||
return FALSE;
|
||||
else
|
||||
return settings->enable_animations;
|
||||
}
|
||||
|
||||
void
|
||||
st_settings_inhibit_animations (StSettings *settings)
|
||||
{
|
||||
gboolean enable_animations;
|
||||
|
||||
enable_animations = get_enable_animations (settings);
|
||||
settings->inhibit_animations_count++;
|
||||
|
||||
if (enable_animations != get_enable_animations (settings))
|
||||
g_object_notify_by_pspec (G_OBJECT (settings),
|
||||
props[PROP_ENABLE_ANIMATIONS]);
|
||||
}
|
||||
|
||||
void
|
||||
st_settings_uninhibit_animations (StSettings *settings)
|
||||
{
|
||||
gboolean enable_animations;
|
||||
|
||||
enable_animations = get_enable_animations (settings);
|
||||
settings->inhibit_animations_count--;
|
||||
|
||||
if (enable_animations != get_enable_animations (settings))
|
||||
g_object_notify_by_pspec (G_OBJECT (settings),
|
||||
props[PROP_ENABLE_ANIMATIONS]);
|
||||
}
|
||||
|
||||
static void
|
||||
st_settings_finalize (GObject *object)
|
||||
{
|
||||
@ -126,7 +162,7 @@ st_settings_get_property (GObject *object,
|
||||
switch (prop_id)
|
||||
{
|
||||
case PROP_ENABLE_ANIMATIONS:
|
||||
g_value_set_boolean (value, settings->enable_animations);
|
||||
g_value_set_boolean (value, get_enable_animations (settings));
|
||||
break;
|
||||
case PROP_PRIMARY_PASTE:
|
||||
g_value_set_boolean (value, settings->primary_paste);
|
||||
|
@ -33,6 +33,10 @@ G_DECLARE_FINAL_TYPE (StSettings, st_settings, ST, SETTINGS, GObject)
|
||||
|
||||
StSettings * st_settings_get (void);
|
||||
|
||||
void st_settings_inhibit_animations (StSettings *settings);
|
||||
|
||||
void st_settings_uninhibit_animations (StSettings *settings);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __ST_SETTINGS_H__ */
|
||||
|
Loading…
Reference in New Issue
Block a user