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,32 +841,74 @@ void pw3270_application_window_set_active_terminal(GtkWidget *widget, GtkWidget | ||
841 | 841 | ||
842 | GSettings *pw3270_application_window_settings_new() { | 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 | #endif // DEBUG | 913 | #endif // DEBUG |
872 | 914 |