PROP_RECENT_FILES_ENABLED,
PROP_LONG_PRESS_TIME,
PROP_KEYNAV_USE_CARET,
- PROP_OVERLAY_SCROLLING
+ PROP_OVERLAY_SCROLLING,
+
+ NUM_PROPERTIES
};
+static GParamSpec *pspecs[NUM_PROPERTIES] = { NULL, };
+
/* --- prototypes --- */
static void gtk_settings_provider_iface_init (GtkStyleProviderInterface *iface);
GParamSpec *pspec);
static void gtk_settings_notify (GObject *object,
GParamSpec *pspec);
-static guint settings_install_property_parser (GtkSettingsClass *class,
- GParamSpec *pspec);
static void settings_update_double_click (GtkSettings *settings);
static void settings_update_cursor_theme (GtkSettings *settings);
/* --- variables --- */
static GQuark quark_gtk_settings = 0;
-static guint class_n_properties = 0;
static GPtrArray *display_settings;
static void
gtk_settings_init (GtkSettings *settings)
{
- GParamSpec **pspecs, **p;
- guint n_pspecs;
guint i = 0;
char *path;
const char * const *config_dirs;
settings->style_cascades = g_slist_prepend (NULL, _gtk_style_cascade_new ());
settings->theme_provider = gtk_css_provider_new ();
- /* build up property array for all yet existing properties and queue
- * notification for them (at least notification for internal properties
- * will instantly be caught)
- */
- pspecs = g_object_class_list_properties (G_OBJECT_GET_CLASS (settings), &n_pspecs);
- settings->property_values = g_new0 (GtkSettingsPropertyValue, n_pspecs);
+ settings->property_values = g_new0 (GtkSettingsPropertyValue, NUM_PROPERTIES - 1);
g_object_freeze_notify (G_OBJECT (settings));
- i = 0;
- for (p = pspecs; *p; p++)
+ for (i = 1; i < NUM_PROPERTIES; i++)
{
- GParamSpec *pspec = *p;
+ GParamSpec *pspec = pspecs[i];
GType value_type = G_PARAM_SPEC_VALUE_TYPE (pspec);
- if (pspec->owner_type != G_OBJECT_TYPE (settings))
- continue;
- g_value_init (&settings->property_values[i].value, value_type);
- g_param_value_set_default (pspec, &settings->property_values[i].value);
+ g_value_init (&settings->property_values[i - 1].value, value_type);
+ g_param_value_set_default (pspec, &settings->property_values[i - 1].value);
g_object_notify_by_pspec (G_OBJECT (settings), pspec);
- settings->property_values[i].source = GTK_SETTINGS_SOURCE_DEFAULT;
- i++;
+ settings->property_values[i - 1].source = GTK_SETTINGS_SOURCE_DEFAULT;
}
- g_free (pspecs);
path = g_build_filename (_gtk_get_data_prefix (), "share", "gtk-4.0", "settings.ini", NULL);
gtk_settings_load_from_key_file (settings, path, GTK_SETTINGS_SOURCE_DEFAULT);
* The maximum time to allow between two clicks for them to be considered
* a double click, in milliseconds.
*/
- result = settings_install_property_parser (class,
- g_param_spec_int ("gtk-double-click-time", NULL, NULL,
- 0, G_MAXINT, 400,
- GTK_PARAM_READWRITE));
- g_assert (result == PROP_DOUBLE_CLICK_TIME);
+ pspecs[PROP_DOUBLE_CLICK_TIME] = g_param_spec_int ("gtk-double-click-time", NULL, NULL,
+ 0, G_MAXINT, 400,
+ GTK_PARAM_READWRITE);
/**
* GtkSettings:gtk-double-click-distance:
* The maximum distance allowed between two clicks for them to be considered
* a double click, in pixels.
*/
- result = settings_install_property_parser (class,
- g_param_spec_int ("gtk-double-click-distance", NULL, NULL,
- 0, G_MAXINT, 5,
- GTK_PARAM_READWRITE));
- g_assert (result == PROP_DOUBLE_CLICK_DISTANCE);
+ pspecs[PROP_DOUBLE_CLICK_DISTANCE] = g_param_spec_int ("gtk-double-click-distance", NULL, NULL,
+ 0, G_MAXINT, 5,
+ GTK_PARAM_READWRITE);
/**
* GtkSettings:gtk-cursor-blink:
* Also see the [property@Gtk.Settings:gtk-cursor-blink-timeout] setting,
* which allows more flexible control over cursor blinking.
*/
- result = settings_install_property_parser (class,
- g_param_spec_boolean ("gtk-cursor-blink", NULL, NULL,
- TRUE,
- GTK_PARAM_READWRITE));
- g_assert (result == PROP_CURSOR_BLINK);
+ pspecs[PROP_CURSOR_BLINK] = g_param_spec_boolean ("gtk-cursor-blink", NULL, NULL,
+ TRUE,
+ GTK_PARAM_READWRITE);
/**
* GtkSettings:gtk-cursor-blink-time:
*
* Length of the cursor blink cycle, in milliseconds.
*/
- result = settings_install_property_parser (class,
- g_param_spec_int ("gtk-cursor-blink-time", NULL, NULL,
- 100, G_MAXINT, 1200,
- GTK_PARAM_READWRITE));
- g_assert (result == PROP_CURSOR_BLINK_TIME);
+ pspecs[PROP_CURSOR_BLINK_TIME] = g_param_spec_int ("gtk-cursor-blink-time", NULL, NULL,
+ 100, G_MAXINT, 1200,
+ GTK_PARAM_READWRITE);
/**
* GtkSettings:gtk-cursor-blink-timeout:
* Setting this to zero has the same effect as setting
* [property@Gtk.Settings:gtk-cursor-blink] to %FALSE.
*/
- result = settings_install_property_parser (class,
- g_param_spec_int ("gtk-cursor-blink-timeout", NULL, NULL,
- 1, G_MAXINT, 10,
- GTK_PARAM_READWRITE));
- g_assert (result == PROP_CURSOR_BLINK_TIMEOUT);
+ pspecs[PROP_CURSOR_BLINK_TIMEOUT] = g_param_spec_int ("gtk-cursor-blink-timeout", NULL, NULL,
+ 1, G_MAXINT, 10,
+ GTK_PARAM_READWRITE);
/**
* GtkSettings:gtk-split-cursor:
* Whether two cursors should be displayed for mixed left-to-right and
* right-to-left text.
*/
- result = settings_install_property_parser (class,
- g_param_spec_boolean ("gtk-split-cursor", NULL, NULL,
- FALSE,
- GTK_PARAM_READWRITE));
- g_assert (result == PROP_SPLIT_CURSOR);
+ pspecs[PROP_SPLIT_CURSOR] = g_param_spec_boolean ("gtk-split-cursor", NULL, NULL,
+ FALSE,
+ GTK_PARAM_READWRITE);
/**
* GtkSettings:gtk-cursor-aspect-ratio:
*
* The aspect ratio of the text caret.
*/
- result = settings_install_property_parser (class,
- g_param_spec_double ("gtk-cursor-aspect-ratio", NULL, NULL,
- 0.0, 1.0, 0.04,
- GTK_PARAM_READWRITE));
- g_assert (result == PROP_CURSOR_ASPECT_RATIO);
+ pspecs[PROP_CURSOR_ASPECT_RATIO] = g_param_spec_double ("gtk-cursor-aspect-ratio", NULL, NULL,
+ 0.0, 1.0, 0.04,
+ GTK_PARAM_READWRITE);
/**
* GtkSettings:gtk-theme-name:
* See [class@Gtk.CssProvider] for details about how
* GTK finds the CSS stylesheet for a theme.
*/
- result = settings_install_property_parser (class,
- g_param_spec_string ("gtk-theme-name", NULL, NULL,
- DEFAULT_THEME_NAME,
- GTK_PARAM_READWRITE));
- g_assert (result == PROP_THEME_NAME);
+ pspecs[PROP_THEME_NAME] = g_param_spec_string ("gtk-theme-name", NULL, NULL,
+ DEFAULT_THEME_NAME,
+ GTK_PARAM_READWRITE);
/**
* GtkSettings:gtk-icon-theme-name:
* See [class@Gtk.IconTheme] for details about how
* GTK handles icon themes.
*/
- result = settings_install_property_parser (class,
- g_param_spec_string ("gtk-icon-theme-name", NULL, NULL,
- DEFAULT_ICON_THEME,
- GTK_PARAM_READWRITE));
- g_assert (result == PROP_ICON_THEME_NAME);
+ pspecs[PROP_ICON_THEME_NAME] = g_param_spec_string ("gtk-icon-theme-name", NULL, NULL,
+ DEFAULT_ICON_THEME,
+ GTK_PARAM_READWRITE);
/**
* GtkSettings:gtk-dnd-drag-threshold:
*
* The number of pixels the cursor can move before dragging.
*/
- result = settings_install_property_parser (class,
- g_param_spec_int ("gtk-dnd-drag-threshold", NULL, NULL,
- 1, G_MAXINT, 8,
- GTK_PARAM_READWRITE));
- g_assert (result == PROP_DND_DRAG_THRESHOLD);
+ pspecs[PROP_DND_DRAG_THRESHOLD] = g_param_spec_int ("gtk-dnd-drag-threshold", NULL, NULL,
+ 1, G_MAXINT, 8,
+ GTK_PARAM_READWRITE);
/**
* GtkSettings:gtk-font-name:
*
* GTK uses the family name and size from this string.
*/
- result = settings_install_property_parser (class,
- g_param_spec_string ("gtk-font-name", NULL, NULL,
- "Sans 10",
- GTK_PARAM_READWRITE));
- g_assert (result == PROP_FONT_NAME);
+ pspecs[PROP_FONT_NAME] = g_param_spec_string ("gtk-font-name", NULL, NULL,
+ "Sans 10",
+ GTK_PARAM_READWRITE);
/**
* GtkSettings:gtk-xft-antialias:
*
* The values are 0 for no, 1 for yes, or -1 for the system default.
*/
- result = settings_install_property_parser (class,
- g_param_spec_int ("gtk-xft-antialias", NULL, NULL,
- -1, 1, -1,
- GTK_PARAM_READWRITE));
-
- g_assert (result == PROP_XFT_ANTIALIAS);
+ pspecs[PROP_XFT_ANTIALIAS] = g_param_spec_int ("gtk-xft-antialias", NULL, NULL,
+ -1, 1, -1,
+ GTK_PARAM_READWRITE);
/**
* GtkSettings:gtk-xft-hinting:
*
* The values are 0 for no, 1 for yes, or -1 for the system default.
*/
- result = settings_install_property_parser (class,
- g_param_spec_int ("gtk-xft-hinting", NULL, NULL,
- -1, 1, -1,
- GTK_PARAM_READWRITE));
-
- g_assert (result == PROP_XFT_HINTING);
+ pspecs[PROP_XFT_HINTING] = g_param_spec_int ("gtk-xft-hinting", NULL, NULL,
+ -1, 1, -1,
+ GTK_PARAM_READWRITE);
/**
* GtkSettings:gtk-xft-hintstyle:
* The possible vaues are hintnone, hintslight,
* hintmedium, hintfull.
*/
- result = settings_install_property_parser (class,
- g_param_spec_string ("gtk-xft-hintstyle", NULL, NULL,
- NULL,
- GTK_PARAM_READWRITE));
-
- g_assert (result == PROP_XFT_HINTSTYLE);
+ pspecs[PROP_XFT_HINTSTYLE] = g_param_spec_string ("gtk-xft-hintstyle", NULL, NULL,
+ NULL,
+ GTK_PARAM_READWRITE);
/**
* GtkSettings:gtk-xft-rgba:
*
* The possible values are none, rgb, bgr, vrgb, vbgr.
*/
- result = settings_install_property_parser (class,
- g_param_spec_string ("gtk-xft-rgba", NULL, NULL,
- NULL,
- GTK_PARAM_READWRITE));
+ pspecs[PROP_XFT_RGBA] = g_param_spec_string ("gtk-xft-rgba", NULL, NULL,
+ NULL,
+ GTK_PARAM_READWRITE);
- g_assert (result == PROP_XFT_RGBA);
-
-
/**
* GtkSettings:gtk-xft-dpi:
*
*
* -1 to use the default value.
*/
- result = settings_install_property_parser (class,
- g_param_spec_int ("gtk-xft-dpi", NULL, NULL,
- -1, 1024*1024, -1,
- GTK_PARAM_READWRITE));
-
- g_assert (result == PROP_XFT_DPI);
+ pspecs[PROP_XFT_DPI] = g_param_spec_int ("gtk-xft-dpi", NULL, NULL,
+ -1, 1024*1024, -1,
+ GTK_PARAM_READWRITE);
/**
* GtkSettings:gtk-hint-font-metrics:
*
* Since: 4.6
*/
- result = settings_install_property_parser (class,
- g_param_spec_boolean ("gtk-hint-font-metrics", NULL, NULL,
- FALSE,
- GTK_PARAM_READWRITE));
-
- g_assert (result == PROP_HINT_FONT_METRICS);
+ pspecs[PROP_HINT_FONT_METRICS] = g_param_spec_boolean ("gtk-hint-font-metrics", NULL, NULL,
+ FALSE,
+ GTK_PARAM_READWRITE);
/**
* GtkSettings:gtk-cursor-theme-name:
*
* Use %NULL to use the default theme.
*/
- result = settings_install_property_parser (class,
- g_param_spec_string ("gtk-cursor-theme-name", NULL, NULL,
- NULL,
- GTK_PARAM_READWRITE));
- g_assert (result == PROP_CURSOR_THEME_NAME);
+ pspecs[PROP_CURSOR_THEME_NAME] = g_param_spec_string ("gtk-cursor-theme-name", NULL, NULL,
+ NULL,
+ GTK_PARAM_READWRITE);
/**
* GtkSettings:gtk-cursor-theme-size:
*
* 0 means to use the default size.
*/
- result = settings_install_property_parser (class,
- g_param_spec_int ("gtk-cursor-theme-size", NULL, NULL,
- 0, 128, 0,
- GTK_PARAM_READWRITE));
-
- g_assert (result == PROP_CURSOR_THEME_SIZE);
+ pspecs[PROP_CURSOR_THEME_SIZE] = g_param_spec_int ("gtk-cursor-theme-size", NULL, NULL,
+ 0, 128, 0,
+ GTK_PARAM_READWRITE);
/**
* GtkSettings:gtk-alternative-button-order:
*
* Whether buttons in dialogs should use the alternative button order.
*/
- result = settings_install_property_parser (class,
- g_param_spec_boolean ("gtk-alternative-button-order", NULL, NULL,
- FALSE,
- GTK_PARAM_READWRITE));
- g_assert (result == PROP_ALTERNATIVE_BUTTON_ORDER);
+ pspecs[PROP_ALTERNATIVE_BUTTON_ORDER] = g_param_spec_boolean ("gtk-alternative-button-order", NULL, NULL,
+ FALSE,
+ GTK_PARAM_READWRITE);
/**
* GtkSettings:gtk-alternative-sort-arrows:
* By default an arrow pointing down means the column is sorted
* in ascending order. When set to %TRUE, this order will be inverted.
*/
- result = settings_install_property_parser (class,
- g_param_spec_boolean ("gtk-alternative-sort-arrows", NULL, NULL,
- FALSE,
- GTK_PARAM_READWRITE));
- g_assert (result == PROP_ALTERNATIVE_SORT_ARROWS);
+ pspecs[PROP_ALTERNATIVE_SORT_ARROWS] = g_param_spec_boolean ("gtk-alternative-sort-arrows", NULL, NULL,
+ FALSE,
+ GTK_PARAM_READWRITE);
/**
* GtkSettings:gtk-enable-animations:
*
* Whether to enable toolkit-wide animations.
*/
- result = settings_install_property_parser (class,
- g_param_spec_boolean ("gtk-enable-animations", NULL, NULL,
- TRUE,
- GTK_PARAM_READWRITE));
-
- g_assert (result == PROP_ENABLE_ANIMATIONS);
+ pspecs[PROP_ENABLE_ANIMATIONS] = g_param_spec_boolean ("gtk-enable-animations", NULL, NULL,
+ TRUE,
+ GTK_PARAM_READWRITE);
/**
* GtkSettings:gtk-error-bell:
* windowing system may offer ways to configure the error bell in many
* ways, such as flashing the window or similar visual effects.
*/
- result = settings_install_property_parser (class,
- g_param_spec_boolean ("gtk-error-bell", NULL, NULL,
- TRUE,
- GTK_PARAM_READWRITE));
-
- g_assert (result == PROP_ERROR_BELL);
+ pspecs[PROP_ERROR_BELL] = g_param_spec_boolean ("gtk-error-bell", NULL, NULL,
+ TRUE,
+ GTK_PARAM_READWRITE);
/**
* GtkSettings:gtk-print-backends:
* Available print backends depend on the GTK installation,
* and may include "file", "cups", "lpr" or "papi".
*/
- result = settings_install_property_parser (class,
- g_param_spec_string ("gtk-print-backends", NULL, NULL,
- GTK_PRINT_BACKENDS,
- GTK_PARAM_READWRITE));
- g_assert (result == PROP_PRINT_BACKENDS);
+ pspecs[PROP_PRINT_BACKENDS] = g_param_spec_string ("gtk-print-backends", NULL, NULL,
+ GTK_PRINT_BACKENDS,
+ GTK_PARAM_READWRITE);
/**
* GtkSettings:gtk-print-preview-command:
* The preview application is responsible for removing the pdf
* file and the print settings file when it is done.
*/
- result = settings_install_property_parser (class,
- g_param_spec_string ("gtk-print-preview-command", NULL, NULL,
- PRINT_PREVIEW_COMMAND,
- GTK_PARAM_READWRITE));
- g_assert (result == PROP_PRINT_PREVIEW_COMMAND);
+ pspecs[PROP_PRINT_PREVIEW_COMMAND] = g_param_spec_string ("gtk-print-preview-command", NULL, NULL,
+ PRINT_PREVIEW_COMMAND,
+ GTK_PARAM_READWRITE);
/**
* GtkSettings:gtk-enable-accels:
* Whether menu items should have visible accelerators which can be
* activated.
*/
- result = settings_install_property_parser (class,
- g_param_spec_boolean ("gtk-enable-accels", NULL, NULL,
- TRUE,
- GTK_PARAM_READWRITE));
- g_assert (result == PROP_ENABLE_ACCELS);
+ pspecs[PROP_ENABLE_ACCELS] = g_param_spec_boolean ("gtk-enable-accels", NULL, NULL,
+ TRUE,
+ GTK_PARAM_READWRITE);
/**
* GtkSettings:gtk-im-module:
*
* See [class@Gtk.IMContext].
*/
- result = settings_install_property_parser (class,
- g_param_spec_string ("gtk-im-module", NULL, NULL,
- NULL,
- GTK_PARAM_READWRITE));
- g_assert (result == PROP_IM_MODULE);
+ pspecs[PROP_IM_MODULE] = g_param_spec_string ("gtk-im-module", NULL, NULL,
+ NULL,
+ GTK_PARAM_READWRITE);
/**
* GtkSettings:gtk-recent-files-max-age:
* If set to 0, the list will always be empty; if set to -1, no
* item will be removed.
*/
- result = settings_install_property_parser (class,
- g_param_spec_int ("gtk-recent-files-max-age", NULL, NULL,
- -1, G_MAXINT,
- 30,
- GTK_PARAM_READWRITE));
- g_assert (result == PROP_RECENT_FILES_MAX_AGE);
+ pspecs[PROP_RECENT_FILES_MAX_AGE] = g_param_spec_int ("gtk-recent-files-max-age", NULL, NULL,
+ -1, G_MAXINT,
+ 30,
+ GTK_PARAM_READWRITE);
/**
* GtkSettings:gtk-fontconfig-timestamp:
*
* Timestamp of the current fontconfig configuration.
*/
- result = settings_install_property_parser (class,
- g_param_spec_uint ("gtk-fontconfig-timestamp", NULL, NULL,
- 0, G_MAXUINT, 0,
- GTK_PARAM_READWRITE));
-
- g_assert (result == PROP_FONTCONFIG_TIMESTAMP);
+ pspecs[PROP_FONTCONFIG_TIMESTAMP] = g_param_spec_uint ("gtk-fontconfig-timestamp", NULL, NULL,
+ 0, G_MAXUINT, 0,
+ GTK_PARAM_READWRITE);
/**
* GtkSettings:gtk-sound-theme-name:
* GTK itself does not support event sounds, you have to use
* a loadable module like the one that comes with libcanberra.
*/
- result = settings_install_property_parser (class,
- g_param_spec_string ("gtk-sound-theme-name", NULL, NULL,
- "freedesktop",
- GTK_PARAM_READWRITE));
- g_assert (result == PROP_SOUND_THEME_NAME);
+ pspecs[PROP_SOUND_THEME_NAME] = g_param_spec_string ("gtk-sound-theme-name", NULL, NULL,
+ "freedesktop",
+ GTK_PARAM_READWRITE);
/**
* GtkSettings:gtk-enable-input-feedback-sounds:
* GTK itself does not support event sounds, you have to use a loadable
* module like the one that comes with libcanberra.
*/
- result = settings_install_property_parser (class,
- g_param_spec_boolean ("gtk-enable-input-feedback-sounds", NULL, NULL,
- TRUE,
- GTK_PARAM_READWRITE));
- g_assert (result == PROP_ENABLE_INPUT_FEEDBACK_SOUNDS);
+ pspecs[PROP_ENABLE_INPUT_FEEDBACK_SOUNDS] = g_param_spec_boolean ("gtk-enable-input-feedback-sounds", NULL, NULL,
+ TRUE,
+ GTK_PARAM_READWRITE);
/**
* GtkSettings:gtk-enable-event-sounds:
* GTK itself does not support event sounds, you have to use a loadable
* module like the one that comes with libcanberra.
*/
- result = settings_install_property_parser (class,
- g_param_spec_boolean ("gtk-enable-event-sounds", NULL, NULL,
- TRUE,
- GTK_PARAM_READWRITE));
- g_assert (result == PROP_ENABLE_EVENT_SOUNDS);
+ pspecs[PROP_ENABLE_EVENT_SOUNDS] = g_param_spec_boolean ("gtk-enable-event-sounds", NULL, NULL,
+ TRUE,
+ GTK_PARAM_READWRITE);
/**
* GtkSettings:gtk-primary-button-warps-slider:
* be available by holding Shift and primary-clicking, or clicking the middle
* mouse button.
*/
- result = settings_install_property_parser (class,
- g_param_spec_boolean ("gtk-primary-button-warps-slider", NULL, NULL,
+ pspecs[PROP_PRIMARY_BUTTON_WARPS_SLIDER] = g_param_spec_boolean ("gtk-primary-button-warps-slider", NULL, NULL,
TRUE,
- GTK_PARAM_READWRITE));
- g_assert (result == PROP_PRIMARY_BUTTON_WARPS_SLIDER);
+ GTK_PARAM_READWRITE);
/**
* GtkSettings:gtk-application-prefer-dark-theme:
* are white/light and the dark chrome creates too much contrast
* (web browser, text editor...).
*/
- result = settings_install_property_parser (class,
- g_param_spec_boolean ("gtk-application-prefer-dark-theme", NULL, NULL,
- FALSE,
- GTK_PARAM_READWRITE));
- g_assert (result == PROP_APPLICATION_PREFER_DARK_THEME);
+ pspecs[PROP_APPLICATION_PREFER_DARK_THEME] = g_param_spec_boolean ("gtk-application-prefer-dark-theme", NULL, NULL,
+ FALSE,
+ GTK_PARAM_READWRITE);
/**
* GtkSettings:gkt-entry-select-on-focus:
*
* Whether to select the contents of an entry when it is focused.
*/
- result = settings_install_property_parser (class,
- g_param_spec_boolean ("gtk-entry-select-on-focus", NULL, NULL,
- TRUE,
- GTK_PARAM_READWRITE));
- g_assert (result == PROP_ENTRY_SELECT_ON_FOCUS);
+ pspecs[PROP_ENTRY_SELECT_ON_FOCUS] = g_param_spec_boolean ("gtk-entry-select-on-focus", NULL, NULL,
+ TRUE,
+ GTK_PARAM_READWRITE);
/**
* GtkSettings:gtk-entry-password-hint-timeout:
* This value is in milliseconds. 0 disables showing the
* last char. 600 is a good value for enabling it.
*/
- result = settings_install_property_parser (class,
- g_param_spec_uint ("gtk-entry-password-hint-timeout", NULL, NULL,
+ pspecs[PROP_ENTRY_PASSWORD_HINT_TIMEOUT] = g_param_spec_uint ("gtk-entry-password-hint-timeout", NULL, NULL,
0, G_MAXUINT,
0,
- GTK_PARAM_READWRITE));
- g_assert (result == PROP_ENTRY_PASSWORD_HINT_TIMEOUT);
+ GTK_PARAM_READWRITE);
/**
* GtkSettings:gtk-label-select-on-focus:
* Whether to select the contents of a selectable
* label when it is focused.
*/
- result = settings_install_property_parser (class,
- g_param_spec_boolean ("gtk-label-select-on-focus", NULL, NULL,
- TRUE,
- GTK_PARAM_READWRITE));
- g_assert (result == PROP_LABEL_SELECT_ON_FOCUS);
+ pspecs[PROP_LABEL_SELECT_ON_FOCUS] = g_param_spec_boolean ("gtk-label-select-on-focus", NULL, NULL,
+ TRUE,
+ GTK_PARAM_READWRITE);
/**
* GtkSettings:gtk-shell-shows-app-menu:
* Set to %TRUE if the desktop environment is displaying
* the app menu, %FALSE if the app should display it itself.
*/
- result = settings_install_property_parser (class,
- g_param_spec_boolean ("gtk-shell-shows-app-menu", NULL, NULL,
- FALSE, GTK_PARAM_READWRITE));
- g_assert (result == PROP_SHELL_SHOWS_APP_MENU);
+ pspecs[PROP_SHELL_SHOWS_APP_MENU] = g_param_spec_boolean ("gtk-shell-shows-app-menu", NULL, NULL,
+ FALSE,
+ GTK_PARAM_READWRITE);
/**
* GtkSettings:gtk-shell-shows-menubar:
* Set to %TRUE if the desktop environment is displaying
* the menubar, %FALSE if the app should display it itself.
*/
- result = settings_install_property_parser (class,
- g_param_spec_boolean ("gtk-shell-shows-menubar", NULL, NULL,
- FALSE, GTK_PARAM_READWRITE));
- g_assert (result == PROP_SHELL_SHOWS_MENUBAR);
+ pspecs[PROP_SHELL_SHOWS_MENUBAR] = g_param_spec_boolean ("gtk-shell-shows-menubar", NULL, NULL,
+ FALSE,
+ GTK_PARAM_READWRITE);
/**
* GtkSettings:gtk-shell-shows-desktop:
* Set to %TRUE if the desktop environment is displaying
* the desktop folder, %FALSE if not.
*/
- result = settings_install_property_parser (class,
- g_param_spec_boolean ("gtk-shell-shows-desktop", NULL, NULL,
- TRUE, GTK_PARAM_READWRITE));
- g_assert (result == PROP_SHELL_SHOWS_DESKTOP);
+ pspecs[PROP_SHELL_SHOWS_DESKTOP] = g_param_spec_boolean ("gtk-shell-shows-desktop", NULL, NULL,
+ TRUE,
+ GTK_PARAM_READWRITE);
/**
* GtkSettings:gtk-decoration-layout:
* Also note that the setting can be overridden with the
* [property@Gtk.HeaderBar:decoration-layout] property.
*/
- result = settings_install_property_parser (class,
- g_param_spec_string ("gtk-decoration-layout", NULL, NULL,
- "menu:minimize,maximize,close", GTK_PARAM_READWRITE));
- g_assert (result == PROP_DECORATION_LAYOUT);
+ pspecs[PROP_DECORATION_LAYOUT] = g_param_spec_string ("gtk-decoration-layout", NULL, NULL,
+ "menu:minimize,maximize,close",
+ GTK_PARAM_READWRITE);
/**
* GtkSettings:gtk-titlebar-double-click:
* Recognized actions are minimize, toggle-maximize, menu, lower
* or none.
*/
- result = settings_install_property_parser (class,
- g_param_spec_string ("gtk-titlebar-double-click", NULL, NULL,
- "toggle-maximize", GTK_PARAM_READWRITE));
- g_assert (result == PROP_TITLEBAR_DOUBLE_CLICK);
+ pspecs[PROP_TITLEBAR_DOUBLE_CLICK] = g_param_spec_string ("gtk-titlebar-double-click", NULL, NULL,
+ "toggle-maximize",
+ GTK_PARAM_READWRITE);
/**
* GtkSettings:gtk-titlebar-middle-click:
* Recognized actions are minimize, toggle-maximize, menu, lower
* or none.
*/
- result = settings_install_property_parser (class,
- g_param_spec_string ("gtk-titlebar-middle-click", NULL, NULL,
- "none", GTK_PARAM_READWRITE));
- g_assert (result == PROP_TITLEBAR_MIDDLE_CLICK);
+ pspecs[PROP_TITLEBAR_MIDDLE_CLICK] = g_param_spec_string ("gtk-titlebar-middle-click", NULL, NULL,
+ "none",
+ GTK_PARAM_READWRITE);
/**
* GtkSettings:gtk-titlebar-right-click:
* Recognized actions are minimize, toggle-maximize, menu, lower
* or none.
*/
- result = settings_install_property_parser (class,
- g_param_spec_string ("gtk-titlebar-right-click", NULL, NULL,
- "menu", GTK_PARAM_READWRITE));
- g_assert (result == PROP_TITLEBAR_RIGHT_CLICK);
+ pspecs[PROP_TITLEBAR_RIGHT_CLICK] = g_param_spec_string ("gtk-titlebar-right-click", NULL, NULL,
+ "menu",
+ GTK_PARAM_READWRITE);
/**
* GtkSettings:gtk-dialogs-use-header:
* This setting does not affect custom dialogs using `GtkDialog`
* directly, or message dialogs.
*/
- result = settings_install_property_parser (class,
- g_param_spec_boolean ("gtk-dialogs-use-header", NULL, NULL,
- FALSE,
- GTK_PARAM_READWRITE));
- g_assert (result == PROP_DIALOGS_USE_HEADER);
+ pspecs[PROP_DIALOGS_USE_HEADER] = g_param_spec_boolean ("gtk-dialogs-use-header", NULL, NULL,
+ FALSE,
+ GTK_PARAM_READWRITE);
/**
* GtkSettings:gtk-enable-primary-paste:
* Whether a middle click on a mouse should paste the
* 'PRIMARY' clipboard content at the cursor location.
*/
- result = settings_install_property_parser (class,
- g_param_spec_boolean ("gtk-enable-primary-paste", NULL, NULL,
- TRUE,
- GTK_PARAM_READWRITE));
- g_assert (result == PROP_ENABLE_PRIMARY_PASTE);
+ pspecs[PROP_ENABLE_PRIMARY_PASTE] = g_param_spec_boolean ("gtk-enable-primary-paste", NULL, NULL,
+ TRUE,
+ GTK_PARAM_READWRITE);
/**
* GtkSettings:gtk-recent-files-enabled:
*
* If set to %FALSE, the list will always be empty.
*/
- result = settings_install_property_parser (class,
- g_param_spec_boolean ("gtk-recent-files-enabled", NULL, NULL,
- TRUE,
- GTK_PARAM_READWRITE));
- g_assert (result == PROP_RECENT_FILES_ENABLED);
+ pspecs[PROP_RECENT_FILES_ENABLED] = g_param_spec_boolean ("gtk-recent-files-enabled", NULL, NULL,
+ TRUE,
+ GTK_PARAM_READWRITE);
/**
* GtkSettings:gtk-long-press-time:
*
* See [class@Gtk.GestureLongPress].
*/
- result = settings_install_property_parser (class,
- g_param_spec_uint ("gtk-long-press-time", NULL, NULL,
- 0, G_MAXINT, 500,
- GTK_PARAM_READWRITE));
- g_assert (result == PROP_LONG_PRESS_TIME);
+ pspecs[PROP_LONG_PRESS_TIME] = g_param_spec_uint ("gtk-long-press-time", NULL, NULL,
+ 0, G_MAXINT, 500,
+ GTK_PARAM_READWRITE);
/**
* GtkSettings:gtk-keynav-use-caret:
*
* This is useful when using a screen reader.
*/
- result = settings_install_property_parser (class,
- g_param_spec_boolean ("gtk-keynav-use-caret", NULL, NULL,
- FALSE,
- GTK_PARAM_READWRITE));
- g_assert (result == PROP_KEYNAV_USE_CARET);
+ pspecs[PROP_KEYNAV_USE_CARET] = g_param_spec_boolean ("gtk-keynav-use-caret", NULL, NULL,
+ FALSE,
+ GTK_PARAM_READWRITE);
/**
* GtkSettings:gtk-overlay-scrolling:
* If this is set to %FALSE, scrolled windows will have permanent
* scrollbars.
*/
- result = settings_install_property_parser (class,
- g_param_spec_boolean ("gtk-overlay-scrolling", NULL, NULL,
- TRUE,
- GTK_PARAM_READWRITE));
- g_assert (result == PROP_OVERLAY_SCROLLING);
+ pspecs[PROP_OVERLAY_SCROLLING] = g_param_spec_boolean ("gtk-overlay-scrolling", NULL, NULL,
+ TRUE,
+ GTK_PARAM_READWRITE);
+
+ g_object_class_install_properties (gobject_class, NUM_PROPERTIES, pspecs);
}
static GtkSettings *
GtkSettings *settings = GTK_SETTINGS (object);
guint i;
- for (i = 0; i < class_n_properties; i++)
- g_value_unset (&settings->property_values[i].value);
+ for (i = 1; i < NUM_PROPERTIES; i++)
+ g_value_unset (&settings->property_values[i - 1].value);
g_free (settings->property_values);
g_datalist_clear (&settings->queued_settings);
g_value_unset (&tmp_value);
}
-static guint
-settings_install_property_parser (GtkSettingsClass *class,
- GParamSpec *pspec)
-{
- switch (G_TYPE_FUNDAMENTAL (G_PARAM_SPEC_VALUE_TYPE (pspec)))
- {
- case G_TYPE_BOOLEAN:
- case G_TYPE_UCHAR:
- case G_TYPE_CHAR:
- case G_TYPE_UINT:
- case G_TYPE_INT:
- case G_TYPE_ULONG:
- case G_TYPE_LONG:
- case G_TYPE_FLOAT:
- case G_TYPE_DOUBLE:
- case G_TYPE_STRING:
- case G_TYPE_ENUM:
- break;
- case G_TYPE_BOXED:
- default:
- g_warning (G_STRLOC ": no parser for property \"%s\" of type '%s'",
- pspec->name, g_type_name (G_PARAM_SPEC_VALUE_TYPE (pspec)));
- return 0;
- }
- if (g_object_class_find_property (G_OBJECT_CLASS (class), pspec->name))
- {
- g_warning (G_STRLOC ": an rc-data property \"%s\" already exists",
- pspec->name);
- return 0;
- }
-
- g_object_class_install_property (G_OBJECT_CLASS (class), ++class_n_properties, pspec);
-
- return class_n_properties;
-}
-
static void
free_value (gpointer data)
{
static void
settings_update_xsettings (GtkSettings *settings)
{
- GParamSpec **pspecs;
int i;
- pspecs = g_object_class_list_properties (G_OBJECT_GET_CLASS (settings), NULL);
for (i = 0; pspecs[i]; i++)
settings_update_xsetting (settings, pspecs[i], FALSE);
- g_free (pspecs);
}
static void