From aac60a700814be8ecd72b5ab18eef95c1c4ad68d Mon Sep 17 00:00:00 2001 From: Monsta Date: Thu, 19 Mar 2015 17:24:55 +0300 Subject: filebrowser plugin: first connect to settings, then read them. fixes the issue with GLib >= 2.43, https://git.gnome.org/browse/glib/commit/?id=8ff5668a458344da22d30491e3ce726d861b3619 Closes https://github.com/mate-desktop/pluma/pull/109 --- plugins/filebrowser/pluma-file-browser-plugin.c | 54 ++++++++++++++----------- 1 file changed, 30 insertions(+), 24 deletions(-) diff --git a/plugins/filebrowser/pluma-file-browser-plugin.c b/plugins/filebrowser/pluma-file-browser-plugin.c index 11b77189..750b2be0 100644 --- a/plugins/filebrowser/pluma-file-browser-plugin.c +++ b/plugins/filebrowser/pluma-file-browser-plugin.c @@ -312,6 +312,18 @@ on_confirm_trash_changed (GSettings *settings, data->confirm_trash = enable; } +static gboolean +have_click_policy (void) +{ + GSettings *settings = g_settings_new (CAJA_SCHEMA); + gchar *pref = g_settings_get_string (settings, CAJA_CLICK_POLICY_KEY); + gboolean result = (pref != NULL); + + g_free (pref); + g_object_unref (settings); + return result; +} + static void install_caja_prefs (PlumaFileBrowserPluginData *data) { @@ -320,41 +332,35 @@ install_caja_prefs (PlumaFileBrowserPluginData *data) PlumaFileBrowserViewClickPolicy policy; PlumaFileBrowserView *view; - /* Get click_policy */ - pref = g_settings_get_string (data->caja_settings, CAJA_CLICK_POLICY_KEY); + if (have_click_policy ()) { + g_signal_connect (data->caja_settings, + "changed::" CAJA_CLICK_POLICY_KEY, + G_CALLBACK (on_click_policy_changed), + data); + } + + g_signal_connect (data->caja_settings, + "changed::" CAJA_ENABLE_DELETE_KEY, + G_CALLBACK (on_enable_delete_changed), + data); + g_signal_connect (data->caja_settings, + "changed::" CAJA_CONFIRM_TRASH_KEY, + G_CALLBACK (on_confirm_trash_changed), + data); + + pref = g_settings_get_string (data->caja_settings, CAJA_CLICK_POLICY_KEY); policy = click_policy_from_string (pref); + g_free (pref); view = pluma_file_browser_widget_get_browser_view (data->tree_widget); pluma_file_browser_view_set_click_policy (view, policy); - if (pref) { - g_signal_connect (data->caja_settings, - "changed::" CAJA_CLICK_POLICY_KEY, - G_CALLBACK (on_click_policy_changed), - data); - g_free (pref); - } - - /* Get enable_delete */ prefb = g_settings_get_boolean (data->caja_settings, CAJA_ENABLE_DELETE_KEY); - g_object_set (G_OBJECT (data->tree_widget), "enable-delete", prefb, NULL); - g_signal_connect (data->caja_settings, - "changed::" CAJA_ENABLE_DELETE_KEY, - G_CALLBACK (on_enable_delete_changed), - data); - - /* Get confirm_trash */ prefb = g_settings_get_boolean (data->caja_settings, CAJA_CONFIRM_TRASH_KEY); - data->confirm_trash = prefb; - - g_signal_connect (data->caja_settings, - "changed::" CAJA_CONFIRM_TRASH_KEY, - G_CALLBACK (on_confirm_trash_changed), - data); } static void -- cgit v1.2.1