Exemplo n.º 1
0
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");
}
Exemplo n.º 2
0
/**
 * 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');
}