gtk/
drag_context.rs

1// Take a look at the license at the top of the repository in the LICENSE file.
2
3use crate::Widget;
4use glib::object::IsA;
5use glib::translate::*;
6
7mod sealed {
8    pub trait Sealed {}
9    impl<T: glib::IsA<gdk::DragContext>> Sealed for T {}
10}
11
12pub trait DragContextExtManual: IsA<gdk::DragContext> + sealed::Sealed + 'static {
13    #[doc(alias = "gtk_drag_finish")]
14    fn drag_finish(&self, success: bool, del: bool, time_: u32) {
15        unsafe {
16            ffi::gtk_drag_finish(
17                self.as_ref().to_glib_none().0,
18                success as i32,
19                del as i32,
20                time_,
21            )
22        };
23    }
24
25    #[doc(alias = "gtk_drag_cancel")]
26    fn drag_cancel(&self) {
27        assert_initialized_main_thread!();
28        unsafe {
29            ffi::gtk_drag_cancel(self.as_ref().to_glib_none().0);
30        }
31    }
32
33    #[doc(alias = "gtk_drag_get_source_widget")]
34    fn drag_get_source_widget(&self) -> Option<Widget> {
35        assert_initialized_main_thread!();
36        unsafe {
37            from_glib_none(ffi::gtk_drag_get_source_widget(
38                self.as_ref().to_glib_none().0,
39            ))
40        }
41    }
42
43    #[doc(alias = "gtk_drag_set_icon_default")]
44    fn drag_set_icon_default(&self) {
45        assert_initialized_main_thread!();
46        unsafe {
47            ffi::gtk_drag_set_icon_default(self.as_ref().to_glib_none().0);
48        }
49    }
50
51    #[doc(alias = "gtk_drag_set_icon_gicon")]
52    fn drag_set_icon_gicon<P: IsA<gio::Icon>>(&self, icon: &P, hot_x: i32, hot_y: i32) {
53        assert_initialized_main_thread!();
54        unsafe {
55            ffi::gtk_drag_set_icon_gicon(
56                self.as_ref().to_glib_none().0,
57                icon.as_ref().to_glib_none().0,
58                hot_x,
59                hot_y,
60            );
61        }
62    }
63
64    #[doc(alias = "gtk_drag_set_icon_name")]
65    fn drag_set_icon_name(&self, icon_name: &str, hot_x: i32, hot_y: i32) {
66        assert_initialized_main_thread!();
67        unsafe {
68            ffi::gtk_drag_set_icon_name(
69                self.as_ref().to_glib_none().0,
70                icon_name.to_glib_none().0,
71                hot_x,
72                hot_y,
73            );
74        }
75    }
76
77    #[doc(alias = "gtk_drag_set_icon_pixbuf")]
78    fn drag_set_icon_pixbuf(&self, pixbuf: &gdk_pixbuf::Pixbuf, hot_x: i32, hot_y: i32) {
79        assert_initialized_main_thread!();
80        unsafe {
81            ffi::gtk_drag_set_icon_pixbuf(
82                self.as_ref().to_glib_none().0,
83                pixbuf.to_glib_none().0,
84                hot_x,
85                hot_y,
86            );
87        }
88    }
89
90    #[doc(alias = "gtk_drag_set_icon_stock")]
91    fn drag_set_icon_stock(&self, stock_id: &str, hot_x: i32, hot_y: i32) {
92        assert_initialized_main_thread!();
93        unsafe {
94            ffi::gtk_drag_set_icon_stock(
95                self.as_ref().to_glib_none().0,
96                stock_id.to_glib_none().0,
97                hot_x,
98                hot_y,
99            );
100        }
101    }
102
103    #[doc(alias = "gtk_drag_set_icon_surface")]
104    fn drag_set_icon_surface(&self, surface: &cairo::Surface) {
105        assert_initialized_main_thread!();
106        unsafe {
107            ffi::gtk_drag_set_icon_surface(
108                self.as_ref().to_glib_none().0,
109                mut_override(surface.to_glib_none().0),
110            );
111        }
112    }
113
114    #[doc(alias = "gtk_drag_set_icon_widget")]
115    fn drag_set_icon_widget<P: IsA<Widget>>(&self, widget: &P, hot_x: i32, hot_y: i32) {
116        assert_initialized_main_thread!();
117        unsafe {
118            ffi::gtk_drag_set_icon_widget(
119                self.as_ref().to_glib_none().0,
120                widget.as_ref().to_glib_none().0,
121                hot_x,
122                hot_y,
123            );
124        }
125    }
126}
127
128impl<O: IsA<gdk::DragContext>> DragContextExtManual for O {}