1use 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 {}