diff options
author | Robert Ancell <robert.ancell@canonical.com> | 2019-11-07 13:50:45 +1300 |
---|---|---|
committer | Georges Basile Stavracas Neto <georges.stavracas@gmail.com> | 2019-11-27 22:05:46 +0000 |
commit | 125d971ebeaaab64efbe05d2d115a9cc18e10124 (patch) | |
tree | 327fea4186e8cc31e38e576011026a51257712ff | |
parent | 3d06da2d30dceb6d3126a5d931aac96a21e64925 (diff) | |
download | gnome-control-center-125d971ebeaaab64efbe05d2d115a9cc18e10124.tar.gz |
network: Replace a callback with a signal
4 files changed, 24 insertions, 31 deletions
diff --git a/panels/network/connection-editor/ce-page-8021x-security.c b/panels/network/connection-editor/ce-page-8021x-security.c index 19f8ef3c5..2e5f57f11 100644 --- a/panels/network/connection-editor/ce-page-8021x-security.c +++ b/panels/network/connection-editor/ce-page-8021x-security.c @@ -59,9 +59,9 @@ enable_toggled (CEPage8021xSecurity *self) } static void -stuff_changed (WirelessSecurity *sec, gpointer user_data) +security_item_changed_cb (CEPage8021xSecurity *self) { - ce_page_changed (CE_PAGE (user_data)); + ce_page_changed (CE_PAGE (self)); } static void @@ -80,7 +80,7 @@ finish_setup (CEPage8021xSecurity *self, gpointer unused, GError *error, gpointe return; } - wireless_security_set_changed_notify (WIRELESS_SECURITY (self->security), stuff_changed, self); + g_signal_connect_object (WIRELESS_SECURITY (self->security), "changed", G_CALLBACK (security_item_changed_cb), self, G_CONNECT_SWAPPED); self->security_widget = wireless_security_get_widget (WIRELESS_SECURITY (self->security)); parent = gtk_widget_get_parent (self->security_widget); if (parent) diff --git a/panels/network/connection-editor/ce-page-security.c b/panels/network/connection-editor/ce-page-security.c index 23cfd3276..e2532696a 100644 --- a/panels/network/connection-editor/ce-page-security.c +++ b/panels/network/connection-editor/ce-page-security.c @@ -174,9 +174,9 @@ security_combo_changed (CEPageSecurity *self) } static void -stuff_changed_cb (WirelessSecurity *sec, gpointer user_data) +security_item_changed_cb (CEPageSecurity *self) { - ce_page_changed (CE_PAGE (user_data)); + ce_page_changed (CE_PAGE (self)); } static void @@ -187,7 +187,7 @@ add_security_item (CEPageSecurity *self, const char *text, gboolean adhoc_valid) { - wireless_security_set_changed_notify (sec, stuff_changed_cb, self); + g_signal_connect_object (sec, "changed", G_CALLBACK (security_item_changed_cb), self, G_CONNECT_SWAPPED); gtk_list_store_append (model, iter); gtk_list_store_set (model, iter, S_NAME_COLUMN, text, diff --git a/panels/network/wireless-security/wireless-security.c b/panels/network/wireless-security/wireless-security.c index dbc9d346f..0fff7e218 100644 --- a/panels/network/wireless-security/wireless-security.c +++ b/panels/network/wireless-security/wireless-security.c @@ -36,16 +36,20 @@ #include "utils.h" typedef struct { - WSChangedFunc changed_notify; - gpointer changed_notify_data; gboolean adhoc_compatible; - char *username, *password; gboolean always_ask, show_password; } WirelessSecurityPrivate; G_DEFINE_TYPE_WITH_PRIVATE (WirelessSecurity, wireless_security, G_TYPE_OBJECT) +enum { + CHANGED, + LAST_SIGNAL +}; + +static guint signals[LAST_SIGNAL] = { 0 }; + static void wireless_security_dispose (GObject *object) { @@ -77,6 +81,15 @@ wireless_security_class_init (WirelessSecurityClass *klass) GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->dispose = wireless_security_dispose; + + signals[CHANGED] = + g_signal_new ("changed", + G_TYPE_FROM_CLASS (object_class), + G_SIGNAL_RUN_FIRST, + 0, + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); } GtkWidget * @@ -88,25 +101,11 @@ wireless_security_get_widget (WirelessSecurity *self) } void -wireless_security_set_changed_notify (WirelessSecurity *self, - WSChangedFunc func, - gpointer user_data) -{ - WirelessSecurityPrivate *priv = wireless_security_get_instance_private (self); - - g_return_if_fail (WIRELESS_IS_SECURITY (self)); - - priv->changed_notify = func; - priv->changed_notify_data = user_data; -} - -void wireless_security_notify_changed (WirelessSecurity *self) { - WirelessSecurityPrivate *priv = wireless_security_get_instance_private (self); + g_return_if_fail (WIRELESS_IS_SECURITY (self)); - if (priv->changed_notify) - (*(priv->changed_notify)) (self, priv->changed_notify_data); + g_signal_emit (self, signals[CHANGED], 0); } gboolean diff --git a/panels/network/wireless-security/wireless-security.h b/panels/network/wireless-security/wireless-security.h index 3b82eb6c6..6604954ea 100644 --- a/panels/network/wireless-security/wireless-security.h +++ b/panels/network/wireless-security/wireless-security.h @@ -28,8 +28,6 @@ G_BEGIN_DECLS G_DECLARE_DERIVABLE_TYPE (WirelessSecurity, wireless_security, WIRELESS, SECURITY, GObject) -typedef void (*WSChangedFunc) (WirelessSecurity *sec, gpointer user_data); - struct _WirelessSecurityClass { GObjectClass parent_class; @@ -41,10 +39,6 @@ struct _WirelessSecurityClass { GtkWidget *wireless_security_get_widget (WirelessSecurity *sec); -void wireless_security_set_changed_notify (WirelessSecurity *sec, - WSChangedFunc func, - gpointer user_data); - gboolean wireless_security_validate (WirelessSecurity *sec, GError **error); void wireless_security_add_to_size_group (WirelessSecurity *sec, |