diff options
author | Matthias Clasen <mclasen@redhat.com> | 2004-09-01 20:30:24 +0000 |
---|---|---|
committer | Matthias Clasen <matthiasc@src.gnome.org> | 2004-09-01 20:30:24 +0000 |
commit | 8189921f446a585398d8df69d589b6003ccbffdb (patch) | |
tree | 92dcb32a0d29888b23f82d91b61615a21b2b5317 /gtk/gtksettings.c | |
parent | 0ac4f2837a6e8d57f79846f4cef65658122264b5 (diff) | |
download | gtk+-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.c | 30 |
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); +} |