diff options
-rw-r--r-- | testsuite/css/style/test-css-style.c | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/testsuite/css/style/test-css-style.c b/testsuite/css/style/test-css-style.c index 24f558aaea..71e4056ee0 100644 --- a/testsuite/css/style/test-css-style.c +++ b/testsuite/css/style/test-css-style.c @@ -99,11 +99,24 @@ done: } static void +style_context_changed (GtkWidget *window, const char **output) +{ + GtkStyleContext *context; + +g_print ("style updated\n"); + context = gtk_widget_get_style_context (window); + + *output = gtk_style_context_to_string (context, GTK_STYLE_CONTEXT_PRINT_RECURSE | + GTK_STYLE_CONTEXT_PRINT_SHOW_CHANGE | + GTK_STYLE_CONTEXT_PRINT_SHOW_STYLE); + g_main_context_wakeup (NULL); +} + +static void load_ui_file (GFile *file, gboolean generate) { GtkBuilder *builder; GtkWidget *window; - GtkStyleContext *context; char *output, *diff; char *ui_file, *css_file, *reference_file; GtkCssProvider *provider; @@ -125,11 +138,13 @@ load_ui_file (GFile *file, gboolean generate) g_assert (window != NULL); - context = gtk_widget_get_style_context (window); + output = NULL; + g_signal_connect (window, "map", G_CALLBACK (style_context_changed), &output); + + gtk_widget_show (window); - output = gtk_style_context_to_string (context, GTK_STYLE_CONTEXT_PRINT_RECURSE | - GTK_STYLE_CONTEXT_PRINT_SHOW_CHANGE | - GTK_STYLE_CONTEXT_PRINT_SHOW_STYLE); + while (!output) + g_main_context_iteration (NULL, FALSE); if (generate) { |