From 95b26ac974f4169aa391d1a68a37c71b44d325b4 Mon Sep 17 00:00:00 2001 From: Arnaud Bonatti Date: Sat, 18 Apr 2020 13:18:06 +0200 Subject: Demo CSS cache invalidation failure. --- demos/widget-factory/data/themes/theme1/flag.svg | 90 +++++++++++++++++++++++ demos/widget-factory/data/themes/theme2/flag.svg | 25 +++++++ demos/widget-factory/widget-factory.c | 40 ++++++++++ demos/widget-factory/widget-factory.css | 6 ++ demos/widget-factory/widget-factory.gresource.xml | 6 ++ demos/widget-factory/widget-factory.ui | 20 +++++ 6 files changed, 187 insertions(+) create mode 100644 demos/widget-factory/data/themes/theme1/flag.svg create mode 100644 demos/widget-factory/data/themes/theme2/flag.svg diff --git a/demos/widget-factory/data/themes/theme1/flag.svg b/demos/widget-factory/data/themes/theme1/flag.svg new file mode 100644 index 0000000000..ceb16a307b --- /dev/null +++ b/demos/widget-factory/data/themes/theme1/flag.svg @@ -0,0 +1,90 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + diff --git a/demos/widget-factory/data/themes/theme2/flag.svg b/demos/widget-factory/data/themes/theme2/flag.svg new file mode 100644 index 0000000000..5d706a0191 --- /dev/null +++ b/demos/widget-factory/data/themes/theme2/flag.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/demos/widget-factory/widget-factory.c b/demos/widget-factory/widget-factory.c index 8752760c88..38220f3d64 100644 --- a/demos/widget-factory/widget-factory.c +++ b/demos/widget-factory/widget-factory.c @@ -1688,6 +1688,43 @@ set_up_context_popover (GtkWidget *widget, gtk_widget_add_controller (widget, GTK_EVENT_CONTROLLER (gesture)); } +static void +cache_invalidation_test_first_init () +{ + GdkDisplay *display; + GtkIconTheme *icon_theme; + + display = gdk_display_get_default (); + icon_theme = gtk_icon_theme_get_for_display (display); + + gtk_icon_theme_add_resource_path (icon_theme, "/org/gtk/WidgetFactory4/theme1"); +} + +static void +on_cache_invalidation_test_toggled (GtkToggleButton *button, + gpointer user_data) +{ + GdkDisplay *display; + GtkIconTheme *icon_theme; + char ***icon_resource_path; + guint length; + char **theme_path; + + display = gdk_display_get_default (); + icon_theme = gtk_icon_theme_get_for_display (display); + icon_resource_path = gtk_icon_theme_get_resource_path (icon_theme); + length = g_strv_length (icon_resource_path); + theme_path = icon_resource_path [length - 1]; + + if (g_strcmp0 (theme_path, "/org/gtk/WidgetFactory4/theme2") == 0) + theme_path = "/org/gtk/WidgetFactory4/theme1"; + else + theme_path = "/org/gtk/WidgetFactory4/theme2"; + + icon_resource_path[length - 1] = theme_path; + gtk_icon_theme_set_resource_path (icon_theme, icon_resource_path); +} + static void activate (GApplication *app) { @@ -1752,9 +1789,12 @@ activate (GApplication *app) GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); g_object_unref (provider); + cache_invalidation_test_first_init (); + builder = gtk_builder_new (); scope = gtk_builder_cscope_new (); gtk_builder_cscope_add_callback_symbols (GTK_BUILDER_CSCOPE (scope), + "on_cache_invalidation_test_toggled", (GCallback)on_cache_invalidation_test_toggled, "on_entry_icon_release", (GCallback)on_entry_icon_release, "on_scale_button_value_changed", (GCallback)on_scale_button_value_changed, "on_record_button_toggled", (GCallback)on_record_button_toggled, diff --git a/demos/widget-factory/widget-factory.css b/demos/widget-factory/widget-factory.css index 1674f189ac..80ef6437b4 100644 --- a/demos/widget-factory/widget-factory.css +++ b/demos/widget-factory/widget-factory.css @@ -24,3 +24,9 @@ .border-ridge { border-width: 2px; } + +.cache-invalidation-test { + background-repeat:no-repeat; + background-image:-gtk-icontheme('flag'); + background-position:center center; +} diff --git a/demos/widget-factory/widget-factory.gresource.xml b/demos/widget-factory/widget-factory.gresource.xml index 39d665da06..64f4de2609 100644 --- a/demos/widget-factory/widget-factory.gresource.xml +++ b/demos/widget-factory/widget-factory.gresource.xml @@ -6,6 +6,12 @@ widget-factory.css + + data/themes/theme1/flag.svg + + + data/themes/theme2/flag.svg + help-overlay.ui diff --git a/demos/widget-factory/widget-factory.ui b/demos/widget-factory/widget-factory.ui index 9060c816ce..4551e0810e 100644 --- a/demos/widget-factory/widget-factory.ui +++ b/demos/widget-factory/widget-factory.ui @@ -879,6 +879,26 @@ Suspendisse feugiat quam quis dolor accumsan cursus. center + + + + + Test + fill + True + + + + + + end + + + + + -- cgit v1.2.1