void eMapRequest(XEvent *event) { fprintf(stderr, "Got a map request\n"); Node *newNode = allocateNode(); newNode -> window = event -> xmaprequest.window; /* For Click to Focus */ XGrabButton(display, AnyButton, AnyModifier, newNode -> window, True, ButtonPressMask | ButtonReleaseMask, GrabModeAsync, GrabModeSync, None, None); //Containerize and move the viewNode if (focusedNode == viewNode) { fprintf(stderr, "Focused node is equal to the viewnode\n"); containerize(); viewNode = viewNode -> parent ? viewNode -> parent : viewNode; //This is the case in which we reparented the root node if (focusedNode == rootNode) { rootNode = viewNode; } //Brother the new node and rerender brotherNode(newNode, viewNode -> child, 1); placeNode(viewNode, rootX, rootY, rootWidth, rootHeight); } else if (focusedNode && focusedNode -> parent) { brotherNode(newNode, focusedNode, 1); placeNode(focusedNode, focusedNode -> parent -> x, focusedNode -> parent -> y, focusedNode -> parent -> width, focusedNode -> parent -> height); } else { //No focus node, fist element created fprintf(stderr, "FIRST NODE YO\n"); parentNode(newNode, viewNode); } fprintf(stderr, "\n\nAFTA\n\n"); addLookupEntry(newNode, &newNode -> window); fprintf(stderr, "added the lookup entry\n"); focusNode(newNode, NULL, True, True); fprintf(stderr, "done with the map request\n"); }
/** * Builds the lookup table to facilitate parsing. */ void ControlSeqParser::buildLookup() { //Should only build once. if (!m_csLookup.empty()) { return; } addLookupEntry("[", CS_CURSOR_POSITION_REPORT, 0, 2, 1, 'R'); addLookupEntry("[", CS_CURSOR_POSITION, 0, 2, 1, 'H'); addLookupEntry("[", CS_CURSOR_POSITION, 0, 2, 1, 'f'); addLookupEntry("[", CS_CURSOR_UP, 0, 1, 1, 'A'); addLookupEntry("[", CS_CURSOR_DOWN, 0, 1, 1, 'B'); addLookupEntry("[", CS_CURSOR_FORWARD, 0, 1, 1, 'C'); addLookupEntry("[", CS_CURSOR_BACKWARD, 0, 1, 1, 'D'); addLookupEntry("[", CS_CURSOR_POSITION_SAVE, 0, 0, 1, 's'); addLookupEntry("", CS_CURSOR_POSITION_SAVE, 0, 0, 1, '7'); addLookupEntry("[", CS_CURSOR_POSITION_RESTORE, 0, 0, 1, 'u'); addLookupEntry("", CS_CURSOR_POSITION_RESTORE, 0, 0, 1, '8'); addLookupEntry("[", CS_ERASE_DISPLAY, 0, -1, 1, 'J'); addLookupEntry("[", CS_ERASE_LINE, 0, -1, 1, 'K'); addLookupEntry("[", CS_GRAPHICS_MODE_SET, 0, -1, 1, 'm'); addLookupEntry("[", CS_MODE_SET, 0, -1, 1, 'h'); addLookupEntry("[", CS_MODE_RESET, 0, -1, 1, 'l'); addLookupEntry("[?", CS_MODE_SET_PRIV, 0, -1, 1, 'h'); addLookupEntry("[?", CS_MODE_RESET_PRIV, 0, -1, 1, 'l'); addLookupEntry("", CS_KEYPAD_APP_MODE, 0, 0, 1, '='); addLookupEntry("", CS_KEYPAD_NUM_MODE, 0, 0, 1, '>'); addLookupEntry("", CS_INDEX, 0, 0, 0, 'D'); addLookupEntry("", CS_REVERSE_INDEX, 0, 0, 0, 'M'); addLookupEntry("", CS_TAB_SET, 0, 0, 0, 'H'); addLookupEntry("[", CS_TAB_CLEAR, 0, 1, 0, 'g'); addLookupEntry("[", CS_TAB_FORWARD, 0, 1, 1, 'I'); addLookupEntry("(", CS_USER_MAPPING, 0, 0, 0, 'K'); addLookupEntry("(", CS_CHARSET_UK_G0_SET, 0, 0, 1, 'A'); addLookupEntry("(", CS_CHARSET_US_G0_SET, 0, 0, 1, 'B'); addLookupEntry("(", CS_CHARSET_SPEC_G0_SET, 0, 0, 1, '0'); addLookupEntry("(", CS_CHARSET_ALT_G0_SET, 0, 0, 1, '1'); addLookupEntry("(", CS_CHARSET_ALT_SPEC_G0_SET, 0, 0, 1, '2'); addLookupEntry(")", CS_CHARSET_UK_G1_SET, 0, 0, 1, 'A'); addLookupEntry(")", CS_CHARSET_US_G1_SET, 0, 0, 1, 'B'); addLookupEntry(")", CS_CHARSET_SPEC_G1_SET, 0, 0, 1, '0'); addLookupEntry(")", CS_CHARSET_ALT_G1_SET, 0, 0, 1, '1'); addLookupEntry(")", CS_CHARSET_ALT_SPEC_G1_SET, 0, 0, 1, '2'); addLookupEntry("[", CS_VPA, 0, 1, 1, 'd'); addLookupEntry("[", CS_CHA, 0, 1, 1, 'G'); addLookupEntry("[", CS_ECH, 0, 1, 1, 'X'); addLookupEntry("[", CS_IL, 0, 1, 1, 'L'); addLookupEntry("[", CS_DL, 0, 1, 1, 'M'); addLookupEntry("[", CS_DCH, 0, 1, 1, 'P'); addLookupEntry("[", CS_ICH, 0, 1, 1, '@'); addLookupEntry("[", CS_HPA, 0, 1, 1, '`'); addLookupEntry("[", CS_CBT, 0, 1, 1, 'Z'); addLookupEntry("[", CS_CNL, 0, 1, 1, 'E'); addLookupEntry("[", CS_CPL, 0, 1, 1, 'F'); addLookupEntry("[", CS_MARGIN_SET, 0, 2, 1, 'r'); addLookupEntry("", CS_MOVE_UP, 0, 0, 1, 'D'); addLookupEntry("", CS_MOVE_DOWN, 0, 0, 1, 'M'); addLookupEntry("", CS_MOVE_NEXT_LINE, 0, 0, 1, 'E'); addLookupEntry("#", CS_DOUBLE_HEIGHT_LINE_TOP, 0, 0, 1, '3'); addLookupEntry("#", CS_DOUBLE_HEIGHT_LINE_BOTTOM, 0, 0, 1, '4'); addLookupEntry("#", CS_SINGLE_WIDTH_LINE, 0, 0, 1, '5'); addLookupEntry("#", CS_DOUBLE_WIDTH_LINE, 0, 0, 1, '6'); addLookupEntry("#", CS_SCREEN_ALIGNMENT_DISPLAY, 0, 0, 0, '8'); addLookupEntry("[", CS_DEVICE_STATUS_REPORT, 0, -1, 1, 'n'); addLookupEntry("[", CS_DEVICE_ATTR_PRIMARY_REQUEST, 0, 1, 0, 'c'); addLookupEntry("[?", CS_DEVICE_ATTR_PRIMARY_RESPONSE, 0, -1, 0, 'c'); addLookupEntry("[>", CS_DEVICE_ATTR_SECONDARY_REQUEST, 0, 1, 0, 'c'); addLookupEntry("[>", CS_DEVICE_ATTR_SECONDARY_RESPONSE, 0, -1, 0, 'c'); addLookupEntry("[", CS_TERM_PARAM, 0, 1, 0, 'x'); addLookupEntry("", CS_TERM_RESET, 0, 0, 1, 'c'); /* VT52 Compat */ addLookupEntry("", CS_VT52_ANSI_MODE, 0, 0, 0, '<'); addLookupEntry("", CS_VT52_CURSOR_UP, 0, 0, 1, 'A'); addLookupEntry("", CS_VT52_CURSOR_DOWN, 0, 0, 1, 'B'); addLookupEntry("", CS_VT52_CURSOR_RIGHT, 0, 0, 1, 'C'); addLookupEntry("", CS_VT52_CURSOR_LEFT, 0, 0, 1, 'D'); addLookupEntry("", CS_VT52_ERASE_SCREEN, 0, 0, 0, 'J'); addLookupEntry("", CS_VT52_ERASE_LINE, 0, 0, 0, 'K'); addLookupEntry("", CS_VT52_CURSOR_HOME, 0, 0, 0, 'H'); addLookupEntry("", CS_VT52_REVERSE_LINE_FEED, 0, 0, 0, 'I'); addLookupEntry("", CS_VT52_IDENTIFY, 0, 0, 0, 'Z'); /** * Can't implement VT52 cursor position with current setup as * the row col values come after the identifying "end char". */ //addLookupEntry("", CS_VT52_CURSOR_POSITION, 0, 0, 0, 'Y'); }