| 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 |