mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer-rs.git
synced 2024-11-25 11:01:10 +00:00
video: Add double click mouse event
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1435>
This commit is contained in:
parent
873aeff133
commit
01b32ce143
1 changed files with 72 additions and 1 deletions
|
@ -541,6 +541,11 @@ pub enum MouseEventType {
|
||||||
delta_x: f64,
|
delta_x: f64,
|
||||||
delta_y: f64,
|
delta_y: f64,
|
||||||
},
|
},
|
||||||
|
#[cfg(feature = "v1_26")]
|
||||||
|
#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
|
||||||
|
DoubleClick {
|
||||||
|
button: i32,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
nav_event_builder!(
|
nav_event_builder!(
|
||||||
|
@ -583,6 +588,14 @@ nav_event_builder!(
|
||||||
#[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
|
#[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
|
||||||
modifier_state: s.modifier_state,
|
modifier_state: s.modifier_state,
|
||||||
},
|
},
|
||||||
|
#[cfg(feature = "v1_26")]
|
||||||
|
#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
|
||||||
|
MouseEventType::DoubleClick { button } => NavigationEvent::MouseDoubleClick {
|
||||||
|
button,
|
||||||
|
x: s.x,
|
||||||
|
y: s.y,
|
||||||
|
modifier_state: s.modifier_state,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
gst::ffi::gst_event_new_navigation(event.structure().into_glib_ptr())
|
gst::ffi::gst_event_new_navigation(event.structure().into_glib_ptr())
|
||||||
}
|
}
|
||||||
|
@ -793,6 +806,14 @@ pub enum NavigationEvent {
|
||||||
TouchCancel {
|
TouchCancel {
|
||||||
modifier_state: NavigationModifierType,
|
modifier_state: NavigationModifierType,
|
||||||
},
|
},
|
||||||
|
#[cfg(feature = "v1_26")]
|
||||||
|
#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
|
||||||
|
MouseDoubleClick {
|
||||||
|
button: i32,
|
||||||
|
x: f64,
|
||||||
|
y: f64,
|
||||||
|
modifier_state: NavigationModifierType,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
impl NavigationEvent {
|
impl NavigationEvent {
|
||||||
|
@ -954,6 +975,18 @@ impl NavigationEvent {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "v1_26")]
|
||||||
|
#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
|
||||||
|
#[doc(alias = "gst_navigation_event_new_mouse_double_click")]
|
||||||
|
pub fn new_mouse_double_click(button: i32, x: f64, y: f64) -> NavigationEvent {
|
||||||
|
assert_initialized_main_thread!();
|
||||||
|
Self::MouseDoubleClick {
|
||||||
|
button,
|
||||||
|
x,
|
||||||
|
y,
|
||||||
|
modifier_state: NavigationModifierType::empty(),
|
||||||
|
}
|
||||||
|
}
|
||||||
pub fn key_press_builder(key: &str) -> KeyEventBuilder {
|
pub fn key_press_builder(key: &str) -> KeyEventBuilder {
|
||||||
assert_initialized_main_thread!();
|
assert_initialized_main_thread!();
|
||||||
KeyEventBuilder::new(KeyEventType::Press { key })
|
KeyEventBuilder::new(KeyEventType::Press { key })
|
||||||
|
@ -1056,6 +1089,15 @@ impl NavigationEvent {
|
||||||
TouchMetaEventBuilder::new(TouchMetaEventType::Cancel)
|
TouchMetaEventBuilder::new(TouchMetaEventType::Cancel)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "v1_26")]
|
||||||
|
#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
|
||||||
|
pub fn mouse_double_click_builder(button: i32, x: f64, y: f64) -> MouseEventBuilder<'static> {
|
||||||
|
assert_initialized_main_thread!();
|
||||||
|
MouseEventBuilder::new(MouseEventType::DoubleClick { button })
|
||||||
|
.x(x)
|
||||||
|
.y(y)
|
||||||
|
}
|
||||||
|
|
||||||
#[doc(alias = "gst_navigation_event_get_type")]
|
#[doc(alias = "gst_navigation_event_get_type")]
|
||||||
pub fn type_(event: &gst::EventRef) -> NavigationEventType {
|
pub fn type_(event: &gst::EventRef) -> NavigationEventType {
|
||||||
skip_assert_initialized!();
|
skip_assert_initialized!();
|
||||||
|
@ -1224,6 +1266,21 @@ impl NavigationEvent {
|
||||||
#[cfg(feature = "v1_22")]
|
#[cfg(feature = "v1_22")]
|
||||||
#[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
|
#[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
|
||||||
NavigationEventType::TouchCancel => NavigationEvent::TouchCancel { modifier_state },
|
NavigationEventType::TouchCancel => NavigationEvent::TouchCancel { modifier_state },
|
||||||
|
#[cfg(feature = "v1_26")]
|
||||||
|
#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
|
||||||
|
NavigationEventType::MouseDoubleClick => NavigationEvent::MouseDoubleClick {
|
||||||
|
button: structure
|
||||||
|
.get("button")
|
||||||
|
.map_err(|_| glib::bool_error!("Invalid mouse event"))?,
|
||||||
|
x: structure
|
||||||
|
.get("pointer_x")
|
||||||
|
.map_err(|_| glib::bool_error!("Invalid mouse event"))?,
|
||||||
|
y: structure
|
||||||
|
.get("pointer_y")
|
||||||
|
.map_err(|_| glib::bool_error!("Invalid mouse event"))?,
|
||||||
|
modifier_state,
|
||||||
|
},
|
||||||
|
|
||||||
NavigationEventType::Invalid | NavigationEventType::__Unknown(_) => {
|
NavigationEventType::Invalid | NavigationEventType::__Unknown(_) => {
|
||||||
return Err(glib::bool_error!("Invalid navigation event"))
|
return Err(glib::bool_error!("Invalid navigation event"))
|
||||||
}
|
}
|
||||||
|
@ -1323,10 +1380,19 @@ impl NavigationEvent {
|
||||||
Self::TouchCancel { .. } => {
|
Self::TouchCancel { .. } => {
|
||||||
gst::Structure::builder(NAVIGATION_EVENT_NAME).field("event", "touch-cancel")
|
gst::Structure::builder(NAVIGATION_EVENT_NAME).field("event", "touch-cancel")
|
||||||
}
|
}
|
||||||
|
#[cfg(feature = "v1_26")]
|
||||||
|
#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
|
||||||
|
Self::MouseDoubleClick { button, x, y, .. } => {
|
||||||
|
gst::Structure::builder(NAVIGATION_EVENT_NAME)
|
||||||
|
.field("event", "mouse-double-click")
|
||||||
|
.field("button", button)
|
||||||
|
.field("pointer_x", x)
|
||||||
|
.field("pointer_y", y)
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
#[cfg(feature = "v1_22")]
|
#[cfg(feature = "v1_22")]
|
||||||
if true {
|
{
|
||||||
structure = match self {
|
structure = match self {
|
||||||
Self::MouseMove { modifier_state, .. } => structure.field("state", modifier_state),
|
Self::MouseMove { modifier_state, .. } => structure.field("state", modifier_state),
|
||||||
Self::MouseButtonPress { modifier_state, .. } => {
|
Self::MouseButtonPress { modifier_state, .. } => {
|
||||||
|
@ -1350,6 +1416,11 @@ impl NavigationEvent {
|
||||||
Self::TouchCancel { modifier_state, .. } => {
|
Self::TouchCancel { modifier_state, .. } => {
|
||||||
structure.field("state", modifier_state)
|
structure.field("state", modifier_state)
|
||||||
}
|
}
|
||||||
|
#[cfg(feature = "v1_26")]
|
||||||
|
#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
|
||||||
|
Self::MouseDoubleClick { modifier_state, .. } => {
|
||||||
|
structure.field("state", modifier_state)
|
||||||
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue