1#[cfg(feature = "v4_10")]
6#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
7use crate::Accessible;
8use crate::{Buildable, ConstraintTarget, Native, Widget, ffi};
9use glib::{prelude::*, translate::*};
10
11#[cfg(feature = "v4_10")]
12#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
13glib::wrapper! {
14 #[doc(alias = "GtkRoot")]
15 pub struct Root(Interface<ffi::GtkRoot, ffi::GtkRootInterface>) @requires Native, Widget, Accessible, Buildable, ConstraintTarget;
16
17 match fn {
18 type_ => || ffi::gtk_root_get_type(),
19 }
20}
21
22#[cfg(not(feature = "v4_10"))]
23glib::wrapper! {
24 #[doc(alias = "GtkRoot")]
25 pub struct Root(Interface<ffi::GtkRoot, ffi::GtkRootInterface>) @requires Native, Widget, Buildable, ConstraintTarget;
26
27 match fn {
28 type_ => || ffi::gtk_root_get_type(),
29 }
30}
31
32impl Root {
33 pub const NONE: Option<&'static Root> = None;
34}
35
36pub trait RootExt: IsA<Root> + 'static {
37 #[doc(alias = "gtk_root_get_display")]
38 #[doc(alias = "get_display")]
39 fn display(&self) -> gdk::Display {
40 unsafe { from_glib_none(ffi::gtk_root_get_display(self.as_ref().to_glib_none().0)) }
41 }
42
43 #[doc(alias = "gtk_root_get_focus")]
44 #[doc(alias = "get_focus")]
45 fn focus(&self) -> Option<Widget> {
46 unsafe { from_glib_none(ffi::gtk_root_get_focus(self.as_ref().to_glib_none().0)) }
47 }
48
49 #[doc(alias = "gtk_root_set_focus")]
50 fn set_focus(&self, focus: Option<&impl IsA<Widget>>) {
51 unsafe {
52 ffi::gtk_root_set_focus(
53 self.as_ref().to_glib_none().0,
54 focus.map(|p| p.as_ref()).to_glib_none().0,
55 );
56 }
57 }
58}
59
60impl<O: IsA<Root>> RootExt for O {}