void SimGraphEventProc(ClientData clientData, XEvent *eventPtr) { SimGraph *graph = (SimGraph *) clientData; if ((eventPtr->type == Expose) && (eventPtr->xexpose.count == 0)) { graph->visible = 1; EventuallyRedrawGraph(graph); } else if (eventPtr->type == MapNotify) { graph->visible = 1; } else if (eventPtr->type == UnmapNotify) { graph->visible = 0; } else if (eventPtr->type == VisibilityNotify) { if (eventPtr->xvisibility.state == VisibilityFullyObscured) graph->visible = 0; else graph->visible = 1; } else if (eventPtr->type == ConfigureNotify) { DoResizeGraph(graph, eventPtr->xconfigure.width, eventPtr->xconfigure.height); EventuallyRedrawGraph(graph); } else if (eventPtr->type == DestroyNotify) { Tcl_DeleteCommand(graph->interp, Tk_PathName(graph->tkwin)); graph->tkwin = NULL; if (graph->flags & VIEW_REDRAW_PENDING) { //fprintf(stderr, "SimGraphEventProc Destroy token %d\n", graph->draw_graph_token); assert(graph->draw_graph_token != 0); if (graph->draw_graph_token != 0) { Tk_DeleteTimerHandler(graph->draw_graph_token); graph->draw_graph_token = 0; } graph->flags &= ~VIEW_REDRAW_PENDING; } Tk_EventuallyFree((ClientData) graph, DestroySimGraph); } }
void callGraphDisplay::nonSliderButtonRelease(ClientData cd, XEvent *) { callGraphDisplay *pthis = (callGraphDisplay *)cd; pthis->nonSliderButtonCurrentlyPressed = false; Tk_DeleteTimerHandler(pthis->buttonAutoRepeatToken); }