--- a/ui/gtk/toolkit.c Tue Feb 25 21:11:00 2025 +0100 +++ b/ui/gtk/toolkit.c Sat Apr 05 16:46:11 2025 +0200 @@ -248,8 +248,9 @@ } void ui_set_visible(UIWIDGET widget, int visible) { - // TODO: gtk4 -#if GTK_MAJOR_VERSION <= 3 +#if GTK_MAJOR_VERSION >= 4 + gtk_widget_set_visible(widget, visible); +#else if(visible) { gtk_widget_set_no_show_all(widget, FALSE); gtk_widget_show_all(widget); @@ -327,8 +328,6 @@ #if GTK_MAJOR_VERSION >= 3 -static GtkCssProvider* ui_gtk_css_provider; - #if GTK_MAJOR_VERSION == 4 static const char *ui_gtk_css = "#path-textfield-box {\n" @@ -415,15 +414,19 @@ #endif void ui_css_init(void) { - ui_gtk_css_provider = gtk_css_provider_new(); + ui_add_styledata(ui_gtk_css, -1); +} + +void ui_add_styledata(const char *styledata, int len) { + GtkCssProvider *css = gtk_css_provider_new(); #ifdef UI_GTK3 - gtk_css_provider_load_from_data(ui_gtk_css_provider, ui_gtk_css, -1, NULL); + gtk_css_provider_load_from_data(css, styledata, len, NULL); GdkScreen *screen = gdk_screen_get_default(); gtk_style_context_add_provider_for_screen( screen, - GTK_STYLE_PROVIDER(ui_gtk_css_provider), + GTK_STYLE_PROVIDER(css), GTK_STYLE_PROVIDER_PRIORITY_USER); #endif /* UI_GTK3 */ @@ -431,13 +434,20 @@ #if GTK_MINOR_VERSION < 12 - gtk_css_provider_load_from_data(ui_gtk_css_provider, ui_gtk_css, -1); + gtk_css_provider_load_from_data(css, styledata, len); #else - gtk_css_provider_load_from_string(ui_gtk_css_provider, ui_gtk_css); + if(len < 0) { + gtk_css_provider_load_from_string(css, ui_gtk_css); + } else { + GBytes *style_data = g_bytes_new(styledata, len); + gtk_css_provider_load_from_bytes(css, style_data); + g_bytes_unref(style_data); + + } #endif /* GTK_MINOR_VERSION < 12 */ GdkDisplay *display = gdk_display_get_default(); - gtk_style_context_add_provider_for_display(display, GTK_STYLE_PROVIDER(ui_gtk_css_provider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); + gtk_style_context_add_provider_for_display(display, GTK_STYLE_PROVIDER(css), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); #endif /* UI_GTK4 */ }