@@ -81,19 +81,24 @@ conf_get_dark_theme (void)
8181 if (fdo_settings ) {
8282 gint scheme ;
8383
84- conf_get_int_value_from_schema (fdo_settings , "color-scheme" , & scheme );
85- debug1 (DEBUG_CONF , "FDO reports color-schema code '%d'" , scheme );
86- if (1 == scheme )
87- dark = FALSE;
88- if (0 == scheme && 2 == scheme )
89- dark = TRUE;
84+ if (conf_schema_has_key (fdo_settings , "color-scheme" )) {
85+ conf_get_int_value_from_schema (fdo_settings , "color-scheme" , & scheme );
86+ debug1 (DEBUG_CONF , "FDO reports color-schema code '%d'" , scheme );
87+ if (1 == scheme )
88+ dark = FALSE;
89+ if (0 == scheme || 2 == scheme )
90+ dark = TRUE;
91+ }
9092 } else {
9193 gchar * scheme = NULL ;
9294
93- conf_get_str_value_from_schema (desktop_settings , "color-scheme" , & scheme );
94- if (scheme ) {
95- debug1 (DEBUG_CONF , "GNOME reports color-schema '%s'" , scheme );
96- dark = g_str_equal (scheme , "prefer-dark" );
95+ if (conf_schema_has_key (desktop_settings , "color-scheme" )) {
96+ conf_get_str_value_from_schema (desktop_settings , "color-scheme" , & scheme );
97+ if (scheme ) {
98+ debug1 (DEBUG_CONF , "GNOME reports color-schema '%s'" , scheme );
99+ dark = g_str_equal (scheme , "prefer-dark" );
100+ g_free (scheme );
101+ }
97102 }
98103 }
99104
@@ -225,6 +230,23 @@ conf_get_toolbar_style(void)
225230 return style ;
226231}
227232
233+ gboolean
234+ conf_schema_has_key (GSettings * gsettings , const gchar * key )
235+ {
236+ g_assert (gsettings != NULL );
237+ g_assert (key != NULL );
238+
239+ GSettingsSchema * schema = NULL ;
240+ gboolean has_key = FALSE;
241+
242+ g_object_get (gsettings , "settings-schema" , & schema , NULL );
243+ if (schema ) {
244+ has_key = g_settings_schema_has_key (schema , key );
245+ g_settings_schema_unref (schema );
246+ }
247+ return has_key ;
248+ }
249+
228250gboolean
229251conf_get_bool_value_from_schema (GSettings * gsettings , const gchar * key , gboolean * value )
230252{
0 commit comments