Listen for (de)activation of extensions and save the config

This commit is contained in:
Christian Dywan 2009-06-07 02:15:32 +02:00
parent f643ed1ddd
commit eddb0b30df

View file

@ -744,6 +744,15 @@ settings_notify_cb (MidoriWebSettings* settings,
g_free (config_file); g_free (config_file);
} }
static void
extension_activate_cb (MidoriExtension* extension,
MidoriApp* app)
{
MidoriWebSettings* settings = katze_object_get_object (app, "settings");
settings_notify_cb (settings, NULL, app);
g_object_unref (settings);
}
static void static void
accel_map_changed_cb (GtkAccelMap* accel_map, accel_map_changed_cb (GtkAccelMap* accel_map,
gchar* accel_path, gchar* accel_path,
@ -1185,6 +1194,8 @@ midori_load_extensions (gpointer data)
if (extension_dir != NULL) if (extension_dir != NULL)
{ {
const gchar* filename; const gchar* filename;
gchar* config_file = build_config_filename ("config");
gboolean is_writable = is_writable (config_file);
while ((filename = g_dir_read_name (extension_dir))) while ((filename = g_dir_read_name (extension_dir)))
{ {
@ -1228,9 +1239,17 @@ midori_load_extensions (gpointer data)
if (!g_strcmp0 (filename, name)) if (!g_strcmp0 (filename, name))
g_signal_emit_by_name (extension, "activate", app); g_signal_emit_by_name (extension, "activate", app);
} }
if (is_writable)
{
g_signal_connect_after (extension, "activate",
G_CALLBACK (extension_activate_cb), app);
g_signal_connect_after (extension, "deactivate",
G_CALLBACK (extension_activate_cb), app);
}
g_object_unref (extension); g_object_unref (extension);
} }
g_dir_close (extension_dir); g_dir_close (extension_dir);
g_free (config_file);
} }
g_free (extension_path); g_free (extension_path);
} }