[gedit] GeditSettings: rework fonts changes handling, add ::fonts-changed signal
- From: Sébastien Wilmet <swilmet src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gedit] GeditSettings: rework fonts changes handling, add ::fonts-changed signal
- Date: Tue, 24 Nov 2020 17:49:29 +0000 (UTC)
commit 13033affa6b43256c52162053ac43000e028854b
Author: Sébastien Wilmet <swilmet gnome org>
Date: Tue Nov 24 18:17:38 2020 +0100
GeditSettings: rework fonts changes handling, add ::fonts-changed signal
gedit/gedit-settings.c | 154 ++++++++++++++++++++-----------------------------
1 file changed, 63 insertions(+), 91 deletions(-)
---
diff --git a/gedit/gedit-settings.c b/gedit/gedit-settings.c
index a1079f653..bfbfbf938 100644
--- a/gedit/gedit-settings.c
+++ b/gedit/gedit-settings.c
@@ -39,7 +39,13 @@ struct _GeditSettings
GSettings *settings_file_chooser_state;
};
-/* GeditSettings is a singleton. */
+enum
+{
+ SIGNAL_FONTS_CHANGED,
+ N_SIGNALS
+};
+
+static guint signals[N_SIGNALS];
static GeditSettings *singleton = NULL;
G_DEFINE_TYPE (GeditSettings, gedit_settings, G_TYPE_OBJECT)
@@ -77,85 +83,47 @@ gedit_settings_class_init (GeditSettingsClass *klass)
object_class->dispose = gedit_settings_dispose;
object_class->finalize = gedit_settings_finalize;
-}
-
-static void
-set_font (const gchar *font)
-{
- GList *views;
- GList *l;
-
- views = gedit_app_get_views (GEDIT_APP (g_application_get_default ()));
- for (l = views; l != NULL; l = l->next)
- {
- /* Note: we use def=FALSE to avoid GeditView to query dconf. */
- _gedit_view_set_font (GEDIT_VIEW (l->data), FALSE, font);
- }
-
- g_list_free (views);
+ /* This signal is emitted when the return value of [...] has potentially
+ * changed.
+ * TODO: write function to get the font.
+ */
+ signals[SIGNAL_FONTS_CHANGED] =
+ g_signal_new ("fonts-changed",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_FIRST,
+ 0,
+ NULL, NULL, NULL,
+ G_TYPE_NONE, 0);
}
static void
-on_system_font_changed (GSettings *settings,
+system_font_changed_cb (GSettings *settings,
const gchar *key,
GeditSettings *self)
{
-
- gboolean use_default_font;
-
- use_default_font = g_settings_get_boolean (self->settings_editor, GEDIT_SETTINGS_USE_DEFAULT_FONT);
-
- if (use_default_font)
+ if (g_settings_get_boolean (self->settings_editor, GEDIT_SETTINGS_USE_DEFAULT_FONT))
{
- gchar *font;
-
- font = g_settings_get_string (settings, key);
- set_font (font);
- g_free (font);
+ g_signal_emit (self, signals[SIGNAL_FONTS_CHANGED], 0);
}
}
static void
-on_use_default_font_changed (GSettings *settings,
+use_default_font_changed_cb (GSettings *settings,
const gchar *key,
GeditSettings *self)
{
- gboolean use_default_font;
- gchar *font;
-
- use_default_font = g_settings_get_boolean (settings, key);
-
- if (use_default_font)
- {
- font = g_settings_get_string (self->settings_interface, GEDIT_SETTINGS_SYSTEM_FONT);
- }
- else
- {
- font = g_settings_get_string (self->settings_editor, GEDIT_SETTINGS_EDITOR_FONT);
- }
-
- set_font (font);
-
- g_free (font);
+ g_signal_emit (self, signals[SIGNAL_FONTS_CHANGED], 0);
}
static void
-on_editor_font_changed (GSettings *settings,
+editor_font_changed_cb (GSettings *settings,
const gchar *key,
GeditSettings *self)
{
- gboolean use_default_font;
-
- use_default_font = g_settings_get_boolean (self->settings_editor, GEDIT_SETTINGS_USE_DEFAULT_FONT);
-
- if (!use_default_font)
+ if (!g_settings_get_boolean (self->settings_editor, GEDIT_SETTINGS_USE_DEFAULT_FONT))
{
- gchar *font;
-
- font = g_settings_get_string (settings, key);
- set_font (font);
- g_free (font);
+ g_signal_emit (self, signals[SIGNAL_FONTS_CHANGED], 0);
}
}
@@ -242,43 +210,47 @@ on_syntax_highlighting_changed (GSettings *settings,
static void
gedit_settings_init (GeditSettings *self)
{
+ self->settings_interface = g_settings_new ("org.gnome.desktop.interface");
+
self->settings_editor = g_settings_new ("org.gnome.gedit.preferences.editor");
self->settings_ui = g_settings_new ("org.gnome.gedit.preferences.ui");
self->settings_file_chooser_state = g_settings_new ("org.gnome.gedit.state.file-chooser");
- self->settings_interface = g_settings_new ("org.gnome.desktop.interface");
-
- g_signal_connect (self->settings_interface,
- "changed::monospace-font-name",
- G_CALLBACK (on_system_font_changed),
- self);
-
- /* editor changes */
-
- g_signal_connect (self->settings_editor,
- "changed::use-default-font",
- G_CALLBACK (on_use_default_font_changed),
- self);
-
- g_signal_connect (self->settings_editor,
- "changed::editor-font",
- G_CALLBACK (on_editor_font_changed),
- self);
-
- g_signal_connect (self->settings_editor,
- "changed::auto-save",
- G_CALLBACK (on_auto_save_changed),
- self);
-
- g_signal_connect (self->settings_editor,
- "changed::auto-save-interval",
- G_CALLBACK (on_auto_save_interval_changed),
- self);
-
- g_signal_connect (self->settings_editor,
- "changed::syntax-highlighting",
- G_CALLBACK (on_syntax_highlighting_changed),
- self);
+ g_signal_connect_object (self->settings_interface,
+ "changed::" GEDIT_SETTINGS_SYSTEM_FONT,
+ G_CALLBACK (system_font_changed_cb),
+ self,
+ 0);
+
+ g_signal_connect_object (self->settings_editor,
+ "changed::" GEDIT_SETTINGS_USE_DEFAULT_FONT,
+ G_CALLBACK (use_default_font_changed_cb),
+ self,
+ 0);
+
+ g_signal_connect_object (self->settings_editor,
+ "changed::" GEDIT_SETTINGS_EDITOR_FONT,
+ G_CALLBACK (editor_font_changed_cb),
+ self,
+ 0);
+
+ g_signal_connect_object (self->settings_editor,
+ "changed::auto-save",
+ G_CALLBACK (on_auto_save_changed),
+ self,
+ 0);
+
+ g_signal_connect_object (self->settings_editor,
+ "changed::auto-save-interval",
+ G_CALLBACK (on_auto_save_interval_changed),
+ self,
+ 0);
+
+ g_signal_connect_object (self->settings_editor,
+ "changed::syntax-highlighting",
+ G_CALLBACK (on_syntax_highlighting_changed),
+ self,
+ 0);
}
GeditSettings *
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]