Skip to content

Commit

Permalink
Merge pull request #1027 from melix99/signal-group-connect-notify
Browse files Browse the repository at this point in the history
glib: Add connect_notify* methods to SignalGroup
  • Loading branch information
sdroege authored Feb 24, 2023
2 parents 5501aa4 + d71c109 commit dc393c3
Showing 1 changed file with 44 additions and 0 deletions.
44 changes: 44 additions & 0 deletions glib/src/gobject/signal_group.rs
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,50 @@ impl SignalGroup {
self.connect_closure(signal_name, after, RustClosure::new_local(callback));
}

#[inline]
pub fn connect_notify<F>(&self, name: Option<&str>, callback: F)
where
F: Fn(&crate::Object, &crate::ParamSpec) + Send + Sync + 'static,
{
let signal_name = if let Some(name) = name {
format!("notify::{name}")
} else {
"notify".into()
};

let closure = crate::RustClosure::new(move |values| {
let obj = values[0].get().unwrap();
let pspec = values[1].get().unwrap();
callback(obj, pspec);

None
});

self.connect_closure(&signal_name, false, closure);
}

#[inline]
pub fn connect_notify_local<F>(&self, name: Option<&str>, callback: F)
where
F: Fn(&crate::Object, &crate::ParamSpec) + 'static,
{
let signal_name = if let Some(name) = name {
format!("notify::{name}")
} else {
"notify".into()
};

let closure = crate::RustClosure::new_local(move |values| {
let obj = values[0].get().unwrap();
let pspec = values[1].get().unwrap();
callback(obj, pspec);

None
});

self.connect_closure(&signal_name, false, closure);
}

unsafe fn connect_bind_unsafe<F: Fn(&Self, &Object)>(&self, f: F) -> SignalHandlerId {
unsafe extern "C" fn bind_trampoline<F: Fn(&SignalGroup, &Object)>(
this: *mut crate::gobject_ffi::GSignalGroup,
Expand Down

0 comments on commit dc393c3

Please sign in to comment.