Example #1
0
static void
PaxWidgetEventProc(ClientData clientData, XEvent *event)
{
    PaxWidget *paxwidget = (PaxWidget *) clientData;

    if (event->type == Expose || event->type == GraphicsExpose)
    {
	handle_expose_event(paxwidget, event);
    }
    else if (event->type == ConfigureNotify)
    {
	paxWidget_CallMethodArgs(paxwidget->obj, ResizedMethodIdx,
				 Py_BuildValue("ii", event->xconfigure.width,
					       event->xconfigure.height));
    }
    else if (event->type == MapNotify)
    {
	paxWidget_CallMethod(paxwidget->obj, MapMethodIdx);
    }
    else if (event->type == DestroyNotify)
    {
	paxWidget_CallMethod(paxwidget->obj, DestroyMethodIdx);

	if (paxwidget->tkwin != NULL)
	{
	    paxwidget->tkwin = NULL;
	    Tcl_DeleteCommand(paxwidget->interp,
			      Tcl_GetCommandName(paxwidget->interp,
						 paxwidget->widget_cmd));
	}
	if (paxwidget->update_pending)
	{
	    Tk_CancelIdleCall(PaxWidgetDisplay, (ClientData) paxwidget);
	}
	Tk_EventuallyFree((ClientData) paxwidget, PaxWidgetDestroy);
    }
    else if (event->type > LASTEvent)
    {
	paxWidget_CallMethodArgs(paxwidget->obj, ExtensionEventIdx,
				 Py_BuildValue("(i)", event->type));
    }
}
Example #2
0
void main_loop()
{
	XEvent event;
	XSetErrorHandler(handle_x_error); //Ignore X errors otherwise the WM would crash every other minute :)
	while(1){
       		XNextEvent(display, &event);
       		switch(event.type){
		case KeyPress:
			if ((XKeycodeToKeysym(display, event.xkey.keycode, 0) == KEY_PREFIX) && (event.xkey.state & MOD_MASK))
			{       
				LOG_DEBUG("Switching to command mode\n");
				XDefineCursor(display, selected, (XCreateFontCursor(display, CMD_CURSOR)));
				handle_keypress_event(&event);
			}
			break;
		case MapRequest:
			handle_maprequest_event(&event);
			break;
		case DestroyNotify: 
			handle_destroy_event(&event);
			break;
		case ConfigureNotify: 
			handle_configure_event(&event);
			break;
		case Expose: 
			handle_expose_event(&event);
			break;
		case PropertyNotify:
			handle_property_event(&event);
			break;
		default:
			LOG_DEBUG("Received an unhandled event:  %d\n", event.type);
			break;
			}
	}
}