ui/gtk/toolkit.c

changeset 103
6606616eca9f
parent 100
d2bd73d28ff1
child 108
77254bd6dccb
equal deleted inserted replaced
102:64ded9f6a6c6 103:6606616eca9f
246 gtk_widget_set_no_show_all(widget, !value); 246 gtk_widget_set_no_show_all(widget, !value);
247 #endif 247 #endif
248 } 248 }
249 249
250 void ui_set_visible(UIWIDGET widget, int visible) { 250 void ui_set_visible(UIWIDGET widget, int visible) {
251 // TODO: gtk4 251 #if GTK_MAJOR_VERSION >= 4
252 #if GTK_MAJOR_VERSION <= 3 252 gtk_widget_set_visible(widget, visible);
253 #else
253 if(visible) { 254 if(visible) {
254 gtk_widget_set_no_show_all(widget, FALSE); 255 gtk_widget_set_no_show_all(widget, FALSE);
255 gtk_widget_show_all(widget); 256 gtk_widget_show_all(widget);
256 } else { 257 } else {
257 gtk_widget_hide(widget); 258 gtk_widget_hide(widget);
325 } 326 }
326 327
327 328
328 #if GTK_MAJOR_VERSION >= 3 329 #if GTK_MAJOR_VERSION >= 3
329 330
330 static GtkCssProvider* ui_gtk_css_provider;
331
332 #if GTK_MAJOR_VERSION == 4 331 #if GTK_MAJOR_VERSION == 4
333 static const char *ui_gtk_css = 332 static const char *ui_gtk_css =
334 "#path-textfield-box {\n" 333 "#path-textfield-box {\n"
335 " background-color: alpha(currentColor, 0.1);" 334 " background-color: alpha(currentColor, 0.1);"
336 " border-radius: 6px;" 335 " border-radius: 6px;"
413 "}\n" 412 "}\n"
414 ; 413 ;
415 #endif 414 #endif
416 415
417 void ui_css_init(void) { 416 void ui_css_init(void) {
418 ui_gtk_css_provider = gtk_css_provider_new(); 417 ui_add_styledata(ui_gtk_css, -1);
418 }
419
420 void ui_add_styledata(const char *styledata, int len) {
421 GtkCssProvider *css = gtk_css_provider_new();
419 422
420 #ifdef UI_GTK3 423 #ifdef UI_GTK3
421 gtk_css_provider_load_from_data(ui_gtk_css_provider, ui_gtk_css, -1, NULL); 424 gtk_css_provider_load_from_data(css, styledata, len, NULL);
422 425
423 GdkScreen *screen = gdk_screen_get_default(); 426 GdkScreen *screen = gdk_screen_get_default();
424 gtk_style_context_add_provider_for_screen( 427 gtk_style_context_add_provider_for_screen(
425 screen, 428 screen,
426 GTK_STYLE_PROVIDER(ui_gtk_css_provider), 429 GTK_STYLE_PROVIDER(css),
427 GTK_STYLE_PROVIDER_PRIORITY_USER); 430 GTK_STYLE_PROVIDER_PRIORITY_USER);
428 #endif /* UI_GTK3 */ 431 #endif /* UI_GTK3 */
429 432
430 #ifdef UI_GTK4 433 #ifdef UI_GTK4
431 434
432 435
433 #if GTK_MINOR_VERSION < 12 436 #if GTK_MINOR_VERSION < 12
434 gtk_css_provider_load_from_data(ui_gtk_css_provider, ui_gtk_css, -1); 437 gtk_css_provider_load_from_data(css, styledata, len);
435 #else 438 #else
436 gtk_css_provider_load_from_string(ui_gtk_css_provider, ui_gtk_css); 439 if(len < 0) {
440 gtk_css_provider_load_from_string(css, ui_gtk_css);
441 } else {
442 GBytes *style_data = g_bytes_new(styledata, len);
443 gtk_css_provider_load_from_bytes(css, style_data);
444 g_bytes_unref(style_data);
445
446 }
437 #endif /* GTK_MINOR_VERSION < 12 */ 447 #endif /* GTK_MINOR_VERSION < 12 */
438 448
439 GdkDisplay *display = gdk_display_get_default(); 449 GdkDisplay *display = gdk_display_get_default();
440 gtk_style_context_add_provider_for_display(display, GTK_STYLE_PROVIDER(ui_gtk_css_provider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); 450 gtk_style_context_add_provider_for_display(display, GTK_STYLE_PROVIDER(css), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
441 451
442 #endif /* UI_GTK4 */ 452 #endif /* UI_GTK4 */
443 } 453 }
444 454
445 455

mercurial