Esempio n. 1
0
unsigned int stringToEdgeMask(const char *edge)
{
	unsigned int edgeMask = 0;
	char *needle;
	int i;

	for (i = 0; i < SCREEN_EDGE_NUM; i++) {
		needle = strstr(edge, edgeToString(i));
		if (needle) {
			if (needle != edge && isalnum(*(needle - 1)))
				continue;

			needle += strlen(edgeToString(i));

			if (*needle && isalnum(*needle))
				continue;

			edgeMask |= 1 << i;
		}
	}

	return edgeMask;
}
Esempio n. 2
0
char *edgeMaskToString(unsigned int edgeMask)
{
	char *edge = NULL;
	int i;

	for (i = 0; i < SCREEN_EDGE_NUM; i++) {
		if (edgeMask & (1 << i)) {
			if (edge)
				edge = stringAppend(edge, " | ");

			edge = stringAppend(edge, edgeToString(i));
		}
	}

	if (!edge)
		return strdup("");

	return edge;
}
Esempio n. 3
0
static void
initEdgeValue (CompDisplay     *d,
	       CompOptionValue *v,
	       CompActionState state,
	       xmlDocPtr       doc,
	       xmlNodePtr      node)
{
    xmlNodePtr child;
    xmlChar    *value;

    memset (&v->action, 0, sizeof (v->action));

    v->action.state = state | CompActionStateInitEdge;

    if (!doc)
	return;

    for (child = node->xmlChildrenNode; child; child = child->next)
    {
	value = xmlGetProp (child, BAD_CAST "name");
	if (value)
	{
	    int i;

	    for (i = 0; i < SCREEN_EDGE_NUM; i++)
		if (strcasecmp ((char *) value, edgeToString (i)) == 0)
		    v->action.edgeMask |= (1 << i);

	    xmlFree (value);
	}
    }

    if (state & CompActionStateAutoGrab)
    {
	CompScreen *s;

	for (s = d->screens; s; s = s->next)
	    addScreenAction (s, &v->action);
    }
}