diff --git a/midori/midori-extension.c b/midori/midori-extension.c index 2815634..2794dda 100644 --- a/midori/midori-extension.c +++ b/midori/midori-extension.c @@ -136,6 +136,7 @@ enum { ACTIVATE, DEACTIVATE, OPEN_PREFERENCES, + SETTING_CHANGED, LAST_SIGNAL }; @@ -203,6 +204,24 @@ midori_extension_class_init (MidoriExtensionClass* class) G_TYPE_NONE, 0, G_TYPE_NONE); + /** + * MidoriExtension::setting-changed: + * + * A setting has changed. + * + * Since: 0.4.6 + */ + signals[SETTING_CHANGED] = g_signal_new ( + "setting-changed", + G_TYPE_FROM_CLASS (class), + (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION), + 0, + 0, + NULL, + g_cclosure_marshal_VOID__STRING, + G_TYPE_NONE, 1, + G_TYPE_STRING); + gobject_class = G_OBJECT_CLASS (class); gobject_class->finalize = midori_extension_finalize; gobject_class->set_property = midori_extension_set_property; @@ -749,6 +768,7 @@ midori_extension_set_boolean (MidoriExtension* extension, g_error_free (error); } } + g_signal_emit (extension, signals[SETTING_CHANGED], 0, name); } /** @@ -846,6 +866,7 @@ midori_extension_set_integer (MidoriExtension* extension, g_error_free (error); } } + g_signal_emit (extension, signals[SETTING_CHANGED], 0, name); } /** @@ -943,6 +964,7 @@ midori_extension_set_string (MidoriExtension* extension, g_error_free (error); } } + g_signal_emit (extension, signals[SETTING_CHANGED], 0, name); } /** @@ -1055,4 +1077,5 @@ midori_extension_set_string_list (MidoriExtension* extension, g_error_free (error); } } + g_signal_emit (extension, signals[SETTING_CHANGED], 0, name); }