Commit 4b02345e86fe536234bb065b1f65f0d6d709bab8
1 parent
8f6ff458
Exists in
master
and in
2 other branches
Fixing gsettings on windows.
Showing
1 changed file
with
61 additions
and
19 deletions
Show diff stats
src/objects/window/window.c
| ... | ... | @@ -841,32 +841,74 @@ void pw3270_application_window_set_active_terminal(GtkWidget *widget, GtkWidget |
| 841 | 841 | |
| 842 | 842 | GSettings *pw3270_application_window_settings_new() { |
| 843 | 843 | |
| 844 | -#ifdef DEBUG | |
| 844 | + GSettings * settings = NULL; | |
| 845 | 845 | |
| 846 | - GError * error = NULL; | |
| 847 | - GSettingsSchemaSource * source = | |
| 848 | - g_settings_schema_source_new_from_directory( | |
| 849 | - ".", | |
| 850 | - NULL, | |
| 851 | - TRUE, | |
| 852 | - &error | |
| 853 | - ); | |
| 846 | +#if defined(DEBUG) | |
| 847 | + { | |
| 848 | + GError * error = NULL; | |
| 849 | + GSettingsSchemaSource * source = | |
| 850 | + g_settings_schema_source_new_from_directory( | |
| 851 | + ".", | |
| 852 | + NULL, | |
| 853 | + TRUE, | |
| 854 | + &error | |
| 855 | + ); | |
| 854 | 856 | |
| 855 | - g_assert_no_error(error); | |
| 857 | + g_assert_no_error(error); | |
| 856 | 858 | |
| 857 | - GSettingsSchema * schema = | |
| 858 | - g_settings_schema_source_lookup( | |
| 859 | - source, | |
| 860 | - "br.com.bb." G_STRINGIFY(PRODUCT_NAME) ".window", | |
| 861 | - TRUE); | |
| 859 | + GSettingsSchema * schema = | |
| 860 | + g_settings_schema_source_lookup( | |
| 861 | + source, | |
| 862 | + "br.com.bb." G_STRINGIFY(PRODUCT_NAME) ".window", | |
| 863 | + TRUE); | |
| 862 | 864 | |
| 863 | - GSettings * settings = g_settings_new_full(schema, NULL, NULL); | |
| 865 | + settings = g_settings_new_full(schema, NULL, NULL); | |
| 864 | 866 | |
| 865 | - g_settings_schema_source_unref(source); | |
| 867 | + g_settings_schema_source_unref(source); | |
| 866 | 868 | |
| 867 | -#else | |
| 869 | + } | |
| 870 | +#elif defined(_WIN32) | |
| 871 | + { | |
| 872 | + lib3270_autoptr(char) filename = lib3270_build_filename("gschemas.compiled",NULL); | |
| 873 | + | |
| 874 | + if(g_file_test(filename,G_FILE_TEST_IS_REGULAR)) { | |
| 875 | + | |
| 876 | + GError * error = NULL; | |
| 877 | + g_autofree gchar *dirname = g_path_get_dirname(filename); | |
| 878 | + | |
| 879 | + GSettingsSchemaSource * source = | |
| 880 | + g_settings_schema_source_new_from_directory( | |
| 881 | + dirname, | |
| 882 | + NULL, | |
| 883 | + TRUE, | |
| 884 | + &error | |
| 885 | + ); | |
| 886 | + | |
| 887 | + g_assert_no_error(error); | |
| 888 | + | |
| 889 | + GSettingsSchema * schema = | |
| 890 | + g_settings_schema_source_lookup( | |
| 891 | + source, | |
| 892 | + "br.com.bb." G_STRINGIFY(PRODUCT_NAME), | |
| 893 | + TRUE); | |
| 868 | 894 | |
| 869 | - GSettings * settings = g_settings_new("br.com.bb." G_STRINGIFY(PRODUCT_NAME) ".window"); | |
| 895 | + debug("schema %s=%p","br.com.bb." PACKAGE_NAME,schema); | |
| 896 | + | |
| 897 | + settings = g_settings_new_full(schema, NULL, NULL); | |
| 898 | + | |
| 899 | + g_settings_schema_source_unref(source); | |
| 900 | + | |
| 901 | + } else { | |
| 902 | + | |
| 903 | + settings = g_settings_new("br.com.bb." G_STRINGIFY(PRODUCT_NAME)); | |
| 904 | + | |
| 905 | + } | |
| 906 | + | |
| 907 | + } | |
| 908 | +#else | |
| 909 | + { | |
| 910 | + settings = g_settings_new("br.com.bb." G_STRINGIFY(PRODUCT_NAME) ".window"); | |
| 911 | + } | |
| 870 | 912 | |
| 871 | 913 | #endif // DEBUG |
| 872 | 914 | ... | ... |