From 4b02345e86fe536234bb065b1f65f0d6d709bab8 Mon Sep 17 00:00:00 2001 From: Perry Werneck Date: Tue, 17 Aug 2021 00:16:17 -0300 Subject: [PATCH] Fixing gsettings on windows. --- src/objects/window/window.c | 80 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 61 insertions(+), 19 deletions(-) diff --git a/src/objects/window/window.c b/src/objects/window/window.c index cb78fde..b46d301 100644 --- a/src/objects/window/window.c +++ b/src/objects/window/window.c @@ -841,32 +841,74 @@ void pw3270_application_window_set_active_terminal(GtkWidget *widget, GtkWidget GSettings *pw3270_application_window_settings_new() { -#ifdef DEBUG + GSettings * settings = NULL; - GError * error = NULL; - GSettingsSchemaSource * source = - g_settings_schema_source_new_from_directory( - ".", - NULL, - TRUE, - &error - ); +#if defined(DEBUG) + { + GError * error = NULL; + GSettingsSchemaSource * source = + g_settings_schema_source_new_from_directory( + ".", + NULL, + TRUE, + &error + ); - g_assert_no_error(error); + g_assert_no_error(error); - GSettingsSchema * schema = - g_settings_schema_source_lookup( - source, - "br.com.bb." G_STRINGIFY(PRODUCT_NAME) ".window", - TRUE); + GSettingsSchema * schema = + g_settings_schema_source_lookup( + source, + "br.com.bb." G_STRINGIFY(PRODUCT_NAME) ".window", + TRUE); - GSettings * settings = g_settings_new_full(schema, NULL, NULL); + settings = g_settings_new_full(schema, NULL, NULL); - g_settings_schema_source_unref(source); + g_settings_schema_source_unref(source); -#else + } +#elif defined(_WIN32) + { + lib3270_autoptr(char) filename = lib3270_build_filename("gschemas.compiled",NULL); + + if(g_file_test(filename,G_FILE_TEST_IS_REGULAR)) { + + GError * error = NULL; + g_autofree gchar *dirname = g_path_get_dirname(filename); + + GSettingsSchemaSource * source = + g_settings_schema_source_new_from_directory( + dirname, + NULL, + TRUE, + &error + ); + + g_assert_no_error(error); + + GSettingsSchema * schema = + g_settings_schema_source_lookup( + source, + "br.com.bb." G_STRINGIFY(PRODUCT_NAME), + TRUE); - GSettings * settings = g_settings_new("br.com.bb." G_STRINGIFY(PRODUCT_NAME) ".window"); + debug("schema %s=%p","br.com.bb." PACKAGE_NAME,schema); + + settings = g_settings_new_full(schema, NULL, NULL); + + g_settings_schema_source_unref(source); + + } else { + + settings = g_settings_new("br.com.bb." G_STRINGIFY(PRODUCT_NAME)); + + } + + } +#else + { + settings = g_settings_new("br.com.bb." G_STRINGIFY(PRODUCT_NAME) ".window"); + } #endif // DEBUG -- libgit2 0.21.2