diff options
author | Matthias Clasen <mclasen@redhat.com> | 2022-04-19 03:51:16 +0000 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2022-04-19 03:51:16 +0000 |
commit | 8e28b0765ca8335bb14011325a99712f4a3a21b7 (patch) | |
tree | af2a9b6f8ac3efbea784d056a8287985803359f4 | |
parent | 1cc2b96e6bcbb5f2503953ff05e7c095d035b506 (diff) | |
parent | c882a611c85bc8ac32b2eef4d44b160aeab619b0 (diff) | |
download | gtk+-8e28b0765ca8335bb14011325a99712f4a3a21b7.tar.gz |
Merge branch 'file-filter-fix' into 'main'
Fix file filter buildable support
Closes #4787
See merge request GNOME/gtk!4652
-rw-r--r-- | gtk/gtkfilefilter.c | 2 | ||||
-rw-r--r-- | testsuite/gtk/filefilter.c | 39 |
2 files changed, 40 insertions, 1 deletions
diff --git a/gtk/gtkfilefilter.c b/gtk/gtkfilefilter.c index c9a4d3040a..f9c7627615 100644 --- a/gtk/gtkfilefilter.c +++ b/gtk/gtkfilefilter.c @@ -339,7 +339,7 @@ parser_end_element (GtkBuildableParseContext *context, { SubParserData *data = (SubParserData*)user_data; - if (data->string) + if (data->string && data->parsing) { switch (data->type) { diff --git a/testsuite/gtk/filefilter.c b/testsuite/gtk/filefilter.c index 6cb659fec7..f32801bde4 100644 --- a/testsuite/gtk/filefilter.c +++ b/testsuite/gtk/filefilter.c @@ -116,6 +116,44 @@ test_mime_type (void) g_object_unref (filter); } +static void +test_buildable (void) +{ + GtkBuilder *builder; + const char *buffer = + "<interface>\n" + "<object class=\"GtkFileFilter\" id=\"filter\">\n" + "<property name=\"name\">Audio Files</property>\n" + "<mime-types>\n" + "<mime-type>audio/*</mime-type>\n" + "</mime-types>\n" + "</object>\n" + "</interface>"; + GtkFileFilter *filter; + GVariant *v1, *v2; + char *s1, *s2; + + builder = gtk_builder_new (); + gtk_builder_add_from_string (builder, buffer, strlen (buffer), NULL); + filter = GTK_FILE_FILTER (gtk_builder_get_object (builder, "filter")); + + v1 = gtk_file_filter_to_gvariant (filter); + v2 = g_variant_parse (NULL, "('Audio Files', [(1, 'audio/*')])", NULL, NULL, NULL); + + s1 = g_variant_print (v1, FALSE); + s2 = g_variant_print (v2, FALSE); + + g_assert_true (strcmp (s1, s2) == 0); + + g_free (s1); + g_free (s2); + + g_variant_unref (v1); + g_variant_unref (v2); + + g_object_unref (builder); +} + int main (int argc, char *argv[]) { @@ -126,6 +164,7 @@ main (int argc, char *argv[]) g_test_add_func ("/filefilter/pattern", test_pattern); g_test_add_func ("/filefilter/suffix", test_suffix); g_test_add_func ("/filefilter/mimetype", test_mime_type); + g_test_add_func ("/filefilter/buildable", test_buildable); return g_test_run (); } |