gtk4/auto/
tree_sortable.rs1#![allow(deprecated)]
5
6use crate::{ffi, TreeModel};
7use glib::{
8 object::ObjectType as _,
9 prelude::*,
10 signal::{connect_raw, SignalHandlerId},
11 translate::*,
12};
13use std::boxed::Box as Box_;
14
15glib::wrapper! {
16 #[doc(alias = "GtkTreeSortable")]
17 pub struct TreeSortable(Interface<ffi::GtkTreeSortable, ffi::GtkTreeSortableIface>) @requires TreeModel;
18
19 match fn {
20 type_ => || ffi::gtk_tree_sortable_get_type(),
21 }
22}
23
24impl TreeSortable {
25 pub const NONE: Option<&'static TreeSortable> = None;
26}
27
28pub trait TreeSortableExt: IsA<TreeSortable> + 'static {
29 #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
30 #[allow(deprecated)]
31 #[doc(alias = "gtk_tree_sortable_has_default_sort_func")]
32 fn has_default_sort_func(&self) -> bool {
33 unsafe {
34 from_glib(ffi::gtk_tree_sortable_has_default_sort_func(
35 self.as_ref().to_glib_none().0,
36 ))
37 }
38 }
39
40 #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
41 #[allow(deprecated)]
42 #[doc(alias = "gtk_tree_sortable_sort_column_changed")]
43 fn sort_column_changed(&self) {
44 unsafe {
45 ffi::gtk_tree_sortable_sort_column_changed(self.as_ref().to_glib_none().0);
46 }
47 }
48
49 #[doc(alias = "sort-column-changed")]
50 fn connect_sort_column_changed<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
51 unsafe extern "C" fn sort_column_changed_trampoline<
52 P: IsA<TreeSortable>,
53 F: Fn(&P) + 'static,
54 >(
55 this: *mut ffi::GtkTreeSortable,
56 f: glib::ffi::gpointer,
57 ) {
58 let f: &F = &*(f as *const F);
59 f(TreeSortable::from_glib_borrow(this).unsafe_cast_ref())
60 }
61 unsafe {
62 let f: Box_<F> = Box_::new(f);
63 connect_raw(
64 self.as_ptr() as *mut _,
65 c"sort-column-changed".as_ptr() as *const _,
66 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
67 sort_column_changed_trampoline::<Self, F> as *const (),
68 )),
69 Box_::into_raw(f),
70 )
71 }
72 }
73}
74
75impl<O: IsA<TreeSortable>> TreeSortableExt for O {}