Skip to main content

gtk/
tree_row_reference.rs

1// Take a look at the license at the top of the repository in the LICENSE file.
2
3use crate::TreeIter;
4use crate::TreePath;
5use crate::TreeRowReference;
6use glib::object::IsA;
7use glib::translate::*;
8use libc::c_int;
9
10impl TreeRowReference {
11    // rustdoc-stripper-ignore-next
12    /// This is unsafe because new_order bounds can't be checked.
13    // rustdoc-stripper-ignore-next-stop
14    /// Lets a set of row reference created by
15    /// [`new_proxy()`][Self::new_proxy()] know that the
16    /// model emitted the [`rows-reordered`][struct@crate::TreeModel#rows-reordered] signal.
17    /// ## `proxy`
18    /// a [`glib::Object`][crate::glib::Object]
19    /// ## `path`
20    /// the parent path of the reordered signal
21    /// ## `iter`
22    /// the iter pointing to the parent of the reordered
23    /// ## `new_order`
24    /// the new order of rows
25    #[allow(clippy::missing_safety_doc)]
26    #[doc(alias = "gtk_tree_row_reference_reordered")]
27    pub unsafe fn reordered<T: IsA<glib::Object>>(
28        proxy: &T,
29        path: &TreePath,
30        iter: Option<&TreeIter>,
31        new_order: &[u32],
32    ) {
33        assert_initialized_main_thread!();
34        assert!(
35            iter.is_some() || path.depth() == 0,
36            "If 'iter' is None, 'path' must point to the root."
37        );
38        ffi::gtk_tree_row_reference_reordered(
39            proxy.as_ref().to_glib_none().0,
40            mut_override(path.to_glib_none().0),
41            mut_override(iter.to_glib_none().0),
42            mut_override(new_order.as_ptr() as *const c_int),
43        );
44    }
45}