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