Exemple #1
0
int main(int argc, char *argv[])
{

    X11Data x11data = create_default_x11data();

    for(;;)
    {
        if (x11data.window == None)
            handle_focus(&x11data);
        else
            handle_event(&x11data, argv[1]);
    }

    return 0;
}
Exemple #2
0
// Handle X event on queue.  Return true if event was handled.
bool jbxvt_handle_xevents(xcb_connection_t * xc)
{
	jb_check_x(xc);
	static bool init;
	if (!init) {
		// Set up the wm_del_win property here.
		wm_del_win(xc);
	}
	xcb_generic_event_t * event = xcb_poll_for_event(xc);
	if (!event) // nothing to process
		return false;
	bool ret = true;
	switch (event->response_type & ~0x80) {
	// Put things to ignore here:
	case 0: // Unimplemented, undefined, no event
	case 150: // Undefined
	case XCB_KEY_RELEASE: // Unimplemented
	case XCB_MAP_NOTIFY:
	case XCB_NO_EXPOSURE: // Unimplemented
	case XCB_REPARENT_NOTIFY: // handle here to ensure cursor filled.
		ret = false;
		break;
	case XCB_CONFIGURE_NOTIFY:
		jbxvt_resize_window(xc);
		break;
	case XCB_KEY_PRESS:
		key_press(xc, event);
		break;
	case XCB_CLIENT_MESSAGE:
		handle_client_message(xc,
			(xcb_client_message_event_t *)event);
		break;
	case XCB_EXPOSE:
	case XCB_GRAPHICS_EXPOSURE:
		handle_expose(xc, (xcb_expose_event_t *)event);
		break;
	case XCB_ENTER_NOTIFY:
	case XCB_FOCUS_IN:
		handle_focus(true);
		break;
	case XCB_LEAVE_NOTIFY:
	case XCB_FOCUS_OUT:
		handle_focus(false);
		break;
	case XCB_SELECTION_CLEAR:
		jbxvt_clear_selection();
		break;
	case XCB_SELECTION_NOTIFY:
		handle_selection_notify(xc,
			(xcb_selection_notify_event_t *)event);
		break;
	case XCB_SELECTION_REQUEST:
		handle_selection_request(xc,
			(xcb_selection_request_event_t *)event);
		break;
	case XCB_BUTTON_PRESS:
		jbxvt_handle_button_press_event(xc,
			(xcb_button_press_event_t *)event);
		break;
	case XCB_BUTTON_RELEASE:
		jbxvt_handle_button_release_event(xc,
			(xcb_button_release_event_t *)event);
		break;
	case XCB_MOTION_NOTIFY:
		handle_motion_notify(xc,
			(xcb_motion_notify_event_t *)event);
		break;
	default:
		LOG("Unhandled event %d", event->response_type);
	}
	free(event);
	return ret;
}