Skip to main content

gtk/auto/
settings.rs

1// This file was generated by gir (https://github.com/gtk-rs/gir)
2// from gir-files (https://github.com/gtk-rs/gir-files)
3// DO NOT EDIT
4
5use crate::StyleProvider;
6use glib::{
7    prelude::*,
8    signal::{connect_raw, SignalHandlerId},
9    translate::*,
10};
11use std::{boxed::Box as Box_, fmt, mem::transmute};
12
13glib::wrapper! {
14    /// GtkSettings provide a mechanism to share global settings between
15    /// applications.
16    ///
17    /// On the X window system, this sharing is realized by an
18    /// [XSettings](http://www.freedesktop.org/wiki/Specifications/xsettings-spec)
19    /// manager that is usually part of the desktop environment, along with
20    /// utilities that let the user change these settings. In the absence of
21    /// an Xsettings manager, GTK+ reads default values for settings from
22    /// `settings.ini` files in
23    /// `/etc/gtk-3.0`, `$XDG_CONFIG_DIRS/gtk-3.0`
24    /// and `$XDG_CONFIG_HOME/gtk-3.0`.
25    /// These files must be valid key files (see [`glib::KeyFile`][crate::glib::KeyFile]), and have
26    /// a section called Settings. Themes can also provide default values
27    /// for settings by installing a `settings.ini` file
28    /// next to their `gtk.css` file.
29    ///
30    /// Applications can override system-wide settings by setting the property
31    /// of the GtkSettings object with [`ObjectExt::set()`][crate::glib::prelude::ObjectExt::set()]. This should be restricted
32    /// to special cases though; GtkSettings are not meant as an application
33    /// configuration facility. When doing so, you need to be aware that settings
34    /// that are specific to individual widgets may not be available before the
35    /// widget type has been realized at least once. The following example
36    /// demonstrates a way to do this:
37    ///
38    ///
39    /// **⚠️ The following code is in C ⚠️**
40    ///
41    /// ```C
42    ///   gtk_init (&argc, &argv);
43    ///
44    ///   // make sure the type is realized
45    ///   g_type_class_unref (g_type_class_ref (GTK_TYPE_IMAGE_MENU_ITEM));
46    ///
47    ///   g_object_set (gtk_settings_get_default (), "gtk-enable-animations", FALSE, NULL);
48    /// ```
49    ///
50    /// There is one GtkSettings instance per screen. It can be obtained with
51    /// [`for_screen()`][Self::for_screen()], but in many cases, it is more convenient
52    /// to use [`WidgetExt::settings()`][crate::prelude::WidgetExt::settings()]. [`default()`][Self::default()] returns the
53    /// GtkSettings instance for the default screen.
54    ///
55    /// ## Properties
56    ///
57    ///
58    /// #### `color-hash`
59    ///  Holds a hash table representation of the [`gtk-color-scheme`][struct@crate::Settings#gtk-color-scheme]
60    /// setting, mapping color names to `GdkColors`.
61    ///
62    /// Readable
63    ///
64    ///
65    /// #### `gtk-alternative-button-order`
66    ///  Readable | Writeable
67    ///
68    ///
69    /// #### `gtk-alternative-sort-arrows`
70    ///  Controls the direction of the sort indicators in sorted list and tree
71    /// views. By default an arrow pointing down means the column is sorted
72    /// in ascending order. When set to [`true`], this order will be inverted.
73    ///
74    /// Readable | Writeable
75    ///
76    ///
77    /// #### `gtk-application-prefer-dark-theme`
78    ///  Whether the application prefers to use a dark theme. If a GTK+ theme
79    /// includes a dark variant, it will be used instead of the configured
80    /// theme.
81    ///
82    /// Some applications benefit from minimizing the amount of light pollution that
83    /// interferes with the content. Good candidates for dark themes are photo and
84    /// video editors that make the actual content get all the attention and minimize
85    /// the distraction of the chrome.
86    ///
87    /// Dark themes should not be used for documents, where large spaces are white/light
88    /// and the dark chrome creates too much contrast (web browser, text editor...).
89    ///
90    /// Readable | Writeable
91    ///
92    ///
93    /// #### `gtk-auto-mnemonics`
94    ///  Whether mnemonics should be automatically shown and hidden when the user
95    /// presses the mnemonic activator.
96    ///
97    /// Readable | Writeable
98    ///
99    ///
100    /// #### `gtk-button-images`
101    ///  Whether images should be shown on buttons
102    ///
103    /// Readable | Writeable
104    ///
105    ///
106    /// #### `gtk-can-change-accels`
107    ///  Whether menu accelerators can be changed by pressing a key over the menu item.
108    ///
109    /// Readable | Writeable
110    ///
111    ///
112    /// #### `gtk-color-palette`
113    ///  Palette to use in the deprecated color selector.
114    ///
115    /// Readable | Writeable
116    ///
117    ///
118    /// #### `gtk-color-scheme`
119    ///  A palette of named colors for use in themes. The format of the string is
120    ///
121    /// ```text
122    /// name1: color1
123    /// name2: color2
124    /// ...
125    /// ```
126    /// Color names must be acceptable as identifiers in the
127    /// [gtkrc][gtk3-Resource-Files] syntax, and
128    /// color specifications must be in the format accepted by
129    /// `gdk_color_parse()`.
130    ///
131    /// Note that due to the way the color tables from different sources are
132    /// merged, color specifications will be converted to hexadecimal form
133    /// when getting this property.
134    ///
135    /// Starting with GTK+ 2.12, the entries can alternatively be separated
136    /// by ';' instead of newlines:
137    ///
138    /// ```text
139    /// name1: color1; name2: color2; ...
140    /// ```
141    ///
142    /// Readable | Writeable
143    ///
144    ///
145    /// #### `gtk-cursor-aspect-ratio`
146    ///  Readable | Writeable
147    ///
148    ///
149    /// #### `gtk-cursor-blink`
150    ///  Whether the cursor should blink.
151    ///
152    /// Also see the [`gtk-cursor-blink-timeout`][struct@crate::Settings#gtk-cursor-blink-timeout] setting,
153    /// which allows more flexible control over cursor blinking.
154    ///
155    /// Readable | Writeable
156    ///
157    ///
158    /// #### `gtk-cursor-blink-time`
159    ///  Readable | Writeable
160    ///
161    ///
162    /// #### `gtk-cursor-blink-timeout`
163    ///  Time after which the cursor stops blinking, in seconds.
164    /// The timer is reset after each user interaction.
165    ///
166    /// Setting this to zero has the same effect as setting
167    /// [`gtk-cursor-blink`][struct@crate::Settings#gtk-cursor-blink] to [`false`].
168    ///
169    /// Readable | Writeable
170    ///
171    ///
172    /// #### `gtk-cursor-theme-name`
173    ///  Readable | Writeable
174    ///
175    ///
176    /// #### `gtk-cursor-theme-size`
177    ///  Readable | Writeable
178    ///
179    ///
180    /// #### `gtk-decoration-layout`
181    ///  This setting determines which buttons should be put in the
182    /// titlebar of client-side decorated windows, and whether they
183    /// should be placed at the left of right.
184    ///
185    /// The format of the string is button names, separated by commas.
186    /// A colon separates the buttons that should appear on the left
187    /// from those on the right. Recognized button names are minimize,
188    /// maximize, close, icon (the window icon) and menu (a menu button
189    /// for the fallback app menu).
190    ///
191    /// For example, "menu:minimize,maximize,close" specifies a menu
192    /// on the left, and minimize, maximize and close buttons on the right.
193    ///
194    /// Note that buttons will only be shown when they are meaningful.
195    /// E.g. a menu button only appears when the desktop shell does not
196    /// show the app menu, and a close button only appears on a window
197    /// that can be closed.
198    ///
199    /// Also note that the setting can be overridden with the
200    /// [`decoration-layout`][struct@crate::HeaderBar#decoration-layout] property.
201    ///
202    /// Readable | Writeable
203    ///
204    ///
205    /// #### `gtk-dialogs-use-header`
206    ///  Whether builtin GTK+ dialogs such as the file chooser, the
207    /// color chooser or the font chooser will use a header bar at
208    /// the top to show action widgets, or an action area at the bottom.
209    ///
210    /// This setting does not affect custom dialogs using GtkDialog
211    /// directly, or message dialogs.
212    ///
213    /// Readable | Writeable
214    ///
215    ///
216    /// #### `gtk-dnd-drag-threshold`
217    ///  Readable | Writeable
218    ///
219    ///
220    /// #### `gtk-double-click-distance`
221    ///  Readable | Writeable
222    ///
223    ///
224    /// #### `gtk-double-click-time`
225    ///  Readable | Writeable
226    ///
227    ///
228    /// #### `gtk-enable-accels`
229    ///  Whether menu items should have visible accelerators which can be
230    /// activated.
231    ///
232    /// Readable | Writeable
233    ///
234    ///
235    /// #### `gtk-enable-animations`
236    ///  Readable | Writeable
237    ///
238    ///
239    /// #### `gtk-enable-event-sounds`
240    ///  Whether to play any event sounds at all.
241    ///
242    /// See the [Sound Theme Specifications](http://www.freedesktop.org/wiki/Specifications/sound-theme-spec)
243    /// for more information on event sounds and sound themes.
244    ///
245    /// GTK+ itself does not support event sounds, you have to use a loadable
246    /// module like the one that comes with libcanberra.
247    ///
248    /// Readable | Writeable
249    ///
250    ///
251    /// #### `gtk-enable-input-feedback-sounds`
252    ///  Whether to play event sounds as feedback to user input.
253    ///
254    /// See the [Sound Theme Specifications](http://www.freedesktop.org/wiki/Specifications/sound-theme-spec)
255    /// for more information on event sounds and sound themes.
256    ///
257    /// GTK+ itself does not support event sounds, you have to use a loadable
258    /// module like the one that comes with libcanberra.
259    ///
260    /// Readable | Writeable
261    ///
262    ///
263    /// #### `gtk-enable-mnemonics`
264    ///  Whether labels and menu items should have visible mnemonics which
265    /// can be activated.
266    ///
267    /// Readable | Writeable
268    ///
269    ///
270    /// #### `gtk-enable-primary-paste`
271    ///  Whether a middle click on a mouse should paste the
272    /// 'PRIMARY' clipboard content at the cursor location.
273    ///
274    /// Readable | Writeable
275    ///
276    ///
277    /// #### `gtk-enable-tooltips`
278    ///  Whether tooltips should be shown on widgets.
279    ///
280    /// Readable | Writeable
281    ///
282    ///
283    /// #### `gtk-entry-password-hint-timeout`
284    ///  How long to show the last input character in hidden
285    /// entries. This value is in milliseconds. 0 disables showing the
286    /// last char. 600 is a good value for enabling it.
287    ///
288    /// Readable | Writeable
289    ///
290    ///
291    /// #### `gtk-entry-select-on-focus`
292    ///  Readable | Writeable
293    ///
294    ///
295    /// #### `gtk-error-bell`
296    ///  When [`true`], keyboard navigation and other input-related errors
297    /// will cause a beep. Since the error bell is implemented using
298    /// [`Window::beep()`][crate::gdk::Window::beep()], the windowing system may offer ways to
299    /// configure the error bell in many ways, such as flashing the
300    /// window or similar visual effects.
301    ///
302    /// Readable | Writeable
303    ///
304    ///
305    /// #### `gtk-fallback-icon-theme`
306    ///  Name of a icon theme to fall back to.
307    ///
308    /// Readable | Writeable
309    ///
310    ///
311    /// #### `gtk-file-chooser-backend`
312    ///  Name of the GtkFileChooser backend to use by default.
313    ///
314    /// Readable | Writeable
315    ///
316    ///
317    /// #### `gtk-font-name`
318    ///  The default font to use. GTK+ uses the family name and size from this string.
319    ///
320    /// Readable | Writeable
321    ///
322    ///
323    /// #### `gtk-fontconfig-timestamp`
324    ///  Readable | Writeable
325    ///
326    ///
327    /// #### `gtk-icon-sizes`
328    ///  A list of icon sizes. The list is separated by colons, and
329    /// item has the form:
330    ///
331    /// `size-name` = `width` , `height`
332    ///
333    /// E.g. "gtk-menu=16,16:gtk-button=20,20:gtk-dialog=48,48".
334    /// GTK+ itself use the following named icon sizes: gtk-menu,
335    /// gtk-button, gtk-small-toolbar, gtk-large-toolbar, gtk-dnd,
336    /// gtk-dialog. Applications can register their own named icon
337    /// sizes with `gtk_icon_size_register()`.
338    ///
339    /// Readable | Writeable
340    ///
341    ///
342    /// #### `gtk-icon-theme-name`
343    ///  Readable | Writeable
344    ///
345    ///
346    /// #### `gtk-im-module`
347    ///  Which IM (input method) module should be used by default. This is the
348    /// input method that will be used if the user has not explicitly chosen
349    /// another input method from the IM context menu.
350    /// This also can be a colon-separated list of input methods, which GTK+
351    /// will try in turn until it finds one available on the system.
352    ///
353    /// See [`IMContext`][crate::IMContext].
354    ///
355    /// Readable | Writeable
356    ///
357    ///
358    /// #### `gtk-im-preedit-style`
359    ///  How to draw the input method preedit string.
360    ///
361    /// Readable | Writeable
362    ///
363    ///
364    /// #### `gtk-im-status-style`
365    ///  How to draw the input method statusbar.
366    ///
367    /// Readable | Writeable
368    ///
369    ///
370    /// #### `gtk-key-theme-name`
371    ///  Readable | Writeable
372    ///
373    ///
374    /// #### `gtk-keynav-cursor-only`
375    ///  When [`true`], keyboard navigation should be able to reach all widgets
376    /// by using the cursor keys only. Tab, Shift etc. keys can't be expected
377    /// to be present on the used input device.
378    ///
379    /// Readable | Writeable
380    ///
381    ///
382    /// #### `gtk-keynav-use-caret`
383    ///  Whether GTK+ should make sure that text can be navigated with
384    /// a caret, even if it is not editable. This is useful when using
385    /// a screen reader.
386    ///
387    /// Readable | Writeable
388    ///
389    ///
390    /// #### `gtk-keynav-wrap-around`
391    ///  When [`true`], some widgets will wrap around when doing keyboard
392    /// navigation, such as menus, menubars and notebooks.
393    ///
394    /// Readable | Writeable
395    ///
396    ///
397    /// #### `gtk-label-select-on-focus`
398    ///  Readable | Writeable
399    ///
400    ///
401    /// #### `gtk-long-press-time`
402    ///  The time for a button or touch press to be considered a "long press".
403    ///
404    /// Readable | Writeable
405    ///
406    ///
407    /// #### `gtk-menu-bar-accel`
408    ///  Keybinding to activate the menu bar.
409    ///
410    /// Readable | Writeable
411    ///
412    ///
413    /// #### `gtk-menu-bar-popup-delay`
414    ///  Delay before the submenus of a menu bar appear.
415    ///
416    /// Readable | Writeable
417    ///
418    ///
419    /// #### `gtk-menu-images`
420    ///  Whether images should be shown in menu items
421    ///
422    /// Readable | Writeable
423    ///
424    ///
425    /// #### `gtk-menu-popdown-delay`
426    ///  The time before hiding a submenu when the pointer is moving towards the submenu.
427    ///
428    /// Readable | Writeable
429    ///
430    ///
431    /// #### `gtk-menu-popup-delay`
432    ///  Minimum time the pointer must stay over a menu item before the submenu appear.
433    ///
434    /// Readable | Writeable
435    ///
436    ///
437    /// #### `gtk-modules`
438    ///  Readable | Writeable
439    ///
440    ///
441    /// #### `gtk-overlay-scrolling`
442    ///  Whether scrolled windows may use overlayed scrolling indicators.
443    /// If this is set to [`false`], scrolled windows will have permanent
444    /// scrollbars.
445    ///
446    /// Readable | Writeable
447    ///
448    ///
449    /// #### `gtk-primary-button-warps-slider`
450    ///  If the value of this setting is [`true`], clicking the primary button in a
451    /// [`Range`][crate::Range] trough will move the slider, and hence set the range’s value, to
452    /// the point that you clicked. If it is [`false`], a primary click will cause the
453    /// slider/value to move by the range’s page-size towards the point clicked.
454    ///
455    /// Whichever action you choose for the primary button, the other action will
456    /// be available by holding Shift and primary-clicking, or (since GTK+ 3.22.25)
457    /// clicking the middle mouse button.
458    ///
459    /// Readable | Writeable
460    ///
461    ///
462    /// #### `gtk-print-backends`
463    ///  A comma-separated list of print backends to use in the print
464    /// dialog. Available print backends depend on the GTK+ installation,
465    /// and may include "file", "cups", "lpr" or "papi".
466    ///
467    /// Readable | Writeable
468    ///
469    ///
470    /// #### `gtk-print-preview-command`
471    ///  A command to run for displaying the print preview. The command
472    /// should contain a ``f`` placeholder, which will get replaced by
473    /// the path to the pdf file. The command may also contain a ``s``
474    /// placeholder, which will get replaced by the path to a file
475    /// containing the print settings in the format produced by
476    /// [`PrintSettings::to_file()`][crate::PrintSettings::to_file()].
477    ///
478    /// The preview application is responsible for removing the pdf file
479    /// and the print settings file when it is done.
480    ///
481    /// Readable | Writeable
482    ///
483    ///
484    /// #### `gtk-recent-files-enabled`
485    ///  Whether GTK+ should keep track of items inside the recently used
486    /// resources list. If set to [`false`], the list will always be empty.
487    ///
488    /// Readable | Writeable
489    ///
490    ///
491    /// #### `gtk-recent-files-limit`
492    ///  The number of recently used files that should be displayed by default by
493    /// [`RecentChooser`][crate::RecentChooser] implementations and by the [`FileChooser`][crate::FileChooser]. A value of
494    /// -1 means every recently used file stored.
495    ///
496    /// Readable | Writeable
497    ///
498    ///
499    /// #### `gtk-recent-files-max-age`
500    ///  The maximum age, in days, of the items inside the recently used
501    /// resources list. Items older than this setting will be excised
502    /// from the list. If set to 0, the list will always be empty; if
503    /// set to -1, no item will be removed.
504    ///
505    /// Readable | Writeable
506    ///
507    ///
508    /// #### `gtk-scrolled-window-placement`
509    ///  Where the contents of scrolled windows are located with respect to the
510    /// scrollbars, if not overridden by the scrolled window's own placement.
511    ///
512    /// Readable | Writeable
513    ///
514    ///
515    /// #### `gtk-shell-shows-app-menu`
516    ///  Readable | Writeable
517    ///
518    ///
519    /// #### `gtk-shell-shows-desktop`
520    ///  Readable | Writeable
521    ///
522    ///
523    /// #### `gtk-shell-shows-menubar`
524    ///  Readable | Writeable
525    ///
526    ///
527    /// #### `gtk-show-input-method-menu`
528    ///  Readable | Writeable
529    ///
530    ///
531    /// #### `gtk-show-unicode-menu`
532    ///  Readable | Writeable
533    ///
534    ///
535    /// #### `gtk-sound-theme-name`
536    ///  The XDG sound theme to use for event sounds.
537    ///
538    /// See the [Sound Theme Specifications](http://www.freedesktop.org/wiki/Specifications/sound-theme-spec)
539    /// for more information on event sounds and sound themes.
540    ///
541    /// GTK+ itself does not support event sounds, you have to use a loadable
542    /// module like the one that comes with libcanberra.
543    ///
544    /// Readable | Writeable
545    ///
546    ///
547    /// #### `gtk-split-cursor`
548    ///  Readable | Writeable
549    ///
550    ///
551    /// #### `gtk-theme-name`
552    ///  Readable | Writeable
553    ///
554    ///
555    /// #### `gtk-timeout-expand`
556    ///  Readable | Writeable
557    ///
558    ///
559    /// #### `gtk-timeout-initial`
560    ///  Readable | Writeable
561    ///
562    ///
563    /// #### `gtk-timeout-repeat`
564    ///  Readable | Writeable
565    ///
566    ///
567    /// #### `gtk-titlebar-double-click`
568    ///  This setting determines the action to take when a double-click
569    /// occurs on the titlebar of client-side decorated windows.
570    ///
571    /// Recognized actions are minimize, toggle-maximize, menu, lower
572    /// or none.
573    ///
574    /// Readable | Writeable
575    ///
576    ///
577    /// #### `gtk-titlebar-middle-click`
578    ///  This setting determines the action to take when a middle-click
579    /// occurs on the titlebar of client-side decorated windows.
580    ///
581    /// Recognized actions are minimize, toggle-maximize, menu, lower
582    /// or none.
583    ///
584    /// Readable | Writeable
585    ///
586    ///
587    /// #### `gtk-titlebar-right-click`
588    ///  This setting determines the action to take when a right-click
589    /// occurs on the titlebar of client-side decorated windows.
590    ///
591    /// Recognized actions are minimize, toggle-maximize, menu, lower
592    /// or none.
593    ///
594    /// Readable | Writeable
595    ///
596    ///
597    /// #### `gtk-toolbar-icon-size`
598    ///  The size of icons in default toolbars.
599    ///
600    /// Readable | Writeable
601    ///
602    ///
603    /// #### `gtk-toolbar-style`
604    ///  The size of icons in default toolbars.
605    ///
606    /// Readable | Writeable
607    ///
608    ///
609    /// #### `gtk-tooltip-browse-mode-timeout`
610    ///  Amount of time, in milliseconds, after which the browse mode
611    /// will be disabled.
612    ///
613    /// See [`gtk-tooltip-browse-timeout`][struct@crate::Settings#gtk-tooltip-browse-timeout] for more information
614    /// about browse mode.
615    ///
616    /// Readable | Writeable
617    ///
618    ///
619    /// #### `gtk-tooltip-browse-timeout`
620    ///  Controls the time after which tooltips will appear when
621    /// browse mode is enabled, in milliseconds.
622    ///
623    /// Browse mode is enabled when the mouse pointer moves off an object
624    /// where a tooltip was currently being displayed. If the mouse pointer
625    /// hits another object before the browse mode timeout expires (see
626    /// [`gtk-tooltip-browse-mode-timeout`][struct@crate::Settings#gtk-tooltip-browse-mode-timeout]), it will take the
627    /// amount of milliseconds specified by this setting to popup the tooltip
628    /// for the new object.
629    ///
630    /// Readable | Writeable
631    ///
632    ///
633    /// #### `gtk-tooltip-timeout`
634    ///  Time, in milliseconds, after which a tooltip could appear if the
635    /// cursor is hovering on top of a widget.
636    ///
637    /// Readable | Writeable
638    ///
639    ///
640    /// #### `gtk-touchscreen-mode`
641    ///  When [`true`], there are no motion notify events delivered on this screen,
642    /// and widgets can't use the pointer hovering them for any essential
643    /// functionality.
644    ///
645    /// Readable | Writeable
646    ///
647    ///
648    /// #### `gtk-visible-focus`
649    ///  Whether 'focus rectangles' should be always visible, never visible,
650    /// or hidden until the user starts to use the keyboard.
651    ///
652    /// Readable | Writeable
653    ///
654    ///
655    /// #### `gtk-xft-antialias`
656    ///  Readable | Writeable
657    ///
658    ///
659    /// #### `gtk-xft-dpi`
660    ///  Readable | Writeable
661    ///
662    ///
663    /// #### `gtk-xft-hinting`
664    ///  Readable | Writeable
665    ///
666    ///
667    /// #### `gtk-xft-hintstyle`
668    ///  Readable | Writeable
669    ///
670    ///
671    /// #### `gtk-xft-rgba`
672    ///  Readable | Writeable
673    ///
674    /// # Implements
675    ///
676    /// [`GtkSettingsExt`][trait@crate::prelude::GtkSettingsExt], [`trait@glib::ObjectExt`], [`StyleProviderExt`][trait@crate::prelude::StyleProviderExt]
677    #[doc(alias = "GtkSettings")]
678    pub struct Settings(Object<ffi::GtkSettings, ffi::GtkSettingsClass>) @implements StyleProvider;
679
680    match fn {
681        type_ => || ffi::gtk_settings_get_type(),
682    }
683}
684
685impl Settings {
686    pub const NONE: Option<&'static Settings> = None;
687
688    /// Gets the [`Settings`][crate::Settings] object for the default GDK screen, creating
689    /// it if necessary. See [`for_screen()`][Self::for_screen()].
690    ///
691    /// # Returns
692    ///
693    /// a [`Settings`][crate::Settings] object. If there is
694    /// no default screen, then returns [`None`].
695    #[doc(alias = "gtk_settings_get_default")]
696    #[doc(alias = "get_default")]
697    #[allow(clippy::should_implement_trait)]
698    pub fn default() -> Option<Settings> {
699        assert_initialized_main_thread!();
700        unsafe { from_glib_none(ffi::gtk_settings_get_default()) }
701    }
702
703    /// Gets the [`Settings`][crate::Settings] object for `screen`, creating it if necessary.
704    /// ## `screen`
705    /// a [`gdk::Screen`][crate::gdk::Screen].
706    ///
707    /// # Returns
708    ///
709    /// a [`Settings`][crate::Settings] object.
710    #[doc(alias = "gtk_settings_get_for_screen")]
711    #[doc(alias = "get_for_screen")]
712    pub fn for_screen(screen: &gdk::Screen) -> Option<Settings> {
713        assert_initialized_main_thread!();
714        unsafe { from_glib_none(ffi::gtk_settings_get_for_screen(screen.to_glib_none().0)) }
715    }
716}
717
718mod sealed {
719    pub trait Sealed {}
720    impl<T: super::IsA<super::Settings>> Sealed for T {}
721}
722
723/// Trait containing all [`struct@Settings`] methods.
724///
725/// # Implementors
726///
727/// [`Settings`][struct@crate::Settings]
728pub trait GtkSettingsExt: IsA<Settings> + sealed::Sealed + 'static {
729    /// Undoes the effect of calling [`ObjectExt::set()`][crate::glib::prelude::ObjectExt::set()] to install an
730    /// application-specific value for a setting. After this call,
731    /// the setting will again follow the session-wide value for
732    /// this setting.
733    /// ## `name`
734    /// the name of the setting to reset
735    #[doc(alias = "gtk_settings_reset_property")]
736    fn reset_property(&self, name: &str) {
737        unsafe {
738            ffi::gtk_settings_reset_property(self.as_ref().to_glib_none().0, name.to_glib_none().0);
739        }
740    }
741
742    #[doc(alias = "gtk-alternative-button-order")]
743    fn is_gtk_alternative_button_order(&self) -> bool {
744        ObjectExt::property(self.as_ref(), "gtk-alternative-button-order")
745    }
746
747    #[doc(alias = "gtk-alternative-button-order")]
748    fn set_gtk_alternative_button_order(&self, gtk_alternative_button_order: bool) {
749        ObjectExt::set_property(
750            self.as_ref(),
751            "gtk-alternative-button-order",
752            gtk_alternative_button_order,
753        )
754    }
755
756    /// Controls the direction of the sort indicators in sorted list and tree
757    /// views. By default an arrow pointing down means the column is sorted
758    /// in ascending order. When set to [`true`], this order will be inverted.
759    #[doc(alias = "gtk-alternative-sort-arrows")]
760    fn is_gtk_alternative_sort_arrows(&self) -> bool {
761        ObjectExt::property(self.as_ref(), "gtk-alternative-sort-arrows")
762    }
763
764    /// Controls the direction of the sort indicators in sorted list and tree
765    /// views. By default an arrow pointing down means the column is sorted
766    /// in ascending order. When set to [`true`], this order will be inverted.
767    #[doc(alias = "gtk-alternative-sort-arrows")]
768    fn set_gtk_alternative_sort_arrows(&self, gtk_alternative_sort_arrows: bool) {
769        ObjectExt::set_property(
770            self.as_ref(),
771            "gtk-alternative-sort-arrows",
772            gtk_alternative_sort_arrows,
773        )
774    }
775
776    /// Whether the application prefers to use a dark theme. If a GTK+ theme
777    /// includes a dark variant, it will be used instead of the configured
778    /// theme.
779    ///
780    /// Some applications benefit from minimizing the amount of light pollution that
781    /// interferes with the content. Good candidates for dark themes are photo and
782    /// video editors that make the actual content get all the attention and minimize
783    /// the distraction of the chrome.
784    ///
785    /// Dark themes should not be used for documents, where large spaces are white/light
786    /// and the dark chrome creates too much contrast (web browser, text editor...).
787    #[doc(alias = "gtk-application-prefer-dark-theme")]
788    fn is_gtk_application_prefer_dark_theme(&self) -> bool {
789        ObjectExt::property(self.as_ref(), "gtk-application-prefer-dark-theme")
790    }
791
792    /// Whether the application prefers to use a dark theme. If a GTK+ theme
793    /// includes a dark variant, it will be used instead of the configured
794    /// theme.
795    ///
796    /// Some applications benefit from minimizing the amount of light pollution that
797    /// interferes with the content. Good candidates for dark themes are photo and
798    /// video editors that make the actual content get all the attention and minimize
799    /// the distraction of the chrome.
800    ///
801    /// Dark themes should not be used for documents, where large spaces are white/light
802    /// and the dark chrome creates too much contrast (web browser, text editor...).
803    #[doc(alias = "gtk-application-prefer-dark-theme")]
804    fn set_gtk_application_prefer_dark_theme(&self, gtk_application_prefer_dark_theme: bool) {
805        ObjectExt::set_property(
806            self.as_ref(),
807            "gtk-application-prefer-dark-theme",
808            gtk_application_prefer_dark_theme,
809        )
810    }
811
812    #[cfg(feature = "v3_24")]
813    #[cfg_attr(docsrs, doc(cfg(feature = "v3_24")))]
814    #[doc(alias = "gtk-cursor-aspect-ratio")]
815    fn gtk_cursor_aspect_ratio(&self) -> f32 {
816        ObjectExt::property(self.as_ref(), "gtk-cursor-aspect-ratio")
817    }
818
819    #[cfg(feature = "v3_24")]
820    #[cfg_attr(docsrs, doc(cfg(feature = "v3_24")))]
821    #[doc(alias = "gtk-cursor-aspect-ratio")]
822    fn set_gtk_cursor_aspect_ratio(&self, gtk_cursor_aspect_ratio: f32) {
823        ObjectExt::set_property(
824            self.as_ref(),
825            "gtk-cursor-aspect-ratio",
826            gtk_cursor_aspect_ratio,
827        )
828    }
829
830    /// Whether the cursor should blink.
831    ///
832    /// Also see the [`gtk-cursor-blink-timeout`][struct@crate::Settings#gtk-cursor-blink-timeout] setting,
833    /// which allows more flexible control over cursor blinking.
834    #[doc(alias = "gtk-cursor-blink")]
835    fn is_gtk_cursor_blink(&self) -> bool {
836        ObjectExt::property(self.as_ref(), "gtk-cursor-blink")
837    }
838
839    /// Whether the cursor should blink.
840    ///
841    /// Also see the [`gtk-cursor-blink-timeout`][struct@crate::Settings#gtk-cursor-blink-timeout] setting,
842    /// which allows more flexible control over cursor blinking.
843    #[doc(alias = "gtk-cursor-blink")]
844    fn set_gtk_cursor_blink(&self, gtk_cursor_blink: bool) {
845        ObjectExt::set_property(self.as_ref(), "gtk-cursor-blink", gtk_cursor_blink)
846    }
847
848    #[doc(alias = "gtk-cursor-blink-time")]
849    fn gtk_cursor_blink_time(&self) -> i32 {
850        ObjectExt::property(self.as_ref(), "gtk-cursor-blink-time")
851    }
852
853    #[doc(alias = "gtk-cursor-blink-time")]
854    fn set_gtk_cursor_blink_time(&self, gtk_cursor_blink_time: i32) {
855        ObjectExt::set_property(
856            self.as_ref(),
857            "gtk-cursor-blink-time",
858            gtk_cursor_blink_time,
859        )
860    }
861
862    /// Time after which the cursor stops blinking, in seconds.
863    /// The timer is reset after each user interaction.
864    ///
865    /// Setting this to zero has the same effect as setting
866    /// [`gtk-cursor-blink`][struct@crate::Settings#gtk-cursor-blink] to [`false`].
867    #[doc(alias = "gtk-cursor-blink-timeout")]
868    fn gtk_cursor_blink_timeout(&self) -> i32 {
869        ObjectExt::property(self.as_ref(), "gtk-cursor-blink-timeout")
870    }
871
872    /// Time after which the cursor stops blinking, in seconds.
873    /// The timer is reset after each user interaction.
874    ///
875    /// Setting this to zero has the same effect as setting
876    /// [`gtk-cursor-blink`][struct@crate::Settings#gtk-cursor-blink] to [`false`].
877    #[doc(alias = "gtk-cursor-blink-timeout")]
878    fn set_gtk_cursor_blink_timeout(&self, gtk_cursor_blink_timeout: i32) {
879        ObjectExt::set_property(
880            self.as_ref(),
881            "gtk-cursor-blink-timeout",
882            gtk_cursor_blink_timeout,
883        )
884    }
885
886    #[doc(alias = "gtk-cursor-theme-name")]
887    fn gtk_cursor_theme_name(&self) -> Option<glib::GString> {
888        ObjectExt::property(self.as_ref(), "gtk-cursor-theme-name")
889    }
890
891    #[doc(alias = "gtk-cursor-theme-name")]
892    fn set_gtk_cursor_theme_name(&self, gtk_cursor_theme_name: Option<&str>) {
893        ObjectExt::set_property(
894            self.as_ref(),
895            "gtk-cursor-theme-name",
896            gtk_cursor_theme_name,
897        )
898    }
899
900    #[doc(alias = "gtk-cursor-theme-size")]
901    fn gtk_cursor_theme_size(&self) -> i32 {
902        ObjectExt::property(self.as_ref(), "gtk-cursor-theme-size")
903    }
904
905    #[doc(alias = "gtk-cursor-theme-size")]
906    fn set_gtk_cursor_theme_size(&self, gtk_cursor_theme_size: i32) {
907        ObjectExt::set_property(
908            self.as_ref(),
909            "gtk-cursor-theme-size",
910            gtk_cursor_theme_size,
911        )
912    }
913
914    /// This setting determines which buttons should be put in the
915    /// titlebar of client-side decorated windows, and whether they
916    /// should be placed at the left of right.
917    ///
918    /// The format of the string is button names, separated by commas.
919    /// A colon separates the buttons that should appear on the left
920    /// from those on the right. Recognized button names are minimize,
921    /// maximize, close, icon (the window icon) and menu (a menu button
922    /// for the fallback app menu).
923    ///
924    /// For example, "menu:minimize,maximize,close" specifies a menu
925    /// on the left, and minimize, maximize and close buttons on the right.
926    ///
927    /// Note that buttons will only be shown when they are meaningful.
928    /// E.g. a menu button only appears when the desktop shell does not
929    /// show the app menu, and a close button only appears on a window
930    /// that can be closed.
931    ///
932    /// Also note that the setting can be overridden with the
933    /// [`decoration-layout`][struct@crate::HeaderBar#decoration-layout] property.
934    #[doc(alias = "gtk-decoration-layout")]
935    fn gtk_decoration_layout(&self) -> Option<glib::GString> {
936        ObjectExt::property(self.as_ref(), "gtk-decoration-layout")
937    }
938
939    /// This setting determines which buttons should be put in the
940    /// titlebar of client-side decorated windows, and whether they
941    /// should be placed at the left of right.
942    ///
943    /// The format of the string is button names, separated by commas.
944    /// A colon separates the buttons that should appear on the left
945    /// from those on the right. Recognized button names are minimize,
946    /// maximize, close, icon (the window icon) and menu (a menu button
947    /// for the fallback app menu).
948    ///
949    /// For example, "menu:minimize,maximize,close" specifies a menu
950    /// on the left, and minimize, maximize and close buttons on the right.
951    ///
952    /// Note that buttons will only be shown when they are meaningful.
953    /// E.g. a menu button only appears when the desktop shell does not
954    /// show the app menu, and a close button only appears on a window
955    /// that can be closed.
956    ///
957    /// Also note that the setting can be overridden with the
958    /// [`decoration-layout`][struct@crate::HeaderBar#decoration-layout] property.
959    #[doc(alias = "gtk-decoration-layout")]
960    fn set_gtk_decoration_layout(&self, gtk_decoration_layout: Option<&str>) {
961        ObjectExt::set_property(
962            self.as_ref(),
963            "gtk-decoration-layout",
964            gtk_decoration_layout,
965        )
966    }
967
968    /// Whether builtin GTK+ dialogs such as the file chooser, the
969    /// color chooser or the font chooser will use a header bar at
970    /// the top to show action widgets, or an action area at the bottom.
971    ///
972    /// This setting does not affect custom dialogs using GtkDialog
973    /// directly, or message dialogs.
974    #[doc(alias = "gtk-dialogs-use-header")]
975    fn is_gtk_dialogs_use_header(&self) -> bool {
976        ObjectExt::property(self.as_ref(), "gtk-dialogs-use-header")
977    }
978
979    /// Whether builtin GTK+ dialogs such as the file chooser, the
980    /// color chooser or the font chooser will use a header bar at
981    /// the top to show action widgets, or an action area at the bottom.
982    ///
983    /// This setting does not affect custom dialogs using GtkDialog
984    /// directly, or message dialogs.
985    #[doc(alias = "gtk-dialogs-use-header")]
986    fn set_gtk_dialogs_use_header(&self, gtk_dialogs_use_header: bool) {
987        ObjectExt::set_property(
988            self.as_ref(),
989            "gtk-dialogs-use-header",
990            gtk_dialogs_use_header,
991        )
992    }
993
994    #[doc(alias = "gtk-dnd-drag-threshold")]
995    fn gtk_dnd_drag_threshold(&self) -> i32 {
996        ObjectExt::property(self.as_ref(), "gtk-dnd-drag-threshold")
997    }
998
999    #[doc(alias = "gtk-dnd-drag-threshold")]
1000    fn set_gtk_dnd_drag_threshold(&self, gtk_dnd_drag_threshold: i32) {
1001        ObjectExt::set_property(
1002            self.as_ref(),
1003            "gtk-dnd-drag-threshold",
1004            gtk_dnd_drag_threshold,
1005        )
1006    }
1007
1008    #[doc(alias = "gtk-double-click-distance")]
1009    fn gtk_double_click_distance(&self) -> i32 {
1010        ObjectExt::property(self.as_ref(), "gtk-double-click-distance")
1011    }
1012
1013    #[doc(alias = "gtk-double-click-distance")]
1014    fn set_gtk_double_click_distance(&self, gtk_double_click_distance: i32) {
1015        ObjectExt::set_property(
1016            self.as_ref(),
1017            "gtk-double-click-distance",
1018            gtk_double_click_distance,
1019        )
1020    }
1021
1022    #[doc(alias = "gtk-double-click-time")]
1023    fn gtk_double_click_time(&self) -> i32 {
1024        ObjectExt::property(self.as_ref(), "gtk-double-click-time")
1025    }
1026
1027    #[doc(alias = "gtk-double-click-time")]
1028    fn set_gtk_double_click_time(&self, gtk_double_click_time: i32) {
1029        ObjectExt::set_property(
1030            self.as_ref(),
1031            "gtk-double-click-time",
1032            gtk_double_click_time,
1033        )
1034    }
1035
1036    /// Whether menu items should have visible accelerators which can be
1037    /// activated.
1038    #[doc(alias = "gtk-enable-accels")]
1039    fn is_gtk_enable_accels(&self) -> bool {
1040        ObjectExt::property(self.as_ref(), "gtk-enable-accels")
1041    }
1042
1043    /// Whether menu items should have visible accelerators which can be
1044    /// activated.
1045    #[doc(alias = "gtk-enable-accels")]
1046    fn set_gtk_enable_accels(&self, gtk_enable_accels: bool) {
1047        ObjectExt::set_property(self.as_ref(), "gtk-enable-accels", gtk_enable_accels)
1048    }
1049
1050    #[doc(alias = "gtk-enable-animations")]
1051    fn is_gtk_enable_animations(&self) -> bool {
1052        ObjectExt::property(self.as_ref(), "gtk-enable-animations")
1053    }
1054
1055    #[doc(alias = "gtk-enable-animations")]
1056    fn set_gtk_enable_animations(&self, gtk_enable_animations: bool) {
1057        ObjectExt::set_property(
1058            self.as_ref(),
1059            "gtk-enable-animations",
1060            gtk_enable_animations,
1061        )
1062    }
1063
1064    /// Whether to play any event sounds at all.
1065    ///
1066    /// See the [Sound Theme Specifications](http://www.freedesktop.org/wiki/Specifications/sound-theme-spec)
1067    /// for more information on event sounds and sound themes.
1068    ///
1069    /// GTK+ itself does not support event sounds, you have to use a loadable
1070    /// module like the one that comes with libcanberra.
1071    #[doc(alias = "gtk-enable-event-sounds")]
1072    fn is_gtk_enable_event_sounds(&self) -> bool {
1073        ObjectExt::property(self.as_ref(), "gtk-enable-event-sounds")
1074    }
1075
1076    /// Whether to play any event sounds at all.
1077    ///
1078    /// See the [Sound Theme Specifications](http://www.freedesktop.org/wiki/Specifications/sound-theme-spec)
1079    /// for more information on event sounds and sound themes.
1080    ///
1081    /// GTK+ itself does not support event sounds, you have to use a loadable
1082    /// module like the one that comes with libcanberra.
1083    #[doc(alias = "gtk-enable-event-sounds")]
1084    fn set_gtk_enable_event_sounds(&self, gtk_enable_event_sounds: bool) {
1085        ObjectExt::set_property(
1086            self.as_ref(),
1087            "gtk-enable-event-sounds",
1088            gtk_enable_event_sounds,
1089        )
1090    }
1091
1092    /// Whether to play event sounds as feedback to user input.
1093    ///
1094    /// See the [Sound Theme Specifications](http://www.freedesktop.org/wiki/Specifications/sound-theme-spec)
1095    /// for more information on event sounds and sound themes.
1096    ///
1097    /// GTK+ itself does not support event sounds, you have to use a loadable
1098    /// module like the one that comes with libcanberra.
1099    #[doc(alias = "gtk-enable-input-feedback-sounds")]
1100    fn is_gtk_enable_input_feedback_sounds(&self) -> bool {
1101        ObjectExt::property(self.as_ref(), "gtk-enable-input-feedback-sounds")
1102    }
1103
1104    /// Whether to play event sounds as feedback to user input.
1105    ///
1106    /// See the [Sound Theme Specifications](http://www.freedesktop.org/wiki/Specifications/sound-theme-spec)
1107    /// for more information on event sounds and sound themes.
1108    ///
1109    /// GTK+ itself does not support event sounds, you have to use a loadable
1110    /// module like the one that comes with libcanberra.
1111    #[doc(alias = "gtk-enable-input-feedback-sounds")]
1112    fn set_gtk_enable_input_feedback_sounds(&self, gtk_enable_input_feedback_sounds: bool) {
1113        ObjectExt::set_property(
1114            self.as_ref(),
1115            "gtk-enable-input-feedback-sounds",
1116            gtk_enable_input_feedback_sounds,
1117        )
1118    }
1119
1120    /// Whether a middle click on a mouse should paste the
1121    /// 'PRIMARY' clipboard content at the cursor location.
1122    #[doc(alias = "gtk-enable-primary-paste")]
1123    fn is_gtk_enable_primary_paste(&self) -> bool {
1124        ObjectExt::property(self.as_ref(), "gtk-enable-primary-paste")
1125    }
1126
1127    /// Whether a middle click on a mouse should paste the
1128    /// 'PRIMARY' clipboard content at the cursor location.
1129    #[doc(alias = "gtk-enable-primary-paste")]
1130    fn set_gtk_enable_primary_paste(&self, gtk_enable_primary_paste: bool) {
1131        ObjectExt::set_property(
1132            self.as_ref(),
1133            "gtk-enable-primary-paste",
1134            gtk_enable_primary_paste,
1135        )
1136    }
1137
1138    /// How long to show the last input character in hidden
1139    /// entries. This value is in milliseconds. 0 disables showing the
1140    /// last char. 600 is a good value for enabling it.
1141    #[doc(alias = "gtk-entry-password-hint-timeout")]
1142    fn gtk_entry_password_hint_timeout(&self) -> u32 {
1143        ObjectExt::property(self.as_ref(), "gtk-entry-password-hint-timeout")
1144    }
1145
1146    /// How long to show the last input character in hidden
1147    /// entries. This value is in milliseconds. 0 disables showing the
1148    /// last char. 600 is a good value for enabling it.
1149    #[doc(alias = "gtk-entry-password-hint-timeout")]
1150    fn set_gtk_entry_password_hint_timeout(&self, gtk_entry_password_hint_timeout: u32) {
1151        ObjectExt::set_property(
1152            self.as_ref(),
1153            "gtk-entry-password-hint-timeout",
1154            gtk_entry_password_hint_timeout,
1155        )
1156    }
1157
1158    #[doc(alias = "gtk-entry-select-on-focus")]
1159    fn is_gtk_entry_select_on_focus(&self) -> bool {
1160        ObjectExt::property(self.as_ref(), "gtk-entry-select-on-focus")
1161    }
1162
1163    #[doc(alias = "gtk-entry-select-on-focus")]
1164    fn set_gtk_entry_select_on_focus(&self, gtk_entry_select_on_focus: bool) {
1165        ObjectExt::set_property(
1166            self.as_ref(),
1167            "gtk-entry-select-on-focus",
1168            gtk_entry_select_on_focus,
1169        )
1170    }
1171
1172    /// When [`true`], keyboard navigation and other input-related errors
1173    /// will cause a beep. Since the error bell is implemented using
1174    /// [`Window::beep()`][crate::gdk::Window::beep()], the windowing system may offer ways to
1175    /// configure the error bell in many ways, such as flashing the
1176    /// window or similar visual effects.
1177    #[doc(alias = "gtk-error-bell")]
1178    fn is_gtk_error_bell(&self) -> bool {
1179        ObjectExt::property(self.as_ref(), "gtk-error-bell")
1180    }
1181
1182    /// When [`true`], keyboard navigation and other input-related errors
1183    /// will cause a beep. Since the error bell is implemented using
1184    /// [`Window::beep()`][crate::gdk::Window::beep()], the windowing system may offer ways to
1185    /// configure the error bell in many ways, such as flashing the
1186    /// window or similar visual effects.
1187    #[doc(alias = "gtk-error-bell")]
1188    fn set_gtk_error_bell(&self, gtk_error_bell: bool) {
1189        ObjectExt::set_property(self.as_ref(), "gtk-error-bell", gtk_error_bell)
1190    }
1191
1192    /// The default font to use. GTK+ uses the family name and size from this string.
1193    #[doc(alias = "gtk-font-name")]
1194    fn gtk_font_name(&self) -> Option<glib::GString> {
1195        ObjectExt::property(self.as_ref(), "gtk-font-name")
1196    }
1197
1198    /// The default font to use. GTK+ uses the family name and size from this string.
1199    #[doc(alias = "gtk-font-name")]
1200    fn set_gtk_font_name(&self, gtk_font_name: Option<&str>) {
1201        ObjectExt::set_property(self.as_ref(), "gtk-font-name", gtk_font_name)
1202    }
1203
1204    #[doc(alias = "gtk-fontconfig-timestamp")]
1205    fn gtk_fontconfig_timestamp(&self) -> u32 {
1206        ObjectExt::property(self.as_ref(), "gtk-fontconfig-timestamp")
1207    }
1208
1209    #[doc(alias = "gtk-fontconfig-timestamp")]
1210    fn set_gtk_fontconfig_timestamp(&self, gtk_fontconfig_timestamp: u32) {
1211        ObjectExt::set_property(
1212            self.as_ref(),
1213            "gtk-fontconfig-timestamp",
1214            gtk_fontconfig_timestamp,
1215        )
1216    }
1217
1218    #[doc(alias = "gtk-icon-theme-name")]
1219    fn gtk_icon_theme_name(&self) -> Option<glib::GString> {
1220        ObjectExt::property(self.as_ref(), "gtk-icon-theme-name")
1221    }
1222
1223    #[doc(alias = "gtk-icon-theme-name")]
1224    fn set_gtk_icon_theme_name(&self, gtk_icon_theme_name: Option<&str>) {
1225        ObjectExt::set_property(self.as_ref(), "gtk-icon-theme-name", gtk_icon_theme_name)
1226    }
1227
1228    /// Which IM (input method) module should be used by default. This is the
1229    /// input method that will be used if the user has not explicitly chosen
1230    /// another input method from the IM context menu.
1231    /// This also can be a colon-separated list of input methods, which GTK+
1232    /// will try in turn until it finds one available on the system.
1233    ///
1234    /// See [`IMContext`][crate::IMContext].
1235    #[doc(alias = "gtk-im-module")]
1236    fn gtk_im_module(&self) -> Option<glib::GString> {
1237        ObjectExt::property(self.as_ref(), "gtk-im-module")
1238    }
1239
1240    /// Which IM (input method) module should be used by default. This is the
1241    /// input method that will be used if the user has not explicitly chosen
1242    /// another input method from the IM context menu.
1243    /// This also can be a colon-separated list of input methods, which GTK+
1244    /// will try in turn until it finds one available on the system.
1245    ///
1246    /// See [`IMContext`][crate::IMContext].
1247    #[doc(alias = "gtk-im-module")]
1248    fn set_gtk_im_module(&self, gtk_im_module: Option<&str>) {
1249        ObjectExt::set_property(self.as_ref(), "gtk-im-module", gtk_im_module)
1250    }
1251
1252    #[doc(alias = "gtk-key-theme-name")]
1253    fn gtk_key_theme_name(&self) -> Option<glib::GString> {
1254        ObjectExt::property(self.as_ref(), "gtk-key-theme-name")
1255    }
1256
1257    #[doc(alias = "gtk-key-theme-name")]
1258    fn set_gtk_key_theme_name(&self, gtk_key_theme_name: Option<&str>) {
1259        ObjectExt::set_property(self.as_ref(), "gtk-key-theme-name", gtk_key_theme_name)
1260    }
1261
1262    /// Whether GTK+ should make sure that text can be navigated with
1263    /// a caret, even if it is not editable. This is useful when using
1264    /// a screen reader.
1265    #[doc(alias = "gtk-keynav-use-caret")]
1266    fn is_gtk_keynav_use_caret(&self) -> bool {
1267        ObjectExt::property(self.as_ref(), "gtk-keynav-use-caret")
1268    }
1269
1270    /// Whether GTK+ should make sure that text can be navigated with
1271    /// a caret, even if it is not editable. This is useful when using
1272    /// a screen reader.
1273    #[doc(alias = "gtk-keynav-use-caret")]
1274    fn set_gtk_keynav_use_caret(&self, gtk_keynav_use_caret: bool) {
1275        ObjectExt::set_property(self.as_ref(), "gtk-keynav-use-caret", gtk_keynav_use_caret)
1276    }
1277
1278    #[doc(alias = "gtk-label-select-on-focus")]
1279    fn is_gtk_label_select_on_focus(&self) -> bool {
1280        ObjectExt::property(self.as_ref(), "gtk-label-select-on-focus")
1281    }
1282
1283    #[doc(alias = "gtk-label-select-on-focus")]
1284    fn set_gtk_label_select_on_focus(&self, gtk_label_select_on_focus: bool) {
1285        ObjectExt::set_property(
1286            self.as_ref(),
1287            "gtk-label-select-on-focus",
1288            gtk_label_select_on_focus,
1289        )
1290    }
1291
1292    /// The time for a button or touch press to be considered a "long press".
1293    #[doc(alias = "gtk-long-press-time")]
1294    fn gtk_long_press_time(&self) -> u32 {
1295        ObjectExt::property(self.as_ref(), "gtk-long-press-time")
1296    }
1297
1298    /// The time for a button or touch press to be considered a "long press".
1299    #[doc(alias = "gtk-long-press-time")]
1300    fn set_gtk_long_press_time(&self, gtk_long_press_time: u32) {
1301        ObjectExt::set_property(self.as_ref(), "gtk-long-press-time", gtk_long_press_time)
1302    }
1303
1304    #[doc(alias = "gtk-modules")]
1305    fn gtk_modules(&self) -> Option<glib::GString> {
1306        ObjectExt::property(self.as_ref(), "gtk-modules")
1307    }
1308
1309    #[doc(alias = "gtk-modules")]
1310    fn set_gtk_modules(&self, gtk_modules: Option<&str>) {
1311        ObjectExt::set_property(self.as_ref(), "gtk-modules", gtk_modules)
1312    }
1313
1314    /// Whether scrolled windows may use overlayed scrolling indicators.
1315    /// If this is set to [`false`], scrolled windows will have permanent
1316    /// scrollbars.
1317    #[cfg(feature = "v3_24_9")]
1318    #[cfg_attr(docsrs, doc(cfg(feature = "v3_24_9")))]
1319    #[doc(alias = "gtk-overlay-scrolling")]
1320    fn is_gtk_overlay_scrolling(&self) -> bool {
1321        ObjectExt::property(self.as_ref(), "gtk-overlay-scrolling")
1322    }
1323
1324    /// Whether scrolled windows may use overlayed scrolling indicators.
1325    /// If this is set to [`false`], scrolled windows will have permanent
1326    /// scrollbars.
1327    #[cfg(feature = "v3_24_9")]
1328    #[cfg_attr(docsrs, doc(cfg(feature = "v3_24_9")))]
1329    #[doc(alias = "gtk-overlay-scrolling")]
1330    fn set_gtk_overlay_scrolling(&self, gtk_overlay_scrolling: bool) {
1331        ObjectExt::set_property(
1332            self.as_ref(),
1333            "gtk-overlay-scrolling",
1334            gtk_overlay_scrolling,
1335        )
1336    }
1337
1338    /// If the value of this setting is [`true`], clicking the primary button in a
1339    /// [`Range`][crate::Range] trough will move the slider, and hence set the range’s value, to
1340    /// the point that you clicked. If it is [`false`], a primary click will cause the
1341    /// slider/value to move by the range’s page-size towards the point clicked.
1342    ///
1343    /// Whichever action you choose for the primary button, the other action will
1344    /// be available by holding Shift and primary-clicking, or (since GTK+ 3.22.25)
1345    /// clicking the middle mouse button.
1346    #[doc(alias = "gtk-primary-button-warps-slider")]
1347    fn is_gtk_primary_button_warps_slider(&self) -> bool {
1348        ObjectExt::property(self.as_ref(), "gtk-primary-button-warps-slider")
1349    }
1350
1351    /// If the value of this setting is [`true`], clicking the primary button in a
1352    /// [`Range`][crate::Range] trough will move the slider, and hence set the range’s value, to
1353    /// the point that you clicked. If it is [`false`], a primary click will cause the
1354    /// slider/value to move by the range’s page-size towards the point clicked.
1355    ///
1356    /// Whichever action you choose for the primary button, the other action will
1357    /// be available by holding Shift and primary-clicking, or (since GTK+ 3.22.25)
1358    /// clicking the middle mouse button.
1359    #[doc(alias = "gtk-primary-button-warps-slider")]
1360    fn set_gtk_primary_button_warps_slider(&self, gtk_primary_button_warps_slider: bool) {
1361        ObjectExt::set_property(
1362            self.as_ref(),
1363            "gtk-primary-button-warps-slider",
1364            gtk_primary_button_warps_slider,
1365        )
1366    }
1367
1368    /// A comma-separated list of print backends to use in the print
1369    /// dialog. Available print backends depend on the GTK+ installation,
1370    /// and may include "file", "cups", "lpr" or "papi".
1371    #[doc(alias = "gtk-print-backends")]
1372    fn gtk_print_backends(&self) -> Option<glib::GString> {
1373        ObjectExt::property(self.as_ref(), "gtk-print-backends")
1374    }
1375
1376    /// A comma-separated list of print backends to use in the print
1377    /// dialog. Available print backends depend on the GTK+ installation,
1378    /// and may include "file", "cups", "lpr" or "papi".
1379    #[doc(alias = "gtk-print-backends")]
1380    fn set_gtk_print_backends(&self, gtk_print_backends: Option<&str>) {
1381        ObjectExt::set_property(self.as_ref(), "gtk-print-backends", gtk_print_backends)
1382    }
1383
1384    /// A command to run for displaying the print preview. The command
1385    /// should contain a ``f`` placeholder, which will get replaced by
1386    /// the path to the pdf file. The command may also contain a ``s``
1387    /// placeholder, which will get replaced by the path to a file
1388    /// containing the print settings in the format produced by
1389    /// [`PrintSettings::to_file()`][crate::PrintSettings::to_file()].
1390    ///
1391    /// The preview application is responsible for removing the pdf file
1392    /// and the print settings file when it is done.
1393    #[doc(alias = "gtk-print-preview-command")]
1394    fn gtk_print_preview_command(&self) -> Option<glib::GString> {
1395        ObjectExt::property(self.as_ref(), "gtk-print-preview-command")
1396    }
1397
1398    /// A command to run for displaying the print preview. The command
1399    /// should contain a ``f`` placeholder, which will get replaced by
1400    /// the path to the pdf file. The command may also contain a ``s``
1401    /// placeholder, which will get replaced by the path to a file
1402    /// containing the print settings in the format produced by
1403    /// [`PrintSettings::to_file()`][crate::PrintSettings::to_file()].
1404    ///
1405    /// The preview application is responsible for removing the pdf file
1406    /// and the print settings file when it is done.
1407    #[doc(alias = "gtk-print-preview-command")]
1408    fn set_gtk_print_preview_command(&self, gtk_print_preview_command: Option<&str>) {
1409        ObjectExt::set_property(
1410            self.as_ref(),
1411            "gtk-print-preview-command",
1412            gtk_print_preview_command,
1413        )
1414    }
1415
1416    /// Whether GTK+ should keep track of items inside the recently used
1417    /// resources list. If set to [`false`], the list will always be empty.
1418    #[doc(alias = "gtk-recent-files-enabled")]
1419    fn is_gtk_recent_files_enabled(&self) -> bool {
1420        ObjectExt::property(self.as_ref(), "gtk-recent-files-enabled")
1421    }
1422
1423    /// Whether GTK+ should keep track of items inside the recently used
1424    /// resources list. If set to [`false`], the list will always be empty.
1425    #[doc(alias = "gtk-recent-files-enabled")]
1426    fn set_gtk_recent_files_enabled(&self, gtk_recent_files_enabled: bool) {
1427        ObjectExt::set_property(
1428            self.as_ref(),
1429            "gtk-recent-files-enabled",
1430            gtk_recent_files_enabled,
1431        )
1432    }
1433
1434    /// The maximum age, in days, of the items inside the recently used
1435    /// resources list. Items older than this setting will be excised
1436    /// from the list. If set to 0, the list will always be empty; if
1437    /// set to -1, no item will be removed.
1438    #[doc(alias = "gtk-recent-files-max-age")]
1439    fn gtk_recent_files_max_age(&self) -> i32 {
1440        ObjectExt::property(self.as_ref(), "gtk-recent-files-max-age")
1441    }
1442
1443    /// The maximum age, in days, of the items inside the recently used
1444    /// resources list. Items older than this setting will be excised
1445    /// from the list. If set to 0, the list will always be empty; if
1446    /// set to -1, no item will be removed.
1447    #[doc(alias = "gtk-recent-files-max-age")]
1448    fn set_gtk_recent_files_max_age(&self, gtk_recent_files_max_age: i32) {
1449        ObjectExt::set_property(
1450            self.as_ref(),
1451            "gtk-recent-files-max-age",
1452            gtk_recent_files_max_age,
1453        )
1454    }
1455
1456    #[doc(alias = "gtk-shell-shows-app-menu")]
1457    fn is_gtk_shell_shows_app_menu(&self) -> bool {
1458        ObjectExt::property(self.as_ref(), "gtk-shell-shows-app-menu")
1459    }
1460
1461    #[doc(alias = "gtk-shell-shows-app-menu")]
1462    fn set_gtk_shell_shows_app_menu(&self, gtk_shell_shows_app_menu: bool) {
1463        ObjectExt::set_property(
1464            self.as_ref(),
1465            "gtk-shell-shows-app-menu",
1466            gtk_shell_shows_app_menu,
1467        )
1468    }
1469
1470    #[doc(alias = "gtk-shell-shows-desktop")]
1471    fn is_gtk_shell_shows_desktop(&self) -> bool {
1472        ObjectExt::property(self.as_ref(), "gtk-shell-shows-desktop")
1473    }
1474
1475    #[doc(alias = "gtk-shell-shows-desktop")]
1476    fn set_gtk_shell_shows_desktop(&self, gtk_shell_shows_desktop: bool) {
1477        ObjectExt::set_property(
1478            self.as_ref(),
1479            "gtk-shell-shows-desktop",
1480            gtk_shell_shows_desktop,
1481        )
1482    }
1483
1484    #[doc(alias = "gtk-shell-shows-menubar")]
1485    fn is_gtk_shell_shows_menubar(&self) -> bool {
1486        ObjectExt::property(self.as_ref(), "gtk-shell-shows-menubar")
1487    }
1488
1489    #[doc(alias = "gtk-shell-shows-menubar")]
1490    fn set_gtk_shell_shows_menubar(&self, gtk_shell_shows_menubar: bool) {
1491        ObjectExt::set_property(
1492            self.as_ref(),
1493            "gtk-shell-shows-menubar",
1494            gtk_shell_shows_menubar,
1495        )
1496    }
1497
1498    /// The XDG sound theme to use for event sounds.
1499    ///
1500    /// See the [Sound Theme Specifications](http://www.freedesktop.org/wiki/Specifications/sound-theme-spec)
1501    /// for more information on event sounds and sound themes.
1502    ///
1503    /// GTK+ itself does not support event sounds, you have to use a loadable
1504    /// module like the one that comes with libcanberra.
1505    #[doc(alias = "gtk-sound-theme-name")]
1506    fn gtk_sound_theme_name(&self) -> Option<glib::GString> {
1507        ObjectExt::property(self.as_ref(), "gtk-sound-theme-name")
1508    }
1509
1510    /// The XDG sound theme to use for event sounds.
1511    ///
1512    /// See the [Sound Theme Specifications](http://www.freedesktop.org/wiki/Specifications/sound-theme-spec)
1513    /// for more information on event sounds and sound themes.
1514    ///
1515    /// GTK+ itself does not support event sounds, you have to use a loadable
1516    /// module like the one that comes with libcanberra.
1517    #[doc(alias = "gtk-sound-theme-name")]
1518    fn set_gtk_sound_theme_name(&self, gtk_sound_theme_name: Option<&str>) {
1519        ObjectExt::set_property(self.as_ref(), "gtk-sound-theme-name", gtk_sound_theme_name)
1520    }
1521
1522    #[doc(alias = "gtk-split-cursor")]
1523    fn is_gtk_split_cursor(&self) -> bool {
1524        ObjectExt::property(self.as_ref(), "gtk-split-cursor")
1525    }
1526
1527    #[doc(alias = "gtk-split-cursor")]
1528    fn set_gtk_split_cursor(&self, gtk_split_cursor: bool) {
1529        ObjectExt::set_property(self.as_ref(), "gtk-split-cursor", gtk_split_cursor)
1530    }
1531
1532    #[doc(alias = "gtk-theme-name")]
1533    fn gtk_theme_name(&self) -> Option<glib::GString> {
1534        ObjectExt::property(self.as_ref(), "gtk-theme-name")
1535    }
1536
1537    #[doc(alias = "gtk-theme-name")]
1538    fn set_gtk_theme_name(&self, gtk_theme_name: Option<&str>) {
1539        ObjectExt::set_property(self.as_ref(), "gtk-theme-name", gtk_theme_name)
1540    }
1541
1542    /// This setting determines the action to take when a double-click
1543    /// occurs on the titlebar of client-side decorated windows.
1544    ///
1545    /// Recognized actions are minimize, toggle-maximize, menu, lower
1546    /// or none.
1547    #[doc(alias = "gtk-titlebar-double-click")]
1548    fn gtk_titlebar_double_click(&self) -> Option<glib::GString> {
1549        ObjectExt::property(self.as_ref(), "gtk-titlebar-double-click")
1550    }
1551
1552    /// This setting determines the action to take when a double-click
1553    /// occurs on the titlebar of client-side decorated windows.
1554    ///
1555    /// Recognized actions are minimize, toggle-maximize, menu, lower
1556    /// or none.
1557    #[doc(alias = "gtk-titlebar-double-click")]
1558    fn set_gtk_titlebar_double_click(&self, gtk_titlebar_double_click: Option<&str>) {
1559        ObjectExt::set_property(
1560            self.as_ref(),
1561            "gtk-titlebar-double-click",
1562            gtk_titlebar_double_click,
1563        )
1564    }
1565
1566    /// This setting determines the action to take when a middle-click
1567    /// occurs on the titlebar of client-side decorated windows.
1568    ///
1569    /// Recognized actions are minimize, toggle-maximize, menu, lower
1570    /// or none.
1571    #[doc(alias = "gtk-titlebar-middle-click")]
1572    fn gtk_titlebar_middle_click(&self) -> Option<glib::GString> {
1573        ObjectExt::property(self.as_ref(), "gtk-titlebar-middle-click")
1574    }
1575
1576    /// This setting determines the action to take when a middle-click
1577    /// occurs on the titlebar of client-side decorated windows.
1578    ///
1579    /// Recognized actions are minimize, toggle-maximize, menu, lower
1580    /// or none.
1581    #[doc(alias = "gtk-titlebar-middle-click")]
1582    fn set_gtk_titlebar_middle_click(&self, gtk_titlebar_middle_click: Option<&str>) {
1583        ObjectExt::set_property(
1584            self.as_ref(),
1585            "gtk-titlebar-middle-click",
1586            gtk_titlebar_middle_click,
1587        )
1588    }
1589
1590    /// This setting determines the action to take when a right-click
1591    /// occurs on the titlebar of client-side decorated windows.
1592    ///
1593    /// Recognized actions are minimize, toggle-maximize, menu, lower
1594    /// or none.
1595    #[doc(alias = "gtk-titlebar-right-click")]
1596    fn gtk_titlebar_right_click(&self) -> Option<glib::GString> {
1597        ObjectExt::property(self.as_ref(), "gtk-titlebar-right-click")
1598    }
1599
1600    /// This setting determines the action to take when a right-click
1601    /// occurs on the titlebar of client-side decorated windows.
1602    ///
1603    /// Recognized actions are minimize, toggle-maximize, menu, lower
1604    /// or none.
1605    #[doc(alias = "gtk-titlebar-right-click")]
1606    fn set_gtk_titlebar_right_click(&self, gtk_titlebar_right_click: Option<&str>) {
1607        ObjectExt::set_property(
1608            self.as_ref(),
1609            "gtk-titlebar-right-click",
1610            gtk_titlebar_right_click,
1611        )
1612    }
1613
1614    #[doc(alias = "gtk-xft-antialias")]
1615    fn gtk_xft_antialias(&self) -> i32 {
1616        ObjectExt::property(self.as_ref(), "gtk-xft-antialias")
1617    }
1618
1619    #[doc(alias = "gtk-xft-antialias")]
1620    fn set_gtk_xft_antialias(&self, gtk_xft_antialias: i32) {
1621        ObjectExt::set_property(self.as_ref(), "gtk-xft-antialias", gtk_xft_antialias)
1622    }
1623
1624    #[doc(alias = "gtk-xft-dpi")]
1625    fn gtk_xft_dpi(&self) -> i32 {
1626        ObjectExt::property(self.as_ref(), "gtk-xft-dpi")
1627    }
1628
1629    #[doc(alias = "gtk-xft-dpi")]
1630    fn set_gtk_xft_dpi(&self, gtk_xft_dpi: i32) {
1631        ObjectExt::set_property(self.as_ref(), "gtk-xft-dpi", gtk_xft_dpi)
1632    }
1633
1634    #[doc(alias = "gtk-xft-hinting")]
1635    fn gtk_xft_hinting(&self) -> i32 {
1636        ObjectExt::property(self.as_ref(), "gtk-xft-hinting")
1637    }
1638
1639    #[doc(alias = "gtk-xft-hinting")]
1640    fn set_gtk_xft_hinting(&self, gtk_xft_hinting: i32) {
1641        ObjectExt::set_property(self.as_ref(), "gtk-xft-hinting", gtk_xft_hinting)
1642    }
1643
1644    #[doc(alias = "gtk-xft-hintstyle")]
1645    fn gtk_xft_hintstyle(&self) -> Option<glib::GString> {
1646        ObjectExt::property(self.as_ref(), "gtk-xft-hintstyle")
1647    }
1648
1649    #[doc(alias = "gtk-xft-hintstyle")]
1650    fn set_gtk_xft_hintstyle(&self, gtk_xft_hintstyle: Option<&str>) {
1651        ObjectExt::set_property(self.as_ref(), "gtk-xft-hintstyle", gtk_xft_hintstyle)
1652    }
1653
1654    #[doc(alias = "gtk-xft-rgba")]
1655    fn gtk_xft_rgba(&self) -> Option<glib::GString> {
1656        ObjectExt::property(self.as_ref(), "gtk-xft-rgba")
1657    }
1658
1659    #[doc(alias = "gtk-xft-rgba")]
1660    fn set_gtk_xft_rgba(&self, gtk_xft_rgba: Option<&str>) {
1661        ObjectExt::set_property(self.as_ref(), "gtk-xft-rgba", gtk_xft_rgba)
1662    }
1663
1664    #[doc(alias = "gtk-alternative-button-order")]
1665    fn connect_gtk_alternative_button_order_notify<F: Fn(&Self) + 'static>(
1666        &self,
1667        f: F,
1668    ) -> SignalHandlerId {
1669        unsafe extern "C" fn notify_gtk_alternative_button_order_trampoline<
1670            P: IsA<Settings>,
1671            F: Fn(&P) + 'static,
1672        >(
1673            this: *mut ffi::GtkSettings,
1674            _param_spec: glib::ffi::gpointer,
1675            f: glib::ffi::gpointer,
1676        ) {
1677            let f: &F = &*(f as *const F);
1678            f(Settings::from_glib_borrow(this).unsafe_cast_ref())
1679        }
1680        unsafe {
1681            let f: Box_<F> = Box_::new(f);
1682            connect_raw(
1683                self.as_ptr() as *mut _,
1684                b"notify::gtk-alternative-button-order\0".as_ptr() as *const _,
1685                Some(transmute::<_, unsafe extern "C" fn()>(
1686                    notify_gtk_alternative_button_order_trampoline::<Self, F> as *const (),
1687                )),
1688                Box_::into_raw(f),
1689            )
1690        }
1691    }
1692
1693    #[doc(alias = "gtk-alternative-sort-arrows")]
1694    fn connect_gtk_alternative_sort_arrows_notify<F: Fn(&Self) + 'static>(
1695        &self,
1696        f: F,
1697    ) -> SignalHandlerId {
1698        unsafe extern "C" fn notify_gtk_alternative_sort_arrows_trampoline<
1699            P: IsA<Settings>,
1700            F: Fn(&P) + 'static,
1701        >(
1702            this: *mut ffi::GtkSettings,
1703            _param_spec: glib::ffi::gpointer,
1704            f: glib::ffi::gpointer,
1705        ) {
1706            let f: &F = &*(f as *const F);
1707            f(Settings::from_glib_borrow(this).unsafe_cast_ref())
1708        }
1709        unsafe {
1710            let f: Box_<F> = Box_::new(f);
1711            connect_raw(
1712                self.as_ptr() as *mut _,
1713                b"notify::gtk-alternative-sort-arrows\0".as_ptr() as *const _,
1714                Some(transmute::<_, unsafe extern "C" fn()>(
1715                    notify_gtk_alternative_sort_arrows_trampoline::<Self, F> as *const (),
1716                )),
1717                Box_::into_raw(f),
1718            )
1719        }
1720    }
1721
1722    #[doc(alias = "gtk-application-prefer-dark-theme")]
1723    fn connect_gtk_application_prefer_dark_theme_notify<F: Fn(&Self) + 'static>(
1724        &self,
1725        f: F,
1726    ) -> SignalHandlerId {
1727        unsafe extern "C" fn notify_gtk_application_prefer_dark_theme_trampoline<
1728            P: IsA<Settings>,
1729            F: Fn(&P) + 'static,
1730        >(
1731            this: *mut ffi::GtkSettings,
1732            _param_spec: glib::ffi::gpointer,
1733            f: glib::ffi::gpointer,
1734        ) {
1735            let f: &F = &*(f as *const F);
1736            f(Settings::from_glib_borrow(this).unsafe_cast_ref())
1737        }
1738        unsafe {
1739            let f: Box_<F> = Box_::new(f);
1740            connect_raw(
1741                self.as_ptr() as *mut _,
1742                b"notify::gtk-application-prefer-dark-theme\0".as_ptr() as *const _,
1743                Some(transmute::<_, unsafe extern "C" fn()>(
1744                    notify_gtk_application_prefer_dark_theme_trampoline::<Self, F> as *const (),
1745                )),
1746                Box_::into_raw(f),
1747            )
1748        }
1749    }
1750
1751    #[cfg(feature = "v3_24")]
1752    #[cfg_attr(docsrs, doc(cfg(feature = "v3_24")))]
1753    #[doc(alias = "gtk-cursor-aspect-ratio")]
1754    fn connect_gtk_cursor_aspect_ratio_notify<F: Fn(&Self) + 'static>(
1755        &self,
1756        f: F,
1757    ) -> SignalHandlerId {
1758        unsafe extern "C" fn notify_gtk_cursor_aspect_ratio_trampoline<
1759            P: IsA<Settings>,
1760            F: Fn(&P) + 'static,
1761        >(
1762            this: *mut ffi::GtkSettings,
1763            _param_spec: glib::ffi::gpointer,
1764            f: glib::ffi::gpointer,
1765        ) {
1766            let f: &F = &*(f as *const F);
1767            f(Settings::from_glib_borrow(this).unsafe_cast_ref())
1768        }
1769        unsafe {
1770            let f: Box_<F> = Box_::new(f);
1771            connect_raw(
1772                self.as_ptr() as *mut _,
1773                b"notify::gtk-cursor-aspect-ratio\0".as_ptr() as *const _,
1774                Some(transmute::<_, unsafe extern "C" fn()>(
1775                    notify_gtk_cursor_aspect_ratio_trampoline::<Self, F> as *const (),
1776                )),
1777                Box_::into_raw(f),
1778            )
1779        }
1780    }
1781
1782    #[doc(alias = "gtk-cursor-blink")]
1783    fn connect_gtk_cursor_blink_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
1784        unsafe extern "C" fn notify_gtk_cursor_blink_trampoline<
1785            P: IsA<Settings>,
1786            F: Fn(&P) + 'static,
1787        >(
1788            this: *mut ffi::GtkSettings,
1789            _param_spec: glib::ffi::gpointer,
1790            f: glib::ffi::gpointer,
1791        ) {
1792            let f: &F = &*(f as *const F);
1793            f(Settings::from_glib_borrow(this).unsafe_cast_ref())
1794        }
1795        unsafe {
1796            let f: Box_<F> = Box_::new(f);
1797            connect_raw(
1798                self.as_ptr() as *mut _,
1799                b"notify::gtk-cursor-blink\0".as_ptr() as *const _,
1800                Some(transmute::<_, unsafe extern "C" fn()>(
1801                    notify_gtk_cursor_blink_trampoline::<Self, F> as *const (),
1802                )),
1803                Box_::into_raw(f),
1804            )
1805        }
1806    }
1807
1808    #[doc(alias = "gtk-cursor-blink-time")]
1809    fn connect_gtk_cursor_blink_time_notify<F: Fn(&Self) + 'static>(
1810        &self,
1811        f: F,
1812    ) -> SignalHandlerId {
1813        unsafe extern "C" fn notify_gtk_cursor_blink_time_trampoline<
1814            P: IsA<Settings>,
1815            F: Fn(&P) + 'static,
1816        >(
1817            this: *mut ffi::GtkSettings,
1818            _param_spec: glib::ffi::gpointer,
1819            f: glib::ffi::gpointer,
1820        ) {
1821            let f: &F = &*(f as *const F);
1822            f(Settings::from_glib_borrow(this).unsafe_cast_ref())
1823        }
1824        unsafe {
1825            let f: Box_<F> = Box_::new(f);
1826            connect_raw(
1827                self.as_ptr() as *mut _,
1828                b"notify::gtk-cursor-blink-time\0".as_ptr() as *const _,
1829                Some(transmute::<_, unsafe extern "C" fn()>(
1830                    notify_gtk_cursor_blink_time_trampoline::<Self, F> as *const (),
1831                )),
1832                Box_::into_raw(f),
1833            )
1834        }
1835    }
1836
1837    #[doc(alias = "gtk-cursor-blink-timeout")]
1838    fn connect_gtk_cursor_blink_timeout_notify<F: Fn(&Self) + 'static>(
1839        &self,
1840        f: F,
1841    ) -> SignalHandlerId {
1842        unsafe extern "C" fn notify_gtk_cursor_blink_timeout_trampoline<
1843            P: IsA<Settings>,
1844            F: Fn(&P) + 'static,
1845        >(
1846            this: *mut ffi::GtkSettings,
1847            _param_spec: glib::ffi::gpointer,
1848            f: glib::ffi::gpointer,
1849        ) {
1850            let f: &F = &*(f as *const F);
1851            f(Settings::from_glib_borrow(this).unsafe_cast_ref())
1852        }
1853        unsafe {
1854            let f: Box_<F> = Box_::new(f);
1855            connect_raw(
1856                self.as_ptr() as *mut _,
1857                b"notify::gtk-cursor-blink-timeout\0".as_ptr() as *const _,
1858                Some(transmute::<_, unsafe extern "C" fn()>(
1859                    notify_gtk_cursor_blink_timeout_trampoline::<Self, F> as *const (),
1860                )),
1861                Box_::into_raw(f),
1862            )
1863        }
1864    }
1865
1866    #[doc(alias = "gtk-cursor-theme-name")]
1867    fn connect_gtk_cursor_theme_name_notify<F: Fn(&Self) + 'static>(
1868        &self,
1869        f: F,
1870    ) -> SignalHandlerId {
1871        unsafe extern "C" fn notify_gtk_cursor_theme_name_trampoline<
1872            P: IsA<Settings>,
1873            F: Fn(&P) + 'static,
1874        >(
1875            this: *mut ffi::GtkSettings,
1876            _param_spec: glib::ffi::gpointer,
1877            f: glib::ffi::gpointer,
1878        ) {
1879            let f: &F = &*(f as *const F);
1880            f(Settings::from_glib_borrow(this).unsafe_cast_ref())
1881        }
1882        unsafe {
1883            let f: Box_<F> = Box_::new(f);
1884            connect_raw(
1885                self.as_ptr() as *mut _,
1886                b"notify::gtk-cursor-theme-name\0".as_ptr() as *const _,
1887                Some(transmute::<_, unsafe extern "C" fn()>(
1888                    notify_gtk_cursor_theme_name_trampoline::<Self, F> as *const (),
1889                )),
1890                Box_::into_raw(f),
1891            )
1892        }
1893    }
1894
1895    #[doc(alias = "gtk-cursor-theme-size")]
1896    fn connect_gtk_cursor_theme_size_notify<F: Fn(&Self) + 'static>(
1897        &self,
1898        f: F,
1899    ) -> SignalHandlerId {
1900        unsafe extern "C" fn notify_gtk_cursor_theme_size_trampoline<
1901            P: IsA<Settings>,
1902            F: Fn(&P) + 'static,
1903        >(
1904            this: *mut ffi::GtkSettings,
1905            _param_spec: glib::ffi::gpointer,
1906            f: glib::ffi::gpointer,
1907        ) {
1908            let f: &F = &*(f as *const F);
1909            f(Settings::from_glib_borrow(this).unsafe_cast_ref())
1910        }
1911        unsafe {
1912            let f: Box_<F> = Box_::new(f);
1913            connect_raw(
1914                self.as_ptr() as *mut _,
1915                b"notify::gtk-cursor-theme-size\0".as_ptr() as *const _,
1916                Some(transmute::<_, unsafe extern "C" fn()>(
1917                    notify_gtk_cursor_theme_size_trampoline::<Self, F> as *const (),
1918                )),
1919                Box_::into_raw(f),
1920            )
1921        }
1922    }
1923
1924    #[doc(alias = "gtk-decoration-layout")]
1925    fn connect_gtk_decoration_layout_notify<F: Fn(&Self) + 'static>(
1926        &self,
1927        f: F,
1928    ) -> SignalHandlerId {
1929        unsafe extern "C" fn notify_gtk_decoration_layout_trampoline<
1930            P: IsA<Settings>,
1931            F: Fn(&P) + 'static,
1932        >(
1933            this: *mut ffi::GtkSettings,
1934            _param_spec: glib::ffi::gpointer,
1935            f: glib::ffi::gpointer,
1936        ) {
1937            let f: &F = &*(f as *const F);
1938            f(Settings::from_glib_borrow(this).unsafe_cast_ref())
1939        }
1940        unsafe {
1941            let f: Box_<F> = Box_::new(f);
1942            connect_raw(
1943                self.as_ptr() as *mut _,
1944                b"notify::gtk-decoration-layout\0".as_ptr() as *const _,
1945                Some(transmute::<_, unsafe extern "C" fn()>(
1946                    notify_gtk_decoration_layout_trampoline::<Self, F> as *const (),
1947                )),
1948                Box_::into_raw(f),
1949            )
1950        }
1951    }
1952
1953    #[doc(alias = "gtk-dialogs-use-header")]
1954    fn connect_gtk_dialogs_use_header_notify<F: Fn(&Self) + 'static>(
1955        &self,
1956        f: F,
1957    ) -> SignalHandlerId {
1958        unsafe extern "C" fn notify_gtk_dialogs_use_header_trampoline<
1959            P: IsA<Settings>,
1960            F: Fn(&P) + 'static,
1961        >(
1962            this: *mut ffi::GtkSettings,
1963            _param_spec: glib::ffi::gpointer,
1964            f: glib::ffi::gpointer,
1965        ) {
1966            let f: &F = &*(f as *const F);
1967            f(Settings::from_glib_borrow(this).unsafe_cast_ref())
1968        }
1969        unsafe {
1970            let f: Box_<F> = Box_::new(f);
1971            connect_raw(
1972                self.as_ptr() as *mut _,
1973                b"notify::gtk-dialogs-use-header\0".as_ptr() as *const _,
1974                Some(transmute::<_, unsafe extern "C" fn()>(
1975                    notify_gtk_dialogs_use_header_trampoline::<Self, F> as *const (),
1976                )),
1977                Box_::into_raw(f),
1978            )
1979        }
1980    }
1981
1982    #[doc(alias = "gtk-dnd-drag-threshold")]
1983    fn connect_gtk_dnd_drag_threshold_notify<F: Fn(&Self) + 'static>(
1984        &self,
1985        f: F,
1986    ) -> SignalHandlerId {
1987        unsafe extern "C" fn notify_gtk_dnd_drag_threshold_trampoline<
1988            P: IsA<Settings>,
1989            F: Fn(&P) + 'static,
1990        >(
1991            this: *mut ffi::GtkSettings,
1992            _param_spec: glib::ffi::gpointer,
1993            f: glib::ffi::gpointer,
1994        ) {
1995            let f: &F = &*(f as *const F);
1996            f(Settings::from_glib_borrow(this).unsafe_cast_ref())
1997        }
1998        unsafe {
1999            let f: Box_<F> = Box_::new(f);
2000            connect_raw(
2001                self.as_ptr() as *mut _,
2002                b"notify::gtk-dnd-drag-threshold\0".as_ptr() as *const _,
2003                Some(transmute::<_, unsafe extern "C" fn()>(
2004                    notify_gtk_dnd_drag_threshold_trampoline::<Self, F> as *const (),
2005                )),
2006                Box_::into_raw(f),
2007            )
2008        }
2009    }
2010
2011    #[doc(alias = "gtk-double-click-distance")]
2012    fn connect_gtk_double_click_distance_notify<F: Fn(&Self) + 'static>(
2013        &self,
2014        f: F,
2015    ) -> SignalHandlerId {
2016        unsafe extern "C" fn notify_gtk_double_click_distance_trampoline<
2017            P: IsA<Settings>,
2018            F: Fn(&P) + 'static,
2019        >(
2020            this: *mut ffi::GtkSettings,
2021            _param_spec: glib::ffi::gpointer,
2022            f: glib::ffi::gpointer,
2023        ) {
2024            let f: &F = &*(f as *const F);
2025            f(Settings::from_glib_borrow(this).unsafe_cast_ref())
2026        }
2027        unsafe {
2028            let f: Box_<F> = Box_::new(f);
2029            connect_raw(
2030                self.as_ptr() as *mut _,
2031                b"notify::gtk-double-click-distance\0".as_ptr() as *const _,
2032                Some(transmute::<_, unsafe extern "C" fn()>(
2033                    notify_gtk_double_click_distance_trampoline::<Self, F> as *const (),
2034                )),
2035                Box_::into_raw(f),
2036            )
2037        }
2038    }
2039
2040    #[doc(alias = "gtk-double-click-time")]
2041    fn connect_gtk_double_click_time_notify<F: Fn(&Self) + 'static>(
2042        &self,
2043        f: F,
2044    ) -> SignalHandlerId {
2045        unsafe extern "C" fn notify_gtk_double_click_time_trampoline<
2046            P: IsA<Settings>,
2047            F: Fn(&P) + 'static,
2048        >(
2049            this: *mut ffi::GtkSettings,
2050            _param_spec: glib::ffi::gpointer,
2051            f: glib::ffi::gpointer,
2052        ) {
2053            let f: &F = &*(f as *const F);
2054            f(Settings::from_glib_borrow(this).unsafe_cast_ref())
2055        }
2056        unsafe {
2057            let f: Box_<F> = Box_::new(f);
2058            connect_raw(
2059                self.as_ptr() as *mut _,
2060                b"notify::gtk-double-click-time\0".as_ptr() as *const _,
2061                Some(transmute::<_, unsafe extern "C" fn()>(
2062                    notify_gtk_double_click_time_trampoline::<Self, F> as *const (),
2063                )),
2064                Box_::into_raw(f),
2065            )
2066        }
2067    }
2068
2069    #[doc(alias = "gtk-enable-accels")]
2070    fn connect_gtk_enable_accels_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2071        unsafe extern "C" fn notify_gtk_enable_accels_trampoline<
2072            P: IsA<Settings>,
2073            F: Fn(&P) + 'static,
2074        >(
2075            this: *mut ffi::GtkSettings,
2076            _param_spec: glib::ffi::gpointer,
2077            f: glib::ffi::gpointer,
2078        ) {
2079            let f: &F = &*(f as *const F);
2080            f(Settings::from_glib_borrow(this).unsafe_cast_ref())
2081        }
2082        unsafe {
2083            let f: Box_<F> = Box_::new(f);
2084            connect_raw(
2085                self.as_ptr() as *mut _,
2086                b"notify::gtk-enable-accels\0".as_ptr() as *const _,
2087                Some(transmute::<_, unsafe extern "C" fn()>(
2088                    notify_gtk_enable_accels_trampoline::<Self, F> as *const (),
2089                )),
2090                Box_::into_raw(f),
2091            )
2092        }
2093    }
2094
2095    #[doc(alias = "gtk-enable-animations")]
2096    fn connect_gtk_enable_animations_notify<F: Fn(&Self) + 'static>(
2097        &self,
2098        f: F,
2099    ) -> SignalHandlerId {
2100        unsafe extern "C" fn notify_gtk_enable_animations_trampoline<
2101            P: IsA<Settings>,
2102            F: Fn(&P) + 'static,
2103        >(
2104            this: *mut ffi::GtkSettings,
2105            _param_spec: glib::ffi::gpointer,
2106            f: glib::ffi::gpointer,
2107        ) {
2108            let f: &F = &*(f as *const F);
2109            f(Settings::from_glib_borrow(this).unsafe_cast_ref())
2110        }
2111        unsafe {
2112            let f: Box_<F> = Box_::new(f);
2113            connect_raw(
2114                self.as_ptr() as *mut _,
2115                b"notify::gtk-enable-animations\0".as_ptr() as *const _,
2116                Some(transmute::<_, unsafe extern "C" fn()>(
2117                    notify_gtk_enable_animations_trampoline::<Self, F> as *const (),
2118                )),
2119                Box_::into_raw(f),
2120            )
2121        }
2122    }
2123
2124    #[doc(alias = "gtk-enable-event-sounds")]
2125    fn connect_gtk_enable_event_sounds_notify<F: Fn(&Self) + 'static>(
2126        &self,
2127        f: F,
2128    ) -> SignalHandlerId {
2129        unsafe extern "C" fn notify_gtk_enable_event_sounds_trampoline<
2130            P: IsA<Settings>,
2131            F: Fn(&P) + 'static,
2132        >(
2133            this: *mut ffi::GtkSettings,
2134            _param_spec: glib::ffi::gpointer,
2135            f: glib::ffi::gpointer,
2136        ) {
2137            let f: &F = &*(f as *const F);
2138            f(Settings::from_glib_borrow(this).unsafe_cast_ref())
2139        }
2140        unsafe {
2141            let f: Box_<F> = Box_::new(f);
2142            connect_raw(
2143                self.as_ptr() as *mut _,
2144                b"notify::gtk-enable-event-sounds\0".as_ptr() as *const _,
2145                Some(transmute::<_, unsafe extern "C" fn()>(
2146                    notify_gtk_enable_event_sounds_trampoline::<Self, F> as *const (),
2147                )),
2148                Box_::into_raw(f),
2149            )
2150        }
2151    }
2152
2153    #[doc(alias = "gtk-enable-input-feedback-sounds")]
2154    fn connect_gtk_enable_input_feedback_sounds_notify<F: Fn(&Self) + 'static>(
2155        &self,
2156        f: F,
2157    ) -> SignalHandlerId {
2158        unsafe extern "C" fn notify_gtk_enable_input_feedback_sounds_trampoline<
2159            P: IsA<Settings>,
2160            F: Fn(&P) + 'static,
2161        >(
2162            this: *mut ffi::GtkSettings,
2163            _param_spec: glib::ffi::gpointer,
2164            f: glib::ffi::gpointer,
2165        ) {
2166            let f: &F = &*(f as *const F);
2167            f(Settings::from_glib_borrow(this).unsafe_cast_ref())
2168        }
2169        unsafe {
2170            let f: Box_<F> = Box_::new(f);
2171            connect_raw(
2172                self.as_ptr() as *mut _,
2173                b"notify::gtk-enable-input-feedback-sounds\0".as_ptr() as *const _,
2174                Some(transmute::<_, unsafe extern "C" fn()>(
2175                    notify_gtk_enable_input_feedback_sounds_trampoline::<Self, F> as *const (),
2176                )),
2177                Box_::into_raw(f),
2178            )
2179        }
2180    }
2181
2182    #[doc(alias = "gtk-enable-primary-paste")]
2183    fn connect_gtk_enable_primary_paste_notify<F: Fn(&Self) + 'static>(
2184        &self,
2185        f: F,
2186    ) -> SignalHandlerId {
2187        unsafe extern "C" fn notify_gtk_enable_primary_paste_trampoline<
2188            P: IsA<Settings>,
2189            F: Fn(&P) + 'static,
2190        >(
2191            this: *mut ffi::GtkSettings,
2192            _param_spec: glib::ffi::gpointer,
2193            f: glib::ffi::gpointer,
2194        ) {
2195            let f: &F = &*(f as *const F);
2196            f(Settings::from_glib_borrow(this).unsafe_cast_ref())
2197        }
2198        unsafe {
2199            let f: Box_<F> = Box_::new(f);
2200            connect_raw(
2201                self.as_ptr() as *mut _,
2202                b"notify::gtk-enable-primary-paste\0".as_ptr() as *const _,
2203                Some(transmute::<_, unsafe extern "C" fn()>(
2204                    notify_gtk_enable_primary_paste_trampoline::<Self, F> as *const (),
2205                )),
2206                Box_::into_raw(f),
2207            )
2208        }
2209    }
2210
2211    #[doc(alias = "gtk-entry-password-hint-timeout")]
2212    fn connect_gtk_entry_password_hint_timeout_notify<F: Fn(&Self) + 'static>(
2213        &self,
2214        f: F,
2215    ) -> SignalHandlerId {
2216        unsafe extern "C" fn notify_gtk_entry_password_hint_timeout_trampoline<
2217            P: IsA<Settings>,
2218            F: Fn(&P) + 'static,
2219        >(
2220            this: *mut ffi::GtkSettings,
2221            _param_spec: glib::ffi::gpointer,
2222            f: glib::ffi::gpointer,
2223        ) {
2224            let f: &F = &*(f as *const F);
2225            f(Settings::from_glib_borrow(this).unsafe_cast_ref())
2226        }
2227        unsafe {
2228            let f: Box_<F> = Box_::new(f);
2229            connect_raw(
2230                self.as_ptr() as *mut _,
2231                b"notify::gtk-entry-password-hint-timeout\0".as_ptr() as *const _,
2232                Some(transmute::<_, unsafe extern "C" fn()>(
2233                    notify_gtk_entry_password_hint_timeout_trampoline::<Self, F> as *const (),
2234                )),
2235                Box_::into_raw(f),
2236            )
2237        }
2238    }
2239
2240    #[doc(alias = "gtk-entry-select-on-focus")]
2241    fn connect_gtk_entry_select_on_focus_notify<F: Fn(&Self) + 'static>(
2242        &self,
2243        f: F,
2244    ) -> SignalHandlerId {
2245        unsafe extern "C" fn notify_gtk_entry_select_on_focus_trampoline<
2246            P: IsA<Settings>,
2247            F: Fn(&P) + 'static,
2248        >(
2249            this: *mut ffi::GtkSettings,
2250            _param_spec: glib::ffi::gpointer,
2251            f: glib::ffi::gpointer,
2252        ) {
2253            let f: &F = &*(f as *const F);
2254            f(Settings::from_glib_borrow(this).unsafe_cast_ref())
2255        }
2256        unsafe {
2257            let f: Box_<F> = Box_::new(f);
2258            connect_raw(
2259                self.as_ptr() as *mut _,
2260                b"notify::gtk-entry-select-on-focus\0".as_ptr() as *const _,
2261                Some(transmute::<_, unsafe extern "C" fn()>(
2262                    notify_gtk_entry_select_on_focus_trampoline::<Self, F> as *const (),
2263                )),
2264                Box_::into_raw(f),
2265            )
2266        }
2267    }
2268
2269    #[doc(alias = "gtk-error-bell")]
2270    fn connect_gtk_error_bell_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2271        unsafe extern "C" fn notify_gtk_error_bell_trampoline<
2272            P: IsA<Settings>,
2273            F: Fn(&P) + 'static,
2274        >(
2275            this: *mut ffi::GtkSettings,
2276            _param_spec: glib::ffi::gpointer,
2277            f: glib::ffi::gpointer,
2278        ) {
2279            let f: &F = &*(f as *const F);
2280            f(Settings::from_glib_borrow(this).unsafe_cast_ref())
2281        }
2282        unsafe {
2283            let f: Box_<F> = Box_::new(f);
2284            connect_raw(
2285                self.as_ptr() as *mut _,
2286                b"notify::gtk-error-bell\0".as_ptr() as *const _,
2287                Some(transmute::<_, unsafe extern "C" fn()>(
2288                    notify_gtk_error_bell_trampoline::<Self, F> as *const (),
2289                )),
2290                Box_::into_raw(f),
2291            )
2292        }
2293    }
2294
2295    #[doc(alias = "gtk-font-name")]
2296    fn connect_gtk_font_name_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2297        unsafe extern "C" fn notify_gtk_font_name_trampoline<
2298            P: IsA<Settings>,
2299            F: Fn(&P) + 'static,
2300        >(
2301            this: *mut ffi::GtkSettings,
2302            _param_spec: glib::ffi::gpointer,
2303            f: glib::ffi::gpointer,
2304        ) {
2305            let f: &F = &*(f as *const F);
2306            f(Settings::from_glib_borrow(this).unsafe_cast_ref())
2307        }
2308        unsafe {
2309            let f: Box_<F> = Box_::new(f);
2310            connect_raw(
2311                self.as_ptr() as *mut _,
2312                b"notify::gtk-font-name\0".as_ptr() as *const _,
2313                Some(transmute::<_, unsafe extern "C" fn()>(
2314                    notify_gtk_font_name_trampoline::<Self, F> as *const (),
2315                )),
2316                Box_::into_raw(f),
2317            )
2318        }
2319    }
2320
2321    #[doc(alias = "gtk-fontconfig-timestamp")]
2322    fn connect_gtk_fontconfig_timestamp_notify<F: Fn(&Self) + 'static>(
2323        &self,
2324        f: F,
2325    ) -> SignalHandlerId {
2326        unsafe extern "C" fn notify_gtk_fontconfig_timestamp_trampoline<
2327            P: IsA<Settings>,
2328            F: Fn(&P) + 'static,
2329        >(
2330            this: *mut ffi::GtkSettings,
2331            _param_spec: glib::ffi::gpointer,
2332            f: glib::ffi::gpointer,
2333        ) {
2334            let f: &F = &*(f as *const F);
2335            f(Settings::from_glib_borrow(this).unsafe_cast_ref())
2336        }
2337        unsafe {
2338            let f: Box_<F> = Box_::new(f);
2339            connect_raw(
2340                self.as_ptr() as *mut _,
2341                b"notify::gtk-fontconfig-timestamp\0".as_ptr() as *const _,
2342                Some(transmute::<_, unsafe extern "C" fn()>(
2343                    notify_gtk_fontconfig_timestamp_trampoline::<Self, F> as *const (),
2344                )),
2345                Box_::into_raw(f),
2346            )
2347        }
2348    }
2349
2350    #[doc(alias = "gtk-icon-theme-name")]
2351    fn connect_gtk_icon_theme_name_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2352        unsafe extern "C" fn notify_gtk_icon_theme_name_trampoline<
2353            P: IsA<Settings>,
2354            F: Fn(&P) + 'static,
2355        >(
2356            this: *mut ffi::GtkSettings,
2357            _param_spec: glib::ffi::gpointer,
2358            f: glib::ffi::gpointer,
2359        ) {
2360            let f: &F = &*(f as *const F);
2361            f(Settings::from_glib_borrow(this).unsafe_cast_ref())
2362        }
2363        unsafe {
2364            let f: Box_<F> = Box_::new(f);
2365            connect_raw(
2366                self.as_ptr() as *mut _,
2367                b"notify::gtk-icon-theme-name\0".as_ptr() as *const _,
2368                Some(transmute::<_, unsafe extern "C" fn()>(
2369                    notify_gtk_icon_theme_name_trampoline::<Self, F> as *const (),
2370                )),
2371                Box_::into_raw(f),
2372            )
2373        }
2374    }
2375
2376    #[doc(alias = "gtk-im-module")]
2377    fn connect_gtk_im_module_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2378        unsafe extern "C" fn notify_gtk_im_module_trampoline<
2379            P: IsA<Settings>,
2380            F: Fn(&P) + 'static,
2381        >(
2382            this: *mut ffi::GtkSettings,
2383            _param_spec: glib::ffi::gpointer,
2384            f: glib::ffi::gpointer,
2385        ) {
2386            let f: &F = &*(f as *const F);
2387            f(Settings::from_glib_borrow(this).unsafe_cast_ref())
2388        }
2389        unsafe {
2390            let f: Box_<F> = Box_::new(f);
2391            connect_raw(
2392                self.as_ptr() as *mut _,
2393                b"notify::gtk-im-module\0".as_ptr() as *const _,
2394                Some(transmute::<_, unsafe extern "C" fn()>(
2395                    notify_gtk_im_module_trampoline::<Self, F> as *const (),
2396                )),
2397                Box_::into_raw(f),
2398            )
2399        }
2400    }
2401
2402    #[doc(alias = "gtk-key-theme-name")]
2403    fn connect_gtk_key_theme_name_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2404        unsafe extern "C" fn notify_gtk_key_theme_name_trampoline<
2405            P: IsA<Settings>,
2406            F: Fn(&P) + 'static,
2407        >(
2408            this: *mut ffi::GtkSettings,
2409            _param_spec: glib::ffi::gpointer,
2410            f: glib::ffi::gpointer,
2411        ) {
2412            let f: &F = &*(f as *const F);
2413            f(Settings::from_glib_borrow(this).unsafe_cast_ref())
2414        }
2415        unsafe {
2416            let f: Box_<F> = Box_::new(f);
2417            connect_raw(
2418                self.as_ptr() as *mut _,
2419                b"notify::gtk-key-theme-name\0".as_ptr() as *const _,
2420                Some(transmute::<_, unsafe extern "C" fn()>(
2421                    notify_gtk_key_theme_name_trampoline::<Self, F> as *const (),
2422                )),
2423                Box_::into_raw(f),
2424            )
2425        }
2426    }
2427
2428    #[doc(alias = "gtk-keynav-use-caret")]
2429    fn connect_gtk_keynav_use_caret_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2430        unsafe extern "C" fn notify_gtk_keynav_use_caret_trampoline<
2431            P: IsA<Settings>,
2432            F: Fn(&P) + 'static,
2433        >(
2434            this: *mut ffi::GtkSettings,
2435            _param_spec: glib::ffi::gpointer,
2436            f: glib::ffi::gpointer,
2437        ) {
2438            let f: &F = &*(f as *const F);
2439            f(Settings::from_glib_borrow(this).unsafe_cast_ref())
2440        }
2441        unsafe {
2442            let f: Box_<F> = Box_::new(f);
2443            connect_raw(
2444                self.as_ptr() as *mut _,
2445                b"notify::gtk-keynav-use-caret\0".as_ptr() as *const _,
2446                Some(transmute::<_, unsafe extern "C" fn()>(
2447                    notify_gtk_keynav_use_caret_trampoline::<Self, F> as *const (),
2448                )),
2449                Box_::into_raw(f),
2450            )
2451        }
2452    }
2453
2454    #[doc(alias = "gtk-label-select-on-focus")]
2455    fn connect_gtk_label_select_on_focus_notify<F: Fn(&Self) + 'static>(
2456        &self,
2457        f: F,
2458    ) -> SignalHandlerId {
2459        unsafe extern "C" fn notify_gtk_label_select_on_focus_trampoline<
2460            P: IsA<Settings>,
2461            F: Fn(&P) + 'static,
2462        >(
2463            this: *mut ffi::GtkSettings,
2464            _param_spec: glib::ffi::gpointer,
2465            f: glib::ffi::gpointer,
2466        ) {
2467            let f: &F = &*(f as *const F);
2468            f(Settings::from_glib_borrow(this).unsafe_cast_ref())
2469        }
2470        unsafe {
2471            let f: Box_<F> = Box_::new(f);
2472            connect_raw(
2473                self.as_ptr() as *mut _,
2474                b"notify::gtk-label-select-on-focus\0".as_ptr() as *const _,
2475                Some(transmute::<_, unsafe extern "C" fn()>(
2476                    notify_gtk_label_select_on_focus_trampoline::<Self, F> as *const (),
2477                )),
2478                Box_::into_raw(f),
2479            )
2480        }
2481    }
2482
2483    #[doc(alias = "gtk-long-press-time")]
2484    fn connect_gtk_long_press_time_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2485        unsafe extern "C" fn notify_gtk_long_press_time_trampoline<
2486            P: IsA<Settings>,
2487            F: Fn(&P) + 'static,
2488        >(
2489            this: *mut ffi::GtkSettings,
2490            _param_spec: glib::ffi::gpointer,
2491            f: glib::ffi::gpointer,
2492        ) {
2493            let f: &F = &*(f as *const F);
2494            f(Settings::from_glib_borrow(this).unsafe_cast_ref())
2495        }
2496        unsafe {
2497            let f: Box_<F> = Box_::new(f);
2498            connect_raw(
2499                self.as_ptr() as *mut _,
2500                b"notify::gtk-long-press-time\0".as_ptr() as *const _,
2501                Some(transmute::<_, unsafe extern "C" fn()>(
2502                    notify_gtk_long_press_time_trampoline::<Self, F> as *const (),
2503                )),
2504                Box_::into_raw(f),
2505            )
2506        }
2507    }
2508
2509    #[doc(alias = "gtk-modules")]
2510    fn connect_gtk_modules_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2511        unsafe extern "C" fn notify_gtk_modules_trampoline<
2512            P: IsA<Settings>,
2513            F: Fn(&P) + 'static,
2514        >(
2515            this: *mut ffi::GtkSettings,
2516            _param_spec: glib::ffi::gpointer,
2517            f: glib::ffi::gpointer,
2518        ) {
2519            let f: &F = &*(f as *const F);
2520            f(Settings::from_glib_borrow(this).unsafe_cast_ref())
2521        }
2522        unsafe {
2523            let f: Box_<F> = Box_::new(f);
2524            connect_raw(
2525                self.as_ptr() as *mut _,
2526                b"notify::gtk-modules\0".as_ptr() as *const _,
2527                Some(transmute::<_, unsafe extern "C" fn()>(
2528                    notify_gtk_modules_trampoline::<Self, F> as *const (),
2529                )),
2530                Box_::into_raw(f),
2531            )
2532        }
2533    }
2534
2535    #[cfg(feature = "v3_24_9")]
2536    #[cfg_attr(docsrs, doc(cfg(feature = "v3_24_9")))]
2537    #[doc(alias = "gtk-overlay-scrolling")]
2538    fn connect_gtk_overlay_scrolling_notify<F: Fn(&Self) + 'static>(
2539        &self,
2540        f: F,
2541    ) -> SignalHandlerId {
2542        unsafe extern "C" fn notify_gtk_overlay_scrolling_trampoline<
2543            P: IsA<Settings>,
2544            F: Fn(&P) + 'static,
2545        >(
2546            this: *mut ffi::GtkSettings,
2547            _param_spec: glib::ffi::gpointer,
2548            f: glib::ffi::gpointer,
2549        ) {
2550            let f: &F = &*(f as *const F);
2551            f(Settings::from_glib_borrow(this).unsafe_cast_ref())
2552        }
2553        unsafe {
2554            let f: Box_<F> = Box_::new(f);
2555            connect_raw(
2556                self.as_ptr() as *mut _,
2557                b"notify::gtk-overlay-scrolling\0".as_ptr() as *const _,
2558                Some(transmute::<_, unsafe extern "C" fn()>(
2559                    notify_gtk_overlay_scrolling_trampoline::<Self, F> as *const (),
2560                )),
2561                Box_::into_raw(f),
2562            )
2563        }
2564    }
2565
2566    #[doc(alias = "gtk-primary-button-warps-slider")]
2567    fn connect_gtk_primary_button_warps_slider_notify<F: Fn(&Self) + 'static>(
2568        &self,
2569        f: F,
2570    ) -> SignalHandlerId {
2571        unsafe extern "C" fn notify_gtk_primary_button_warps_slider_trampoline<
2572            P: IsA<Settings>,
2573            F: Fn(&P) + 'static,
2574        >(
2575            this: *mut ffi::GtkSettings,
2576            _param_spec: glib::ffi::gpointer,
2577            f: glib::ffi::gpointer,
2578        ) {
2579            let f: &F = &*(f as *const F);
2580            f(Settings::from_glib_borrow(this).unsafe_cast_ref())
2581        }
2582        unsafe {
2583            let f: Box_<F> = Box_::new(f);
2584            connect_raw(
2585                self.as_ptr() as *mut _,
2586                b"notify::gtk-primary-button-warps-slider\0".as_ptr() as *const _,
2587                Some(transmute::<_, unsafe extern "C" fn()>(
2588                    notify_gtk_primary_button_warps_slider_trampoline::<Self, F> as *const (),
2589                )),
2590                Box_::into_raw(f),
2591            )
2592        }
2593    }
2594
2595    #[doc(alias = "gtk-print-backends")]
2596    fn connect_gtk_print_backends_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2597        unsafe extern "C" fn notify_gtk_print_backends_trampoline<
2598            P: IsA<Settings>,
2599            F: Fn(&P) + 'static,
2600        >(
2601            this: *mut ffi::GtkSettings,
2602            _param_spec: glib::ffi::gpointer,
2603            f: glib::ffi::gpointer,
2604        ) {
2605            let f: &F = &*(f as *const F);
2606            f(Settings::from_glib_borrow(this).unsafe_cast_ref())
2607        }
2608        unsafe {
2609            let f: Box_<F> = Box_::new(f);
2610            connect_raw(
2611                self.as_ptr() as *mut _,
2612                b"notify::gtk-print-backends\0".as_ptr() as *const _,
2613                Some(transmute::<_, unsafe extern "C" fn()>(
2614                    notify_gtk_print_backends_trampoline::<Self, F> as *const (),
2615                )),
2616                Box_::into_raw(f),
2617            )
2618        }
2619    }
2620
2621    #[doc(alias = "gtk-print-preview-command")]
2622    fn connect_gtk_print_preview_command_notify<F: Fn(&Self) + 'static>(
2623        &self,
2624        f: F,
2625    ) -> SignalHandlerId {
2626        unsafe extern "C" fn notify_gtk_print_preview_command_trampoline<
2627            P: IsA<Settings>,
2628            F: Fn(&P) + 'static,
2629        >(
2630            this: *mut ffi::GtkSettings,
2631            _param_spec: glib::ffi::gpointer,
2632            f: glib::ffi::gpointer,
2633        ) {
2634            let f: &F = &*(f as *const F);
2635            f(Settings::from_glib_borrow(this).unsafe_cast_ref())
2636        }
2637        unsafe {
2638            let f: Box_<F> = Box_::new(f);
2639            connect_raw(
2640                self.as_ptr() as *mut _,
2641                b"notify::gtk-print-preview-command\0".as_ptr() as *const _,
2642                Some(transmute::<_, unsafe extern "C" fn()>(
2643                    notify_gtk_print_preview_command_trampoline::<Self, F> as *const (),
2644                )),
2645                Box_::into_raw(f),
2646            )
2647        }
2648    }
2649
2650    #[doc(alias = "gtk-recent-files-enabled")]
2651    fn connect_gtk_recent_files_enabled_notify<F: Fn(&Self) + 'static>(
2652        &self,
2653        f: F,
2654    ) -> SignalHandlerId {
2655        unsafe extern "C" fn notify_gtk_recent_files_enabled_trampoline<
2656            P: IsA<Settings>,
2657            F: Fn(&P) + 'static,
2658        >(
2659            this: *mut ffi::GtkSettings,
2660            _param_spec: glib::ffi::gpointer,
2661            f: glib::ffi::gpointer,
2662        ) {
2663            let f: &F = &*(f as *const F);
2664            f(Settings::from_glib_borrow(this).unsafe_cast_ref())
2665        }
2666        unsafe {
2667            let f: Box_<F> = Box_::new(f);
2668            connect_raw(
2669                self.as_ptr() as *mut _,
2670                b"notify::gtk-recent-files-enabled\0".as_ptr() as *const _,
2671                Some(transmute::<_, unsafe extern "C" fn()>(
2672                    notify_gtk_recent_files_enabled_trampoline::<Self, F> as *const (),
2673                )),
2674                Box_::into_raw(f),
2675            )
2676        }
2677    }
2678
2679    #[doc(alias = "gtk-recent-files-max-age")]
2680    fn connect_gtk_recent_files_max_age_notify<F: Fn(&Self) + 'static>(
2681        &self,
2682        f: F,
2683    ) -> SignalHandlerId {
2684        unsafe extern "C" fn notify_gtk_recent_files_max_age_trampoline<
2685            P: IsA<Settings>,
2686            F: Fn(&P) + 'static,
2687        >(
2688            this: *mut ffi::GtkSettings,
2689            _param_spec: glib::ffi::gpointer,
2690            f: glib::ffi::gpointer,
2691        ) {
2692            let f: &F = &*(f as *const F);
2693            f(Settings::from_glib_borrow(this).unsafe_cast_ref())
2694        }
2695        unsafe {
2696            let f: Box_<F> = Box_::new(f);
2697            connect_raw(
2698                self.as_ptr() as *mut _,
2699                b"notify::gtk-recent-files-max-age\0".as_ptr() as *const _,
2700                Some(transmute::<_, unsafe extern "C" fn()>(
2701                    notify_gtk_recent_files_max_age_trampoline::<Self, F> as *const (),
2702                )),
2703                Box_::into_raw(f),
2704            )
2705        }
2706    }
2707
2708    #[doc(alias = "gtk-shell-shows-app-menu")]
2709    fn connect_gtk_shell_shows_app_menu_notify<F: Fn(&Self) + 'static>(
2710        &self,
2711        f: F,
2712    ) -> SignalHandlerId {
2713        unsafe extern "C" fn notify_gtk_shell_shows_app_menu_trampoline<
2714            P: IsA<Settings>,
2715            F: Fn(&P) + 'static,
2716        >(
2717            this: *mut ffi::GtkSettings,
2718            _param_spec: glib::ffi::gpointer,
2719            f: glib::ffi::gpointer,
2720        ) {
2721            let f: &F = &*(f as *const F);
2722            f(Settings::from_glib_borrow(this).unsafe_cast_ref())
2723        }
2724        unsafe {
2725            let f: Box_<F> = Box_::new(f);
2726            connect_raw(
2727                self.as_ptr() as *mut _,
2728                b"notify::gtk-shell-shows-app-menu\0".as_ptr() as *const _,
2729                Some(transmute::<_, unsafe extern "C" fn()>(
2730                    notify_gtk_shell_shows_app_menu_trampoline::<Self, F> as *const (),
2731                )),
2732                Box_::into_raw(f),
2733            )
2734        }
2735    }
2736
2737    #[doc(alias = "gtk-shell-shows-desktop")]
2738    fn connect_gtk_shell_shows_desktop_notify<F: Fn(&Self) + 'static>(
2739        &self,
2740        f: F,
2741    ) -> SignalHandlerId {
2742        unsafe extern "C" fn notify_gtk_shell_shows_desktop_trampoline<
2743            P: IsA<Settings>,
2744            F: Fn(&P) + 'static,
2745        >(
2746            this: *mut ffi::GtkSettings,
2747            _param_spec: glib::ffi::gpointer,
2748            f: glib::ffi::gpointer,
2749        ) {
2750            let f: &F = &*(f as *const F);
2751            f(Settings::from_glib_borrow(this).unsafe_cast_ref())
2752        }
2753        unsafe {
2754            let f: Box_<F> = Box_::new(f);
2755            connect_raw(
2756                self.as_ptr() as *mut _,
2757                b"notify::gtk-shell-shows-desktop\0".as_ptr() as *const _,
2758                Some(transmute::<_, unsafe extern "C" fn()>(
2759                    notify_gtk_shell_shows_desktop_trampoline::<Self, F> as *const (),
2760                )),
2761                Box_::into_raw(f),
2762            )
2763        }
2764    }
2765
2766    #[doc(alias = "gtk-shell-shows-menubar")]
2767    fn connect_gtk_shell_shows_menubar_notify<F: Fn(&Self) + 'static>(
2768        &self,
2769        f: F,
2770    ) -> SignalHandlerId {
2771        unsafe extern "C" fn notify_gtk_shell_shows_menubar_trampoline<
2772            P: IsA<Settings>,
2773            F: Fn(&P) + 'static,
2774        >(
2775            this: *mut ffi::GtkSettings,
2776            _param_spec: glib::ffi::gpointer,
2777            f: glib::ffi::gpointer,
2778        ) {
2779            let f: &F = &*(f as *const F);
2780            f(Settings::from_glib_borrow(this).unsafe_cast_ref())
2781        }
2782        unsafe {
2783            let f: Box_<F> = Box_::new(f);
2784            connect_raw(
2785                self.as_ptr() as *mut _,
2786                b"notify::gtk-shell-shows-menubar\0".as_ptr() as *const _,
2787                Some(transmute::<_, unsafe extern "C" fn()>(
2788                    notify_gtk_shell_shows_menubar_trampoline::<Self, F> as *const (),
2789                )),
2790                Box_::into_raw(f),
2791            )
2792        }
2793    }
2794
2795    #[doc(alias = "gtk-sound-theme-name")]
2796    fn connect_gtk_sound_theme_name_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2797        unsafe extern "C" fn notify_gtk_sound_theme_name_trampoline<
2798            P: IsA<Settings>,
2799            F: Fn(&P) + 'static,
2800        >(
2801            this: *mut ffi::GtkSettings,
2802            _param_spec: glib::ffi::gpointer,
2803            f: glib::ffi::gpointer,
2804        ) {
2805            let f: &F = &*(f as *const F);
2806            f(Settings::from_glib_borrow(this).unsafe_cast_ref())
2807        }
2808        unsafe {
2809            let f: Box_<F> = Box_::new(f);
2810            connect_raw(
2811                self.as_ptr() as *mut _,
2812                b"notify::gtk-sound-theme-name\0".as_ptr() as *const _,
2813                Some(transmute::<_, unsafe extern "C" fn()>(
2814                    notify_gtk_sound_theme_name_trampoline::<Self, F> as *const (),
2815                )),
2816                Box_::into_raw(f),
2817            )
2818        }
2819    }
2820
2821    #[doc(alias = "gtk-split-cursor")]
2822    fn connect_gtk_split_cursor_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2823        unsafe extern "C" fn notify_gtk_split_cursor_trampoline<
2824            P: IsA<Settings>,
2825            F: Fn(&P) + 'static,
2826        >(
2827            this: *mut ffi::GtkSettings,
2828            _param_spec: glib::ffi::gpointer,
2829            f: glib::ffi::gpointer,
2830        ) {
2831            let f: &F = &*(f as *const F);
2832            f(Settings::from_glib_borrow(this).unsafe_cast_ref())
2833        }
2834        unsafe {
2835            let f: Box_<F> = Box_::new(f);
2836            connect_raw(
2837                self.as_ptr() as *mut _,
2838                b"notify::gtk-split-cursor\0".as_ptr() as *const _,
2839                Some(transmute::<_, unsafe extern "C" fn()>(
2840                    notify_gtk_split_cursor_trampoline::<Self, F> as *const (),
2841                )),
2842                Box_::into_raw(f),
2843            )
2844        }
2845    }
2846
2847    #[doc(alias = "gtk-theme-name")]
2848    fn connect_gtk_theme_name_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2849        unsafe extern "C" fn notify_gtk_theme_name_trampoline<
2850            P: IsA<Settings>,
2851            F: Fn(&P) + 'static,
2852        >(
2853            this: *mut ffi::GtkSettings,
2854            _param_spec: glib::ffi::gpointer,
2855            f: glib::ffi::gpointer,
2856        ) {
2857            let f: &F = &*(f as *const F);
2858            f(Settings::from_glib_borrow(this).unsafe_cast_ref())
2859        }
2860        unsafe {
2861            let f: Box_<F> = Box_::new(f);
2862            connect_raw(
2863                self.as_ptr() as *mut _,
2864                b"notify::gtk-theme-name\0".as_ptr() as *const _,
2865                Some(transmute::<_, unsafe extern "C" fn()>(
2866                    notify_gtk_theme_name_trampoline::<Self, F> as *const (),
2867                )),
2868                Box_::into_raw(f),
2869            )
2870        }
2871    }
2872
2873    #[doc(alias = "gtk-titlebar-double-click")]
2874    fn connect_gtk_titlebar_double_click_notify<F: Fn(&Self) + 'static>(
2875        &self,
2876        f: F,
2877    ) -> SignalHandlerId {
2878        unsafe extern "C" fn notify_gtk_titlebar_double_click_trampoline<
2879            P: IsA<Settings>,
2880            F: Fn(&P) + 'static,
2881        >(
2882            this: *mut ffi::GtkSettings,
2883            _param_spec: glib::ffi::gpointer,
2884            f: glib::ffi::gpointer,
2885        ) {
2886            let f: &F = &*(f as *const F);
2887            f(Settings::from_glib_borrow(this).unsafe_cast_ref())
2888        }
2889        unsafe {
2890            let f: Box_<F> = Box_::new(f);
2891            connect_raw(
2892                self.as_ptr() as *mut _,
2893                b"notify::gtk-titlebar-double-click\0".as_ptr() as *const _,
2894                Some(transmute::<_, unsafe extern "C" fn()>(
2895                    notify_gtk_titlebar_double_click_trampoline::<Self, F> as *const (),
2896                )),
2897                Box_::into_raw(f),
2898            )
2899        }
2900    }
2901
2902    #[doc(alias = "gtk-titlebar-middle-click")]
2903    fn connect_gtk_titlebar_middle_click_notify<F: Fn(&Self) + 'static>(
2904        &self,
2905        f: F,
2906    ) -> SignalHandlerId {
2907        unsafe extern "C" fn notify_gtk_titlebar_middle_click_trampoline<
2908            P: IsA<Settings>,
2909            F: Fn(&P) + 'static,
2910        >(
2911            this: *mut ffi::GtkSettings,
2912            _param_spec: glib::ffi::gpointer,
2913            f: glib::ffi::gpointer,
2914        ) {
2915            let f: &F = &*(f as *const F);
2916            f(Settings::from_glib_borrow(this).unsafe_cast_ref())
2917        }
2918        unsafe {
2919            let f: Box_<F> = Box_::new(f);
2920            connect_raw(
2921                self.as_ptr() as *mut _,
2922                b"notify::gtk-titlebar-middle-click\0".as_ptr() as *const _,
2923                Some(transmute::<_, unsafe extern "C" fn()>(
2924                    notify_gtk_titlebar_middle_click_trampoline::<Self, F> as *const (),
2925                )),
2926                Box_::into_raw(f),
2927            )
2928        }
2929    }
2930
2931    #[doc(alias = "gtk-titlebar-right-click")]
2932    fn connect_gtk_titlebar_right_click_notify<F: Fn(&Self) + 'static>(
2933        &self,
2934        f: F,
2935    ) -> SignalHandlerId {
2936        unsafe extern "C" fn notify_gtk_titlebar_right_click_trampoline<
2937            P: IsA<Settings>,
2938            F: Fn(&P) + 'static,
2939        >(
2940            this: *mut ffi::GtkSettings,
2941            _param_spec: glib::ffi::gpointer,
2942            f: glib::ffi::gpointer,
2943        ) {
2944            let f: &F = &*(f as *const F);
2945            f(Settings::from_glib_borrow(this).unsafe_cast_ref())
2946        }
2947        unsafe {
2948            let f: Box_<F> = Box_::new(f);
2949            connect_raw(
2950                self.as_ptr() as *mut _,
2951                b"notify::gtk-titlebar-right-click\0".as_ptr() as *const _,
2952                Some(transmute::<_, unsafe extern "C" fn()>(
2953                    notify_gtk_titlebar_right_click_trampoline::<Self, F> as *const (),
2954                )),
2955                Box_::into_raw(f),
2956            )
2957        }
2958    }
2959
2960    #[doc(alias = "gtk-xft-antialias")]
2961    fn connect_gtk_xft_antialias_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2962        unsafe extern "C" fn notify_gtk_xft_antialias_trampoline<
2963            P: IsA<Settings>,
2964            F: Fn(&P) + 'static,
2965        >(
2966            this: *mut ffi::GtkSettings,
2967            _param_spec: glib::ffi::gpointer,
2968            f: glib::ffi::gpointer,
2969        ) {
2970            let f: &F = &*(f as *const F);
2971            f(Settings::from_glib_borrow(this).unsafe_cast_ref())
2972        }
2973        unsafe {
2974            let f: Box_<F> = Box_::new(f);
2975            connect_raw(
2976                self.as_ptr() as *mut _,
2977                b"notify::gtk-xft-antialias\0".as_ptr() as *const _,
2978                Some(transmute::<_, unsafe extern "C" fn()>(
2979                    notify_gtk_xft_antialias_trampoline::<Self, F> as *const (),
2980                )),
2981                Box_::into_raw(f),
2982            )
2983        }
2984    }
2985
2986    #[doc(alias = "gtk-xft-dpi")]
2987    fn connect_gtk_xft_dpi_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
2988        unsafe extern "C" fn notify_gtk_xft_dpi_trampoline<
2989            P: IsA<Settings>,
2990            F: Fn(&P) + 'static,
2991        >(
2992            this: *mut ffi::GtkSettings,
2993            _param_spec: glib::ffi::gpointer,
2994            f: glib::ffi::gpointer,
2995        ) {
2996            let f: &F = &*(f as *const F);
2997            f(Settings::from_glib_borrow(this).unsafe_cast_ref())
2998        }
2999        unsafe {
3000            let f: Box_<F> = Box_::new(f);
3001            connect_raw(
3002                self.as_ptr() as *mut _,
3003                b"notify::gtk-xft-dpi\0".as_ptr() as *const _,
3004                Some(transmute::<_, unsafe extern "C" fn()>(
3005                    notify_gtk_xft_dpi_trampoline::<Self, F> as *const (),
3006                )),
3007                Box_::into_raw(f),
3008            )
3009        }
3010    }
3011
3012    #[doc(alias = "gtk-xft-hinting")]
3013    fn connect_gtk_xft_hinting_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3014        unsafe extern "C" fn notify_gtk_xft_hinting_trampoline<
3015            P: IsA<Settings>,
3016            F: Fn(&P) + 'static,
3017        >(
3018            this: *mut ffi::GtkSettings,
3019            _param_spec: glib::ffi::gpointer,
3020            f: glib::ffi::gpointer,
3021        ) {
3022            let f: &F = &*(f as *const F);
3023            f(Settings::from_glib_borrow(this).unsafe_cast_ref())
3024        }
3025        unsafe {
3026            let f: Box_<F> = Box_::new(f);
3027            connect_raw(
3028                self.as_ptr() as *mut _,
3029                b"notify::gtk-xft-hinting\0".as_ptr() as *const _,
3030                Some(transmute::<_, unsafe extern "C" fn()>(
3031                    notify_gtk_xft_hinting_trampoline::<Self, F> as *const (),
3032                )),
3033                Box_::into_raw(f),
3034            )
3035        }
3036    }
3037
3038    #[doc(alias = "gtk-xft-hintstyle")]
3039    fn connect_gtk_xft_hintstyle_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3040        unsafe extern "C" fn notify_gtk_xft_hintstyle_trampoline<
3041            P: IsA<Settings>,
3042            F: Fn(&P) + 'static,
3043        >(
3044            this: *mut ffi::GtkSettings,
3045            _param_spec: glib::ffi::gpointer,
3046            f: glib::ffi::gpointer,
3047        ) {
3048            let f: &F = &*(f as *const F);
3049            f(Settings::from_glib_borrow(this).unsafe_cast_ref())
3050        }
3051        unsafe {
3052            let f: Box_<F> = Box_::new(f);
3053            connect_raw(
3054                self.as_ptr() as *mut _,
3055                b"notify::gtk-xft-hintstyle\0".as_ptr() as *const _,
3056                Some(transmute::<_, unsafe extern "C" fn()>(
3057                    notify_gtk_xft_hintstyle_trampoline::<Self, F> as *const (),
3058                )),
3059                Box_::into_raw(f),
3060            )
3061        }
3062    }
3063
3064    #[doc(alias = "gtk-xft-rgba")]
3065    fn connect_gtk_xft_rgba_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
3066        unsafe extern "C" fn notify_gtk_xft_rgba_trampoline<
3067            P: IsA<Settings>,
3068            F: Fn(&P) + 'static,
3069        >(
3070            this: *mut ffi::GtkSettings,
3071            _param_spec: glib::ffi::gpointer,
3072            f: glib::ffi::gpointer,
3073        ) {
3074            let f: &F = &*(f as *const F);
3075            f(Settings::from_glib_borrow(this).unsafe_cast_ref())
3076        }
3077        unsafe {
3078            let f: Box_<F> = Box_::new(f);
3079            connect_raw(
3080                self.as_ptr() as *mut _,
3081                b"notify::gtk-xft-rgba\0".as_ptr() as *const _,
3082                Some(transmute::<_, unsafe extern "C" fn()>(
3083                    notify_gtk_xft_rgba_trampoline::<Self, F> as *const (),
3084                )),
3085                Box_::into_raw(f),
3086            )
3087        }
3088    }
3089}
3090
3091impl<O: IsA<Settings>> GtkSettingsExt for O {}
3092
3093impl fmt::Display for Settings {
3094    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3095        f.write_str("Settings")
3096    }
3097}