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