gtk4/auto/
style_provider.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::ffi;
6use glib::{
7    object::ObjectType as _,
8    prelude::*,
9    signal::{connect_raw, SignalHandlerId},
10    translate::*,
11};
12use std::boxed::Box as Box_;
13
14glib::wrapper! {
15    /// [`StyleProvider`][crate::StyleProvider] is an interface for style information used by
16    /// [`StyleContext`][crate::StyleContext].
17    ///
18    /// See [`StyleContextExt::add_provider()`][crate::prelude::StyleContextExt::add_provider()] and
19    /// [`StyleContext::add_provider_for_display()`][crate::StyleContext::add_provider_for_display()] for
20    /// adding `GtkStyleProviders`.
21    ///
22    /// GTK uses the [`StyleProvider`][crate::StyleProvider] implementation for CSS in
23    /// [`CssProvider`][crate::CssProvider].
24    ///
25    /// ## Signals
26    ///
27    ///
28    /// #### `gtk-private-changed`
29    ///
30    ///
31    /// # Implements
32    ///
33    /// [`StyleProviderExt`][trait@crate::prelude::StyleProviderExt]
34    #[doc(alias = "GtkStyleProvider")]
35    pub struct StyleProvider(Interface<ffi::GtkStyleProvider>);
36
37    match fn {
38        type_ => || ffi::gtk_style_provider_get_type(),
39    }
40}
41
42impl StyleProvider {
43    pub const NONE: Option<&'static StyleProvider> = None;
44}
45
46mod sealed {
47    pub trait Sealed {}
48    impl<T: super::IsA<super::StyleProvider>> Sealed for T {}
49}
50
51/// Trait containing all [`struct@StyleProvider`] methods.
52///
53/// # Implementors
54///
55/// [`CssProvider`][struct@crate::CssProvider], [`Settings`][struct@crate::Settings], [`StyleProvider`][struct@crate::StyleProvider]
56pub trait StyleProviderExt: IsA<StyleProvider> + sealed::Sealed + 'static {
57    #[doc(alias = "gtk-private-changed")]
58    fn connect_gtk_private_changed<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
59        unsafe extern "C" fn gtk_private_changed_trampoline<
60            P: IsA<StyleProvider>,
61            F: Fn(&P) + 'static,
62        >(
63            this: *mut ffi::GtkStyleProvider,
64            f: glib::ffi::gpointer,
65        ) {
66            let f: &F = &*(f as *const F);
67            f(StyleProvider::from_glib_borrow(this).unsafe_cast_ref())
68        }
69        unsafe {
70            let f: Box_<F> = Box_::new(f);
71            connect_raw(
72                self.as_ptr() as *mut _,
73                b"gtk-private-changed\0".as_ptr() as *const _,
74                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
75                    gtk_private_changed_trampoline::<Self, F> as *const (),
76                )),
77                Box_::into_raw(f),
78            )
79        }
80    }
81}
82
83impl<O: IsA<StyleProvider>> StyleProviderExt for O {}