gtk4/auto/
layout_manager.rs1use crate::{ffi, LayoutChild, Orientation, SizeRequestMode, Widget};
6use glib::{prelude::*, translate::*};
7
8glib::wrapper! {
9 #[doc(alias = "GtkLayoutManager")]
10 pub struct LayoutManager(Object<ffi::GtkLayoutManager, ffi::GtkLayoutManagerClass>);
11
12 match fn {
13 type_ => || ffi::gtk_layout_manager_get_type(),
14 }
15}
16
17impl LayoutManager {
18 pub const NONE: Option<&'static LayoutManager> = None;
19}
20
21mod sealed {
22 pub trait Sealed {}
23 impl<T: super::IsA<super::LayoutManager>> Sealed for T {}
24}
25
26pub trait LayoutManagerExt: IsA<LayoutManager> + sealed::Sealed + 'static {
27 #[doc(alias = "gtk_layout_manager_allocate")]
28 fn allocate(&self, widget: &impl IsA<Widget>, width: i32, height: i32, baseline: i32) {
29 unsafe {
30 ffi::gtk_layout_manager_allocate(
31 self.as_ref().to_glib_none().0,
32 widget.as_ref().to_glib_none().0,
33 width,
34 height,
35 baseline,
36 );
37 }
38 }
39
40 #[doc(alias = "gtk_layout_manager_get_layout_child")]
41 #[doc(alias = "get_layout_child")]
42 fn layout_child(&self, child: &impl IsA<Widget>) -> LayoutChild {
43 unsafe {
44 from_glib_none(ffi::gtk_layout_manager_get_layout_child(
45 self.as_ref().to_glib_none().0,
46 child.as_ref().to_glib_none().0,
47 ))
48 }
49 }
50
51 #[doc(alias = "gtk_layout_manager_get_request_mode")]
52 #[doc(alias = "get_request_mode")]
53 fn request_mode(&self) -> SizeRequestMode {
54 unsafe {
55 from_glib(ffi::gtk_layout_manager_get_request_mode(
56 self.as_ref().to_glib_none().0,
57 ))
58 }
59 }
60
61 #[doc(alias = "gtk_layout_manager_get_widget")]
62 #[doc(alias = "get_widget")]
63 fn widget(&self) -> Option<Widget> {
64 unsafe {
65 from_glib_none(ffi::gtk_layout_manager_get_widget(
66 self.as_ref().to_glib_none().0,
67 ))
68 }
69 }
70
71 #[doc(alias = "gtk_layout_manager_layout_changed")]
72 fn layout_changed(&self) {
73 unsafe {
74 ffi::gtk_layout_manager_layout_changed(self.as_ref().to_glib_none().0);
75 }
76 }
77
78 #[doc(alias = "gtk_layout_manager_measure")]
79 fn measure(
80 &self,
81 widget: &impl IsA<Widget>,
82 orientation: Orientation,
83 for_size: i32,
84 ) -> (i32, i32, i32, i32) {
85 unsafe {
86 let mut minimum = std::mem::MaybeUninit::uninit();
87 let mut natural = std::mem::MaybeUninit::uninit();
88 let mut minimum_baseline = std::mem::MaybeUninit::uninit();
89 let mut natural_baseline = std::mem::MaybeUninit::uninit();
90 ffi::gtk_layout_manager_measure(
91 self.as_ref().to_glib_none().0,
92 widget.as_ref().to_glib_none().0,
93 orientation.into_glib(),
94 for_size,
95 minimum.as_mut_ptr(),
96 natural.as_mut_ptr(),
97 minimum_baseline.as_mut_ptr(),
98 natural_baseline.as_mut_ptr(),
99 );
100 (
101 minimum.assume_init(),
102 natural.assume_init(),
103 minimum_baseline.assume_init(),
104 natural_baseline.assume_init(),
105 )
106 }
107 }
108}
109
110impl<O: IsA<LayoutManager>> LayoutManagerExt for O {}