Connect to draw instead of expose events

This commit is contained in:
Paul Dicker
2025-04-02 19:03:46 +02:00
committed by Stéphane Lesimple
parent e75d73c74a
commit 6c88a55600
11 changed files with 44 additions and 75 deletions

View File

@@ -591,9 +591,9 @@ static void render_sector(cairo_t *cr, raw_editor_context *rec)
}
}
/* Expose event handler */
/* Draw event handler */
static gboolean expose_cb(GtkWidget *widget, GdkEventExpose *event, gpointer data)
static gboolean draw_cb(GtkWidget *widget, cairo_t *cr, gpointer data)
{ raw_editor_context *rec = Closure->rawEditorContext;
if(!rec->layout)
@@ -601,11 +601,6 @@ static gboolean expose_cb(GtkWidget *widget, GdkEventExpose *event, gpointer dat
calculate_geometry(rec);
}
if(event->count) /* Exposure compression */
return TRUE;
cairo_t *cr = gdk_cairo_create(GDK_DRAWABLE(gtk_widget_get_window(widget)));
evaluate_vectors(rec);
render_sector(cr, rec);
@@ -1086,7 +1081,7 @@ void GuiCreateRawEditor(void)
rec->drawingArea = gtk_drawing_area_new();
gtk_widget_add_events(rec->drawingArea, GDK_BUTTON_PRESS_MASK);
gtk_box_pack_start(GTK_BOX(hbox), rec->drawingArea, TRUE, TRUE, 0);
g_signal_connect(G_OBJECT(rec->drawingArea), "expose_event", G_CALLBACK(expose_cb), NULL);
g_signal_connect(G_OBJECT(rec->drawingArea), "draw", G_CALLBACK(draw_cb), NULL);
g_signal_connect(G_OBJECT(rec->drawingArea), "button_press_event", G_CALLBACK(button_cb), NULL);
}