gtk/auto/
event_controller.rs

1// This file was generated by gir (https://github.com/gtk-rs/gir)
2// from gir-files (https://github.com/gtk-rs/gir-files)
3// DO NOT EDIT
4
5use gdk;
6use glib::object::Cast;
7use glib::object::IsA;
8use glib::signal::connect_raw;
9use glib::signal::SignalHandlerId;
10use glib::translate::*;
11use glib_sys;
12use gtk_sys;
13use std::boxed::Box as Box_;
14use std::fmt;
15use std::mem::transmute;
16use PropagationPhase;
17use Widget;
18
19glib_wrapper! {
20    pub struct EventController(Object<gtk_sys::GtkEventController, gtk_sys::GtkEventControllerClass, EventControllerClass>);
21
22    match fn {
23        get_type => || gtk_sys::gtk_event_controller_get_type(),
24    }
25}
26
27pub const NONE_EVENT_CONTROLLER: Option<&EventController> = None;
28
29pub trait EventControllerExt: 'static {
30    fn get_propagation_phase(&self) -> PropagationPhase;
31
32    fn get_widget(&self) -> Option<Widget>;
33
34    fn handle_event(&self, event: &gdk::Event) -> bool;
35
36    fn reset(&self);
37
38    fn set_propagation_phase(&self, phase: PropagationPhase);
39
40    fn connect_property_propagation_phase_notify<F: Fn(&Self) + 'static>(
41        &self,
42        f: F,
43    ) -> SignalHandlerId;
44}
45
46impl<O: IsA<EventController>> EventControllerExt for O {
47    fn get_propagation_phase(&self) -> PropagationPhase {
48        unsafe {
49            from_glib(gtk_sys::gtk_event_controller_get_propagation_phase(
50                self.as_ref().to_glib_none().0,
51            ))
52        }
53    }
54
55    fn get_widget(&self) -> Option<Widget> {
56        unsafe {
57            from_glib_none(gtk_sys::gtk_event_controller_get_widget(
58                self.as_ref().to_glib_none().0,
59            ))
60        }
61    }
62
63    fn handle_event(&self, event: &gdk::Event) -> bool {
64        unsafe {
65            from_glib(gtk_sys::gtk_event_controller_handle_event(
66                self.as_ref().to_glib_none().0,
67                event.to_glib_none().0,
68            ))
69        }
70    }
71
72    fn reset(&self) {
73        unsafe {
74            gtk_sys::gtk_event_controller_reset(self.as_ref().to_glib_none().0);
75        }
76    }
77
78    fn set_propagation_phase(&self, phase: PropagationPhase) {
79        unsafe {
80            gtk_sys::gtk_event_controller_set_propagation_phase(
81                self.as_ref().to_glib_none().0,
82                phase.to_glib(),
83            );
84        }
85    }
86
87    fn connect_property_propagation_phase_notify<F: Fn(&Self) + 'static>(
88        &self,
89        f: F,
90    ) -> SignalHandlerId {
91        unsafe extern "C" fn notify_propagation_phase_trampoline<P, F: Fn(&P) + 'static>(
92            this: *mut gtk_sys::GtkEventController,
93            _param_spec: glib_sys::gpointer,
94            f: glib_sys::gpointer,
95        ) where
96            P: IsA<EventController>,
97        {
98            let f: &F = &*(f as *const F);
99            f(&EventController::from_glib_borrow(this).unsafe_cast())
100        }
101        unsafe {
102            let f: Box_<F> = Box_::new(f);
103            connect_raw(
104                self.as_ptr() as *mut _,
105                b"notify::propagation-phase\0".as_ptr() as *const _,
106                Some(transmute(
107                    notify_propagation_phase_trampoline::<Self, F> as usize,
108                )),
109                Box_::into_raw(f),
110            )
111        }
112    }
113}
114
115impl fmt::Display for EventController {
116    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
117        write!(f, "EventController")
118    }
119}