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