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 | ... | ... |