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
21pub trait LayoutManagerExt: IsA<LayoutManager> + 'static {
22 #[doc(alias = "gtk_layout_manager_allocate")]
23 fn allocate(&self, widget: &impl IsA<Widget>, width: i32, height: i32, baseline: i32) {
24 unsafe {
25 ffi::gtk_layout_manager_allocate(
26 self.as_ref().to_glib_none().0,
27 widget.as_ref().to_glib_none().0,
28 width,
29 height,
30 baseline,
31 );
32 }
33 }
34
35 #[doc(alias = "gtk_layout_manager_get_layout_child")]
36 #[doc(alias = "get_layout_child")]
37 fn layout_child(&self, child: &impl IsA<Widget>) -> LayoutChild {
38 unsafe {
39 from_glib_none(ffi::gtk_layout_manager_get_layout_child(
40 self.as_ref().to_glib_none().0,
41 child.as_ref().to_glib_none().0,
42 ))
43 }
44 }
45
46 #[doc(alias = "gtk_layout_manager_get_request_mode")]
47 #[doc(alias = "get_request_mode")]
48 fn request_mode(&self) -> SizeRequestMode {
49 unsafe {
50 from_glib(ffi::gtk_layout_manager_get_request_mode(
51 self.as_ref().to_glib_none().0,
52 ))
53 }
54 }
55
56 #[doc(alias = "gtk_layout_manager_get_widget")]
57 #[doc(alias = "get_widget")]
58 fn widget(&self) -> Option<Widget> {
59 unsafe {
60 from_glib_none(ffi::gtk_layout_manager_get_widget(
61 self.as_ref().to_glib_none().0,
62 ))
63 }
64 }
65
66 #[doc(alias = "gtk_layout_manager_layout_changed")]
67 fn layout_changed(&self) {
68 unsafe {
69 ffi::gtk_layout_manager_layout_changed(self.as_ref().to_glib_none().0);
70 }
71 }
72
73 #[doc(alias = "gtk_layout_manager_measure")]
74 fn measure(
75 &self,
76 widget: &impl IsA<Widget>,
77 orientation: Orientation,
78 for_size: i32,
79 ) -> (i32, i32, i32, i32) {
80 unsafe {
81 let mut minimum = std::mem::MaybeUninit::uninit();
82 let mut natural = std::mem::MaybeUninit::uninit();
83 let mut minimum_baseline = std::mem::MaybeUninit::uninit();
84 let mut natural_baseline = std::mem::MaybeUninit::uninit();
85 ffi::gtk_layout_manager_measure(
86 self.as_ref().to_glib_none().0,
87 widget.as_ref().to_glib_none().0,
88 orientation.into_glib(),
89 for_size,
90 minimum.as_mut_ptr(),
91 natural.as_mut_ptr(),
92 minimum_baseline.as_mut_ptr(),
93 natural_baseline.as_mut_ptr(),
94 );
95 (
96 minimum.assume_init(),
97 natural.assume_init(),
98 minimum_baseline.assume_init(),
99 natural_baseline.assume_init(),
100 )
101 }
102 }
103}
104
105impl<O: IsA<LayoutManager>> LayoutManagerExt for O {}