--- a/ui/gtk/draw_cairo.c Sat Oct 04 14:54:25 2025 +0200 +++ b/ui/gtk/draw_cairo.c Sun Oct 19 21:20:08 2025 +0200 @@ -35,29 +35,29 @@ #if GTK_MAJOR_VERSION >= 3 -static void ui_drawingarea_draw( - GtkDrawingArea *area, - cairo_t *cr, - int width, - int height, - gpointer data) -{ +void ui_drawingarea_draw(UiDrawingArea *drawingarea, cairo_t *cr, int width, int height) { UiCairoGraphics g; g.g.width = width; g.g.height = height; - g.widget = GTK_WIDGET(area); + g.widget = drawingarea->widget;; g.cr = cr; - UiDrawEvent *event = data; - UiEvent ev; - ev.obj = event->obj; - ev.window = event->obj->window; - ev.document = event->obj->ctx->document; + UiEvent event; + event.obj = drawingarea->obj; + event.window = event.obj->window; + event.document = event.obj->ctx->document; + event.eventdata = NULL; + event.eventdatatype = 0; + event.intval = 0; + event.set = 0; - event->callback(&ev, &g.g, event->userdata); + if(drawingarea->draw) { + drawingarea->draw(&event, &g.g, drawingarea->drawdata); + } } #endif +/* #if UI_GTK3 gboolean ui_drawingarea_expose(GtkWidget *w, cairo_t *cr, void *data) { int width = gtk_widget_get_allocated_width(w); @@ -85,9 +85,11 @@ return FALSE; } #endif +*/ // function from graphics.h +/* void ui_connect_draw_handler(GtkWidget *widget, UiDrawEvent *event) { #if GTK_MAJOR_VERSION >= 4 gtk_drawing_area_set_draw_func(GTK_DRAWING_AREA(widget), ui_drawingarea_draw, event, NULL); @@ -103,7 +105,7 @@ event); #endif } - +*/ PangoContext *ui_get_pango_context(UiGraphics *g) { UiCairoGraphics *gr = (UiCairoGraphics*)g; @@ -130,7 +132,7 @@ cairo_stroke(gr->cr); } -void ui_draw_rect(UiGraphics *g, int x, int y, int w, int h, int fill) { +void ui_draw_rect(UiGraphics *g, int x, int y, int w, int h, UiBool fill) { UiCairoGraphics *gr = (UiCairoGraphics*)g; cairo_set_line_width(gr->cr, 1); cairo_rectangle(gr->cr, x + 0.5, y + 0.5 , w, h);