mirror of
https://gitlab.gnome.org/GNOME/gimp.git
synced 2025-07-04 01:43:24 +00:00
app: make dark scheme the default when system scheme request fails.
If the DBus portal is not available or if any failure occurs when querying the system scheme, let's default to dark theme (since it's GIMP's default).
This commit is contained in:
parent
d0abb78db3
commit
08c93a5478
1 changed files with 24 additions and 11 deletions
|
@ -276,12 +276,12 @@ static void
|
||||||
themes_apply_theme (Gimp *gimp,
|
themes_apply_theme (Gimp *gimp,
|
||||||
GimpGuiConfig *config)
|
GimpGuiConfig *config)
|
||||||
{
|
{
|
||||||
GFile *theme_css;
|
GFile *theme_css;
|
||||||
GOutputStream *output;
|
GOutputStream *output;
|
||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
gboolean prefer_dark_theme;
|
gboolean prefer_dark_theme;
|
||||||
guint32 color_scheme;
|
GimpThemeScheme color_scheme;
|
||||||
GVariant *tuple_variant, *variant;
|
GVariant *tuple_variant, *variant;
|
||||||
|
|
||||||
g_return_if_fail (GIMP_IS_GIMP (gimp));
|
g_return_if_fail (GIMP_IS_GIMP (gimp));
|
||||||
g_return_if_fail (GIMP_IS_GUI_CONFIG (config));
|
g_return_if_fail (GIMP_IS_GUI_CONFIG (config));
|
||||||
|
@ -332,14 +332,25 @@ themes_apply_theme (Gimp *gimp,
|
||||||
*/
|
*/
|
||||||
prefer_dark_theme = (g_variant_get_uint32 (variant) == 1);
|
prefer_dark_theme = (g_variant_get_uint32 (variant) == 1);
|
||||||
|
|
||||||
color_scheme = prefer_dark_theme ? GIMP_THEME_DARK : GIMP_THEME_SYSTEM;
|
/*
|
||||||
|
* Note that normally it's a tri-state flag, with a
|
||||||
|
* prefer-light and no-preference case too, except that it
|
||||||
|
* looks like both in KDE and GNOME at least, they only set
|
||||||
|
* prefer-dark or no-preference and for us, the latter should
|
||||||
|
* also mean dark.
|
||||||
|
* Therefore for this setting to actually mean something, we
|
||||||
|
* are currently breaking the spec by having no-preference
|
||||||
|
* mean prefer-light. This should be fixed if/when the main
|
||||||
|
* desktops actually implement all 3 options some day.
|
||||||
|
*/
|
||||||
|
color_scheme = prefer_dark_theme ? GIMP_THEME_DARK : GIMP_THEME_LIGHT;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
g_printerr ("%s\n", error->message);
|
g_printerr ("%s\n", error->message);
|
||||||
g_clear_error (&error);
|
g_clear_error (&error);
|
||||||
|
|
||||||
color_scheme = config->theme_scheme;
|
color_scheme = (config->theme_scheme == GIMP_THEME_SYSTEM) ? GIMP_THEME_DARK : config->theme_scheme;
|
||||||
prefer_dark_theme = (color_scheme == GIMP_THEME_DARK ||
|
prefer_dark_theme = (color_scheme == GIMP_THEME_DARK ||
|
||||||
color_scheme == GIMP_THEME_GRAY);
|
color_scheme == GIMP_THEME_GRAY);
|
||||||
}
|
}
|
||||||
|
@ -347,7 +358,7 @@ themes_apply_theme (Gimp *gimp,
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
color_scheme = config->theme_scheme;
|
color_scheme = (config->theme_scheme == GIMP_THEME_SYSTEM) ? GIMP_THEME_DARK : config->theme_scheme;
|
||||||
prefer_dark_theme = (color_scheme == GIMP_THEME_DARK ||
|
prefer_dark_theme = (color_scheme == GIMP_THEME_DARK ||
|
||||||
color_scheme == GIMP_THEME_GRAY);
|
color_scheme == GIMP_THEME_GRAY);
|
||||||
}
|
}
|
||||||
|
@ -402,7 +413,6 @@ themes_apply_theme (Gimp *gimp,
|
||||||
|
|
||||||
switch (color_scheme)
|
switch (color_scheme)
|
||||||
{
|
{
|
||||||
case GIMP_THEME_SYSTEM:
|
|
||||||
case GIMP_THEME_LIGHT:
|
case GIMP_THEME_LIGHT:
|
||||||
if (light != NULL)
|
if (light != NULL)
|
||||||
file = g_object_ref (light);
|
file = g_object_ref (light);
|
||||||
|
@ -433,6 +443,8 @@ themes_apply_theme (Gimp *gimp,
|
||||||
else if (light != NULL)
|
else if (light != NULL)
|
||||||
file = g_object_ref (light);
|
file = g_object_ref (light);
|
||||||
break;
|
break;
|
||||||
|
case GIMP_THEME_SYSTEM:
|
||||||
|
g_return_if_reached ();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (file != NULL)
|
if (file != NULL)
|
||||||
|
@ -465,7 +477,6 @@ themes_apply_theme (Gimp *gimp,
|
||||||
|
|
||||||
switch (color_scheme)
|
switch (color_scheme)
|
||||||
{
|
{
|
||||||
case GIMP_THEME_SYSTEM:
|
|
||||||
case GIMP_THEME_LIGHT:
|
case GIMP_THEME_LIGHT:
|
||||||
tmp = g_build_filename (gimp_data_directory (),
|
tmp = g_build_filename (gimp_data_directory (),
|
||||||
"themes", "Default", "gimp-light.css",
|
"themes", "Default", "gimp-light.css",
|
||||||
|
@ -481,6 +492,8 @@ themes_apply_theme (Gimp *gimp,
|
||||||
"themes", "Default", "gimp-dark.css",
|
"themes", "Default", "gimp-dark.css",
|
||||||
NULL);
|
NULL);
|
||||||
break;
|
break;
|
||||||
|
case GIMP_THEME_SYSTEM:
|
||||||
|
g_return_if_reached ();
|
||||||
}
|
}
|
||||||
|
|
||||||
css_files = g_slist_prepend (css_files, g_file_new_for_path (tmp));
|
css_files = g_slist_prepend (css_files, g_file_new_for_path (tmp));
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue