mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2025-01-08 11:40:16 +00:00
GtkFontChooserWidget: Listen for fontconfig changes
We were relying on indirectly getting notify when fontconfig configuration changes, by GtkSettings translating the timestamp change into a style-invalidation, which gets fed through the css invalidation machinery. That machinery has gotten good enough at optimizing away redundant changes that it no longer emits ::style-updated in this case. So, instead make the font chooser listen directly to what it cares about: the fontconfig change notification from GtkSettings.
This commit is contained in:
parent
487332c458
commit
07f4c9c315
@ -46,6 +46,7 @@
|
||||
#include "gtktreeselection.h"
|
||||
#include "gtktreeview.h"
|
||||
#include "gtkwidget.h"
|
||||
#include "gtksettings.h"
|
||||
|
||||
/**
|
||||
* SECTION:gtkfontchooserwidget
|
||||
@ -96,6 +97,7 @@ struct _GtkFontChooserWidgetPrivate
|
||||
gpointer filter_data;
|
||||
GDestroyNotify filter_data_destroy;
|
||||
|
||||
GtkSettings *settings;
|
||||
guint last_fontconfig_timestamp;
|
||||
};
|
||||
|
||||
@ -953,10 +955,20 @@ gtk_font_chooser_widget_screen_changed (GtkWidget *widget,
|
||||
GdkScreen *previous_screen)
|
||||
{
|
||||
GtkFontChooserWidget *fontchooser = GTK_FONT_CHOOSER_WIDGET (widget);
|
||||
GtkSettings *settings;
|
||||
|
||||
if (GTK_WIDGET_CLASS (gtk_font_chooser_widget_parent_class)->screen_changed)
|
||||
GTK_WIDGET_CLASS (gtk_font_chooser_widget_parent_class)->screen_changed (widget, previous_screen);
|
||||
|
||||
if (previous_screen)
|
||||
{
|
||||
settings = gtk_settings_get_for_screen (previous_screen);
|
||||
g_signal_handlers_disconnect_by_func (settings, gtk_font_chooser_widget_load_fonts, widget);
|
||||
}
|
||||
settings = gtk_widget_get_settings (widget);
|
||||
g_signal_connect_object (settings, "notify::gtk-fontconfig-timestamp",
|
||||
G_CALLBACK (gtk_font_chooser_widget_load_fonts), widget, G_CONNECT_SWAPPED);
|
||||
|
||||
if (previous_screen == NULL)
|
||||
previous_screen = gdk_screen_get_default ();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user