static int property_handle_net_wm_opacity(uint8_t state, xcb_window_t window) { drawin_t *drawin = drawin_getbywin(window); if(drawin) { luaA_object_push(globalconf.L, drawin); window_set_opacity(globalconf.L, -1, xwindow_get_opacity(drawin->window)); lua_pop(globalconf.L, -1); } else { client_t *c = client_getbywin(window); if(c) { luaA_object_push(globalconf.L, c); window_set_opacity(globalconf.L, -1, xwindow_get_opacity(c->window)); lua_pop(globalconf.L, 1); } } return 0; }
/** Set a window opacity. * \param L The Lua VM state. * \param window The window object. * \return The number of elements pushed on stack. */ static int luaA_window_set_opacity(lua_State *L, window_t *window) { if(lua_isnil(L, -1)) window_set_opacity(L, -3, -1); else { double d = luaL_checknumber(L, -1); if(d >= 0 && d <= 1) window_set_opacity(L, -3, d); } return 0; }