/* * Screen filtering toggle action */ static Bool colorFilterToggleAll (CompDisplay * d, CompAction * action, CompActionState state, CompOption * option, int nOption) { CompScreen *s; Window xid; xid = getIntOptionNamed (option, nOption, "root", 0); s = findScreenAtDisplay(d, xid); if (s && s->fragmentProgram) colorFilterToggleScreen (s); return TRUE; }
static void colorFilterHandleEvent (XEvent *event) { FILTER_DISPLAY (&display); switch (event->type) { case KeyPress: if (isKeyPressEvent (event, &cfd->toggle_window_key)) { CompWindow *w = findWindowAtDisplay (display.activeWindow); if (w && w->screen->fragmentProgram) colorFilterToggleWindow (w); } else if (isKeyPressEvent (event, &cfd->toggle_screen_key)) { CompScreen *s = findScreenAtDisplay (event->xkey.root); if (s && s->fragmentProgram) colorFilterToggleScreen (s); } else if (isKeyPressEvent (event, &cfd->switch_filter_key)) { CompScreen *s = findScreenAtDisplay (event->xkey.root); if (s && s->fragmentProgram) colorFilterSwitchFilter (s); } break; default: break; } UNWRAP (cfd, &display, handleEvent); (*display.handleEvent) (event); WRAP (cfd, &display, handleEvent, colorFilterHandleEvent); }