Skip to content

Commit

Permalink
glib: Add connect_notify* methods to SignalGroup
Browse files Browse the repository at this point in the history
Fixes #1021.
  • Loading branch information
melix99 committed Feb 22, 2023
1 parent 5501aa4 commit 24c24ec
Showing 1 changed file with 38 additions and 0 deletions.
38 changes: 38 additions & 0 deletions glib/src/gobject/signal_group.rs
Expand Up @@ -42,6 +42,44 @@ 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() + Send + Sync + 'static,
{
let signal_name = if let Some(name) = name {
format!("notify::{name}\0")
} else {
"notify\0".into()
};

let closure = crate::RustClosure::new(move |_| {
callback();
None
});

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

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

let closure = crate::RustClosure::new_local(move |_| {
callback();
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 24c24ec

Please sign in to comment.