# I mean basically a re-render fundamentally is just a call of app.redraw(). # We do that for every gtk signal after all state-changes by the signal have run # through: proc valueChangedEventCallback( widget: GtkWidget, data: ptr EventObj[proc(newValue: float)] ) {.cdecl.} = let scaleValue: float = gtk_range_get_value(widget).float ScaleState(data[].widget).value = scaleValue data[].callback(scaleValue) data[].redraw() ``` As an example