GdkScreen *screen;
GtkCssProvider *theme_provider;
GtkCssProvider *key_theme_provider;
- GtkStyleProperties *style;
};
typedef enum
PROP_IM_STATUS_STYLE,
PROP_SHELL_SHOWS_APP_MENU,
PROP_SHELL_SHOWS_MENUBAR,
- PROP_ENABLE_PRIMARY_PASTE
+ PROP_ENABLE_PRIMARY_PASTE,
+ PROP_RECENT_FILES_ENABLED
};
/* --- prototypes --- */
NULL);
g_assert (result == PROP_ENABLE_PRIMARY_PASTE);
- g_type_class_add_private (class, sizeof (GtkSettingsPrivate));
-}
-
-static void
-settings_ensure_style (GtkSettings *settings)
-{
- GtkSettingsPrivate *priv = settings->priv;
- PangoFontDescription *font_desc;
- gchar *font_name;
-
- if (priv->style)
- return;
-
- priv->style = gtk_style_properties_new ();
-
- g_object_get (settings,
- "gtk-font-name", &font_name,
- NULL);
-
- font_desc = pango_font_description_from_string (font_name);
-
- /* Unset attributes from this description,
- * so they do not override theme values */
- pango_font_description_unset_fields (font_desc, PANGO_FONT_MASK_WEIGHT);
- pango_font_description_unset_fields (font_desc, PANGO_FONT_MASK_STRETCH);
- pango_font_description_unset_fields (font_desc, PANGO_FONT_MASK_VARIANT);
- pango_font_description_unset_fields (font_desc, PANGO_FONT_MASK_STYLE);
-
- gtk_style_properties_set (priv->style, 0,
- "font", font_desc,
- NULL);
+ /**
+ * GtkSettings:gtk-recent-files-enabled:
+ *
+ * Whether GTK+ should keep track of items inside the recently used
+ * resources list. If set to %FALSE, the list will always be empty.
+ *
+ * Since: 3.8
+ */
+ result = settings_install_property_parser (class,
+ g_param_spec_boolean ("gtk-recent-files-enabled",
+ P_("Recent Files Enabled"),
+ P_("Whether GTK+ remembers recent files"),
+ TRUE,
+ GTK_PARAM_READWRITE),
+ NULL);
+ g_assert (result == PROP_RECENT_FILES_ENABLED);
- pango_font_description_free (font_desc);
- g_free (font_name);
+ g_type_class_add_private (class, sizeof (GtkSettingsPrivate));
}
static void
{
}
-static GtkCssValue *
-gtk_settings_style_provider_get_color (GtkStyleProviderPrivate *provider,
- const char *name)
-{
- GtkSettings *settings = GTK_SETTINGS (provider);
-
- settings_ensure_style (settings);
-
- return _gtk_style_provider_private_get_color (GTK_STYLE_PROVIDER_PRIVATE (settings->priv->style), name);
-}
-
-static void
-gtk_settings_style_provider_lookup (GtkStyleProviderPrivate *provider,
- const GtkCssMatcher *matcher,
- GtkCssLookup *lookup)
-{
- GtkSettings *settings = GTK_SETTINGS (provider);
-
- settings_ensure_style (settings);
-
- _gtk_style_provider_private_lookup (GTK_STYLE_PROVIDER_PRIVATE (settings->priv->style),
- matcher,
- lookup);
-}
-
static GtkCssChange
gtk_settings_style_provider_get_change (GtkStyleProviderPrivate *provider,
- const GtkCssMatcher *matcher)
+ const GtkCssMatcher *matcher)
{
- GtkSettings *settings = GTK_SETTINGS (provider);
+ return 0;
+}
- settings_ensure_style (settings);
- return _gtk_style_provider_private_get_change (GTK_STYLE_PROVIDER_PRIVATE (settings->priv->style),
- matcher);
+static GtkSettings *
+gtk_settings_style_provider_get_settings (GtkStyleProviderPrivate *provider)
+{
+ return GTK_SETTINGS (provider);
}
static void
gtk_settings_provider_private_init (GtkStyleProviderPrivateInterface *iface)
{
- iface->get_color = gtk_settings_style_provider_get_color;
- iface->lookup = gtk_settings_style_provider_lookup;
+ iface->get_settings = gtk_settings_style_provider_get_settings;
iface->get_change = gtk_settings_style_provider_get_change;
}
settings_update_provider (priv->screen, &priv->theme_provider, NULL);
settings_update_provider (priv->screen, &priv->key_theme_provider, NULL);
- g_clear_object (&priv->style);
-
G_OBJECT_CLASS (gtk_settings_parent_class)->finalize (object);
}
static void
settings_invalidate_style (GtkSettings *settings)
{
- GtkSettingsPrivate *priv = settings->priv;
-
- if (priv->style)
- {
- g_object_unref (priv->style);
- priv->style = NULL;
- }
-
_gtk_style_provider_private_changed (GTK_STYLE_PROVIDER_PRIVATE (settings));
}