void _GuiMacDrawingArea_update (GuiObject widget) { iam_drawingarea; if (my exposeCallback) { struct structGuiDrawingAreaExposeEvent event = { widget }; _GuiMac_clipOnParent (widget); try { my exposeCallback (my exposeBoss, & event); } catch (MelderError) { Melder_flushError ("Redrawing not completed"); } GuiMac_clipOff (); } }
void _GuiWinDrawingArea_update (GuiObject widget) { iam_drawingarea; PAINTSTRUCT paintStruct; BeginPaint (widget -> window, & paintStruct); if (my exposeCallback) { struct structGuiDrawingAreaExposeEvent event = { widget }; try { my exposeCallback (my exposeBoss, & event); } catch (MelderError) { Melder_flushError ("Redrawing not completed"); } } EndPaint (widget -> window, & paintStruct); }
//} static gboolean _GuiGtkDrawingArea_exposeCallback (GuiObject widget, GdkEventExpose *expose, gpointer void_me) { iam (GuiDrawingArea); // TODO: that helps agains the damaged regions outside the rect where the // Graphics drawing is done, but where does that margin come from in the // first place?? Additionally this causes even more flickering //gdk_window_clear_area(widget->window, expose->area.x, expose->area.y, expose->area.width, expose->area.height); if (my exposeCallback) { struct structGuiDrawingAreaExposeEvent event = { widget, 0 }; event. x = expose -> area. x; event. y = expose -> area. y; event. width = expose -> area. width; event. height = expose -> area. height; my exposeCallback (my exposeBoss, & event); return TRUE; // let the expose callback handle redrawing } return FALSE; // let GTK+ handle redrawing }