mirror of
https://github.com/edu4rdshl/gnome-shell.git
synced 2026-07-17 23:24:51 +00:00
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
2 changed files with 41 additions and 1 deletions
|
|
@ -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…
Add table
Add a link
Reference in a new issue