diff -r bf810176ddb8 -r e5f4d8af567e ui/gtk/toolkit.c --- a/ui/gtk/toolkit.c Mon Feb 12 21:13:23 2024 +0100 +++ b/ui/gtk/toolkit.c Sun Jun 09 15:43:08 2024 +0200 @@ -33,10 +33,12 @@ #include "toolkit.h" #include "toolbar.h" -#include "model.h" #include "image.h" #include "../common/document.h" #include "../common/properties.h" +#include "../common/menu.h" +#include "../common/toolbar.h" +#include "../common/threadpool.h" #include #include @@ -70,14 +72,12 @@ gtk_init(&argc, &argv); application_name = appname; + ui_css_init(); + uic_docmgr_init(); - ui_toolbar_init(); // TODO: remove uic_toolbar_init(); - // init custom types - ui_list_init(); - ui_image_init(); uic_load_app_properties(); @@ -191,6 +191,23 @@ return NULL; } +static gboolean ui_idle_func(void *data) { + UiJob *job = data; + job->job_func(job->job_data); + free(job); + return FALSE; +} + +void ui_call_mainthread(ui_threadfunc tf, void* td) { + UiJob *job = malloc(sizeof(UiJob)); + job->job_func = tf; + job->job_data = td; + job->finish_callback = NULL; + job->finish_data = NULL; + job->obj = NULL; + g_idle_add(ui_idle_func, job); +} + void ui_job(UiObject *obj, ui_threadfunc tf, void *td, ui_callback f, void *fd) { UiJob *job = malloc(sizeof(UiJob)); job->obj = obj; @@ -245,7 +262,9 @@ } void ui_destroy_vardata(GtkWidget *object, UiVarEventData *data) { - ui_destroy_boundvar(data->obj->ctx, data->var); + if(data->var) { + ui_destroy_boundvar(data->obj->ctx, data->var); + } free(data); } @@ -270,3 +289,28 @@ } +#if GTK_MAJOR_VERSION >= 3 + +static GtkCssProvider* ui_gtk_css_provider; + +static const char *ui_gtk_css = +"#path-textfield-box {" +" background-color: @theme_base_color;" +" border-radius: 5px;" +" padding: 0px;" +"}"; + +void ui_css_init(void) { + ui_gtk_css_provider = gtk_css_provider_new(); + gtk_css_provider_load_from_data(ui_gtk_css_provider, ui_gtk_css, -1, 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_PRIORITY_USER); +} + + + +#endif \ No newline at end of file