Skip to main content

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