Ejemplo n.º 1
0
static void
finiDisplayOptionValue (CompDisplay	*d,
			CompOptionValue *v,
			CompOptionType  type)
{
    CompScreen *s;
    int	       i;

    switch (type) {
    case CompOptionTypeAction:
    case CompOptionTypeKey:
    case CompOptionTypeButton:
    case CompOptionTypeEdge:
    case CompOptionTypeBell:
	if (v->action.state & CompActionStateAutoGrab)
	    for (s = d->screens; s; s = s->next)
		removeScreenAction (s, &v->action);
	break;
    case CompOptionTypeList:
	for (i = 0; i < v->list.nValue; i++)
	    finiDisplayOptionValue (d, &v->list.value[i], v->list.type);
    default:
	break;
    }
}
Ejemplo n.º 2
0
static void
finiScreenOptionValue (CompScreen      *s,
		       CompOptionValue *v,
		       CompOptionType  type)
{
    int	i;

    switch (type) {
    case CompOptionTypeAction:
    case CompOptionTypeKey:
    case CompOptionTypeButton:
    case CompOptionTypeEdge:
    case CompOptionTypeBell:
	if (v->action.state & CompActionStateAutoGrab)
	    removeScreenAction (s, &v->action);
	break;
    case CompOptionTypeList:
	for (i = 0; i < v->list.nValue; i++)
	    finiScreenOptionValue (s, &v->list.value[i], v->list.type);
    default:
	break;
    }
}
Ejemplo n.º 3
0
static void
scaleaddonHandleCompizEvent(CompDisplay * d,
			    const char *pluginName,
			    const char *eventName,
			    CompOption * option, int nOption)
{
	ADDON_DISPLAY(d);

	UNWRAP(ad, d, handleCompizEvent);
	(*d->handleCompizEvent) (d, pluginName, eventName, option, nOption);
	WRAP(ad, d, handleCompizEvent, scaleaddonHandleCompizEvent);

	if ((strcmp(pluginName, "scale") == 0) &&
	    (strcmp(eventName, "activate") == 0)) {
		Window xid;
		Bool activated;
		CompScreen *s;

		xid = getIntOptionNamed(option, nOption, "root", 0);
		activated =
		    getBoolOptionNamed(option, nOption, "active", FALSE);
		s = findScreenAtDisplay(d, xid);

		if (s) {
			if (activated) {
				addScreenAction(s, scaleaddonGetCloseKey(d));
				addScreenAction(s, scaleaddonGetZoomKey(d));
				addScreenAction(s, scaleaddonGetPullKey(d));
				addScreenAction(s, scaleaddonGetCloseButton(d));
				addScreenAction(s, scaleaddonGetZoomButton(d));
				addScreenAction(s, scaleaddonGetPullButton(d));

				/* TODO: or better
				   ad->highlightedWindow     = sd->selectedWindow;
				   here? do we want to show up the highlight without
				   mouse move initially? */

				ad->highlightedWindow = None;
				ad->lastHighlightedWindow = None;
				scaleaddonCheckWindowHighlight(s);
			} else {
				CompWindow *w;

				for (w = s->windows; w; w = w->next) {
					ADDON_WINDOW(w);
					aw->rescaled = FALSE;
				}

				removeScreenAction(s, scaleaddonGetCloseKey(d));
				removeScreenAction(s, scaleaddonGetZoomKey(d));
				removeScreenAction(s, scaleaddonGetPullKey(d));
				removeScreenAction(s,
						   scaleaddonGetCloseButton(d));
				removeScreenAction(s,
						   scaleaddonGetZoomButton(d));
				removeScreenAction(s,
						   scaleaddonGetPullButton(d));
			}
		}
	}
}