summaryrefslogtreecommitdiff
path: root/gtk/gtksettings.c
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2004-09-01 20:30:24 +0000
committerMatthias Clasen <matthiasc@src.gnome.org>2004-09-01 20:30:24 +0000
commit8189921f446a585398d8df69d589b6003ccbffdb (patch)
tree92dcb32a0d29888b23f82d91b61615a21b2b5317 /gtk/gtksettings.c
parent0ac4f2837a6e8d57f79846f4cef65658122264b5 (diff)
downloadgtk+-8189921f446a585398d8df69d589b6003ccbffdb.tar.gz
Make it possible to specify additional modules to load via a setting.
2004-09-01 Matthias Clasen <mclasen@redhat.com> Make it possible to specify additional modules to load via a setting. (#117236, Alex Graveley) * gtk/gtkmodules.h: * gtk/gtkmodules.c: New files which contain the module handling code which was previously in gtkmain.[hc]. Additionally, the code now looks for the gtk-modules setting, which can specify additional modules to load. * gtk/gtkmain.c: * gtk/gtkmain.h: Remove all the module handling code. * gtk/gtkdebug.h: Add a debug flag for modules. * gtk/gtk.h: Include gtkmodules.h * gtk/Makefile.am (gtk_public_h_sources): Add gtkmodules.h (gtk_c_sources): Add gtkmodules.c * gtk/gtksettings.c: Add the gtk-modules setting. * gdk/x11/gdkevents-x11.c: Add the Gtk/Modules XSetting.
Diffstat (limited to 'gtk/gtksettings.c')
-rw-r--r--gtk/gtksettings.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/gtk/gtksettings.c b/gtk/gtksettings.c
index cf4a7772f3..0767b35e24 100644
--- a/gtk/gtksettings.c
+++ b/gtk/gtksettings.c
@@ -63,6 +63,7 @@ enum {
PROP_DND_DRAG_THRESHOLD,
PROP_FONT_NAME,
PROP_ICON_SIZES,
+ PROP_MODULES,
PROP_XFT_ANTIALIAS,
PROP_XFT_HINTING,
PROP_XFT_HINTSTYLE,
@@ -89,6 +90,8 @@ static guint settings_install_property_parser (GtkSettingsClass *class,
GParamSpec *pspec,
GtkRcPropertyParser parser);
static void settings_update_double_click (GtkSettings *settings);
+static void settings_update_modules (GtkSettings *settings);
+
/* --- variables --- */
@@ -360,6 +363,15 @@ gtk_settings_class_init (GtkSettingsClass *class)
NULL);
g_assert (result == PROP_ICON_SIZES);
+ result = settings_install_property_parser (class,
+ g_param_spec_string ("gtk-modules",
+ P_("GTK Modules"),
+ P_("List of currently active GTK modules"),
+ NULL,
+ G_PARAM_READWRITE),
+ NULL);
+ g_assert (result == PROP_MODULES);
+
#ifdef GDK_WINDOWING_X11
result = settings_install_property_parser (class,
g_param_spec_int ("gtk-xft-antialias",
@@ -584,6 +596,9 @@ gtk_settings_notify (GObject *object,
switch (property_id)
{
+ case PROP_MODULES:
+ settings_update_modules (settings);
+ break;
case PROP_DOUBLE_CLICK_TIME:
case PROP_DOUBLE_CLICK_DISTANCE:
settings_update_double_click (settings);
@@ -1363,3 +1378,18 @@ settings_update_double_click (GtkSettings *settings)
gdk_display_set_double_click_distance (display, double_click_distance);
}
}
+
+static void
+settings_update_modules (GtkSettings *settings)
+{
+ GdkDisplay *display = gdk_screen_get_display (settings->screen);
+ gchar *modules;
+
+ g_object_get (settings,
+ "gtk-modules", &modules,
+ NULL);
+
+ _gtk_modules_settings_changed (settings, modules);
+
+ g_free (modules);
+}