lua: userdata_new is now macro
Signed-off-by: Julien Danjou <julien@danjou.info>
This commit is contained in:
parent
6cfa589f03
commit
92f369e3aa
44
client.c
44
client.c
|
@ -43,6 +43,16 @@
|
|||
|
||||
extern awesome_t globalconf;
|
||||
|
||||
int
|
||||
luaA_client_userdata_new(lua_State *L, client_t *p)
|
||||
{
|
||||
client_t **pp = lua_newuserdata(L, sizeof(client_t *));
|
||||
*pp = p;
|
||||
return luaA_settype(L, "client");
|
||||
}
|
||||
|
||||
DO_LUA_EQ(client_t, client, "client")
|
||||
|
||||
/** Load windows properties, restoring client's tag
|
||||
* and floating state before awesome was restarted if any.
|
||||
* \todo This may bug if number of tags is != than before.
|
||||
|
@ -187,7 +197,7 @@ client_updatetitle(client_t *c)
|
|||
a_iso2utf8(name, &c->name);
|
||||
|
||||
/* call hook */
|
||||
luaA_client_userdata_new(c);
|
||||
luaA_client_userdata_new(globalconf.L, c);
|
||||
luaA_dofunction(globalconf.L, globalconf.hooks.titleupdate, 1);
|
||||
|
||||
widget_invalidate_cache(c->screen, WIDGET_CACHE_CLIENTS);
|
||||
|
@ -200,7 +210,7 @@ static void
|
|||
client_unfocus(client_t *c)
|
||||
{
|
||||
/* Call hook */
|
||||
luaA_client_userdata_new(globalconf.focus->client);
|
||||
luaA_client_userdata_new(globalconf.L, globalconf.focus->client);
|
||||
luaA_dofunction(globalconf.L, globalconf.hooks.unfocus, 1);
|
||||
|
||||
focus_client_push(NULL);
|
||||
|
@ -256,7 +266,7 @@ client_focus(client_t *c, int screen)
|
|||
globalconf.screens[c->screen].need_arrange = true;
|
||||
|
||||
/* execute hook */
|
||||
luaA_client_userdata_new(globalconf.focus->client);
|
||||
luaA_client_userdata_new(globalconf.L, globalconf.focus->client);
|
||||
luaA_dofunction(globalconf.L, globalconf.hooks.focus, 1);
|
||||
}
|
||||
else
|
||||
|
@ -403,7 +413,7 @@ client_manage(xcb_window_t w, xcb_get_geometry_reply_t *wgeom, int screen)
|
|||
widget_invalidate_cache(c->screen, WIDGET_CACHE_CLIENTS);
|
||||
|
||||
/* call hook */
|
||||
luaA_client_userdata_new(c);
|
||||
luaA_client_userdata_new(globalconf.L, c);
|
||||
luaA_dofunction(globalconf.L, globalconf.hooks.manage, 1);
|
||||
}
|
||||
|
||||
|
@ -628,7 +638,7 @@ client_unmanage(client_t *c)
|
|||
tag_t *tag;
|
||||
|
||||
/* call hook */
|
||||
luaA_client_userdata_new(c);
|
||||
luaA_client_userdata_new(globalconf.L, c);
|
||||
luaA_dofunction(globalconf.L, globalconf.hooks.unmanage, 1);
|
||||
|
||||
/* The server grab construct avoids race conditions. */
|
||||
|
@ -680,7 +690,7 @@ client_updatewmhints(client_t *c)
|
|||
if((c->isurgent = (wm_hints_flags & XCB_WM_X_URGENCY_HINT)))
|
||||
{
|
||||
/* execute hook */
|
||||
luaA_client_userdata_new(c);
|
||||
luaA_client_userdata_new(globalconf.L, c);
|
||||
luaA_dofunction(globalconf.L, globalconf.hooks.urgent, 1);
|
||||
|
||||
widget_invalidate_cache(c->screen, WIDGET_CACHE_CLIENTS);
|
||||
|
@ -827,7 +837,7 @@ luaA_client_get(lua_State *L)
|
|||
|
||||
for(c = globalconf.clients; c; c = c->next)
|
||||
{
|
||||
luaA_client_userdata_new(c);
|
||||
luaA_client_userdata_new(globalconf.L, c);
|
||||
lua_rawseti(L, -2, i++);
|
||||
}
|
||||
|
||||
|
@ -886,7 +896,7 @@ luaA_client_visible_get(lua_State *L)
|
|||
for(c = globalconf.clients; c; c = c->next)
|
||||
if(!c->skip && !c->ishidden && client_isvisible(c, screen))
|
||||
{
|
||||
luaA_client_userdata_new(c);
|
||||
luaA_client_userdata_new(globalconf.L, c);
|
||||
lua_rawseti(L, -2, i++);
|
||||
}
|
||||
|
||||
|
@ -902,7 +912,7 @@ static int
|
|||
luaA_client_focus_get(lua_State *L __attribute__ ((unused)))
|
||||
{
|
||||
if(globalconf.focus->client)
|
||||
return luaA_client_userdata_new(globalconf.focus->client);
|
||||
return luaA_client_userdata_new(globalconf.L, globalconf.focus->client);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1328,7 +1338,7 @@ luaA_client_titlebar_get(lua_State *L)
|
|||
client_t **c = luaA_checkudata(L, 1, "client");
|
||||
|
||||
if((*c)->titlebar)
|
||||
return luaA_titlebar_userdata_new((*c)->titlebar);
|
||||
return luaA_titlebar_userdata_new(globalconf.L, (*c)->titlebar);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -1392,20 +1402,6 @@ luaA_client_ishidden(lua_State *L)
|
|||
return 1;
|
||||
}
|
||||
|
||||
/** Create and push a client userdata.
|
||||
* \param c The client.
|
||||
* \return The number of pushed value.
|
||||
*/
|
||||
int
|
||||
luaA_client_userdata_new(client_t *c)
|
||||
{
|
||||
client_t **lc = lua_newuserdata(globalconf.L, sizeof(client_t *));
|
||||
*lc = c;
|
||||
return luaA_settype(globalconf.L, "client");
|
||||
}
|
||||
|
||||
DO_LUA_EQ(client_t, client, "client")
|
||||
|
||||
const struct luaL_reg awesome_client_methods[] =
|
||||
{
|
||||
{ "get", luaA_client_get },
|
||||
|
|
2
client.h
2
client.h
|
@ -44,7 +44,7 @@ void client_setfloating(client_t *, bool, layer_t);
|
|||
char * client_markup_parse(client_t *, const char *, ssize_t);
|
||||
void client_setborder(client_t *, int);
|
||||
|
||||
int luaA_client_userdata_new(client_t *);
|
||||
int luaA_client_userdata_new(lua_State *, client_t *);
|
||||
|
||||
DO_SLIST(client_t, client, p_delete)
|
||||
|
||||
|
|
4
event.c
4
event.c
|
@ -61,7 +61,7 @@ event_handle_mouse_button_press(client_t *c,
|
|||
{
|
||||
if(c)
|
||||
{
|
||||
luaA_client_userdata_new(c);
|
||||
luaA_client_userdata_new(globalconf.L, c);
|
||||
luaA_dofunction(globalconf.L, b->fct, 1);
|
||||
}
|
||||
else
|
||||
|
@ -335,7 +335,7 @@ event_handle_enternotify(void *data __attribute__ ((unused)),
|
|||
globalconf.pointer_x = ev->root_x;
|
||||
globalconf.pointer_y = ev->root_y;
|
||||
|
||||
luaA_client_userdata_new(c);
|
||||
luaA_client_userdata_new(globalconf.L, c);
|
||||
luaA_dofunction(globalconf.L, globalconf.hooks.mouseover, 1);
|
||||
}
|
||||
else if((emwin = xembed_getbywin(globalconf.embedded, ev->event)))
|
||||
|
|
2
ewmh.c
2
ewmh.c
|
@ -470,7 +470,7 @@ ewmh_process_state_atom(client_t *c, xcb_atom_t state, int set)
|
|||
{
|
||||
c->isurgent = true;
|
||||
/* execute hook */
|
||||
luaA_client_userdata_new(c);
|
||||
luaA_client_userdata_new(globalconf.L, c);
|
||||
luaA_dofunction(globalconf.L, globalconf.hooks.urgent, 1);
|
||||
widget_invalidate_cache(c->screen, WIDGET_CACHE_CLIENTS);
|
||||
}
|
||||
|
|
12
keybinding.c
12
keybinding.c
|
@ -28,6 +28,9 @@
|
|||
|
||||
extern awesome_t globalconf;
|
||||
|
||||
DO_LUA_NEW(static, keybinding_t, keybinding, "keybinding", keybinding_ref)
|
||||
DO_LUA_GC(keybinding_t, keybinding, "keybinding", keybinding_unref)
|
||||
|
||||
static void
|
||||
__luaA_keystore(keybinding_t *key, const char *str)
|
||||
{
|
||||
|
@ -59,7 +62,7 @@ static int
|
|||
luaA_keybinding_new(lua_State *L)
|
||||
{
|
||||
size_t i, len;
|
||||
keybinding_t *k, **keyb;
|
||||
keybinding_t *k;
|
||||
const char *key;
|
||||
|
||||
/* arg 1 is key mod table */
|
||||
|
@ -81,10 +84,7 @@ luaA_keybinding_new(lua_State *L)
|
|||
k->mod |= xutil_keymask_fromstr(luaL_checkstring(L, -1));
|
||||
}
|
||||
|
||||
keyb = lua_newuserdata(globalconf.L, sizeof(client_t *));
|
||||
*keyb = k;
|
||||
keybinding_ref(keyb);
|
||||
return luaA_settype(L, "keybinding");
|
||||
return luaA_keybinding_userdata_new(L, k);
|
||||
}
|
||||
|
||||
/** Add a global key binding. This key binding will always be available.
|
||||
|
@ -132,8 +132,6 @@ luaA_keybinding_remove(lua_State *L)
|
|||
return 0;
|
||||
}
|
||||
|
||||
DO_LUA_GC(keybinding_t, keybinding, "keybinding", keybinding_unref)
|
||||
|
||||
/** Convert a keybinding to a printable string.
|
||||
* \return A string.
|
||||
*/
|
||||
|
|
6
lua.c
6
lua.c
|
@ -434,15 +434,15 @@ luaA_colors_set(lua_State *L)
|
|||
* \param type Its type.
|
||||
*/
|
||||
void
|
||||
luaA_pushpointer(void *p, awesome_type_t type)
|
||||
luaA_pushpointer(lua_State *L, void *p, awesome_type_t type)
|
||||
{
|
||||
switch(type)
|
||||
{
|
||||
case AWESOME_TYPE_STATUSBAR:
|
||||
luaA_statusbar_userdata_new(p);
|
||||
luaA_statusbar_userdata_new(L, p);
|
||||
break;
|
||||
case AWESOME_TYPE_TITLEBAR:
|
||||
luaA_titlebar_userdata_new(p);
|
||||
luaA_titlebar_userdata_new(L, p);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
12
lua.h
12
lua.h
|
@ -38,6 +38,16 @@ typedef enum
|
|||
/** Type for Lua function */
|
||||
typedef int luaA_function;
|
||||
|
||||
#define DO_LUA_NEW(decl, type, prefix, lua_type, type_ref) \
|
||||
decl int \
|
||||
luaA_##prefix##_userdata_new(lua_State *L, type *p) \
|
||||
{ \
|
||||
type **pp = lua_newuserdata(L, sizeof(type *)); \
|
||||
*pp = p; \
|
||||
type_ref(pp); \
|
||||
return luaA_settype(L, lua_type); \
|
||||
}
|
||||
|
||||
#define DO_LUA_GC(type, prefix, lua_type, type_unref) \
|
||||
static int \
|
||||
luaA_##prefix##_gc(lua_State *L) \
|
||||
|
@ -171,7 +181,7 @@ luaA_name_init(lua_State *L)
|
|||
|
||||
void luaA_init(void);
|
||||
bool luaA_parserc(const char *);
|
||||
void luaA_pushpointer(void *, awesome_type_t);
|
||||
void luaA_pushpointer(lua_State *, void *, awesome_type_t);
|
||||
void luaA_cs_init(void);
|
||||
void luaA_cs_cleanup(void);
|
||||
void luaA_on_timer(EV_P_ ev_timer *w, int revents);
|
||||
|
|
21
mouse.c
21
mouse.c
|
@ -41,6 +41,10 @@
|
|||
|
||||
extern awesome_t globalconf;
|
||||
|
||||
DO_LUA_NEW(static, button_t, mouse, "mouse", button_ref)
|
||||
DO_LUA_GC(button_t, mouse, "mouse", button_unref)
|
||||
DO_LUA_EQ(button_t, mouse, "mouse")
|
||||
|
||||
/** Define corners. */
|
||||
typedef enum
|
||||
{
|
||||
|
@ -1008,18 +1012,6 @@ luaA_mouse_screen_get(lua_State *L)
|
|||
return 1;
|
||||
}
|
||||
|
||||
/** Create a new mouse userdata.
|
||||
* \param bt The mouse button binding.
|
||||
*/
|
||||
static int
|
||||
luaA_mouse_userdata_new(button_t *bt)
|
||||
{
|
||||
button_t **b = lua_newuserdata(globalconf.L, sizeof(button_t *));
|
||||
*b = bt;
|
||||
button_ref(b);
|
||||
return luaA_settype(globalconf.L, "mouse");
|
||||
}
|
||||
|
||||
/** Create a new mouse button bindings.
|
||||
* \param L The Lua VM state.
|
||||
* \luastack
|
||||
|
@ -1051,12 +1043,9 @@ luaA_mouse_new(lua_State *L)
|
|||
button->mod |= xutil_keymask_fromstr(luaL_checkstring(L, -1));
|
||||
}
|
||||
|
||||
return luaA_mouse_userdata_new(button);
|
||||
return luaA_mouse_userdata_new(L, button);
|
||||
}
|
||||
|
||||
DO_LUA_GC(button_t, mouse, "mouse", button_unref)
|
||||
DO_LUA_EQ(button_t, mouse, "mouse")
|
||||
|
||||
const struct luaL_reg awesome_mouse_methods[] =
|
||||
{
|
||||
{ "new", luaA_mouse_new },
|
||||
|
|
23
statusbar.c
23
statusbar.c
|
@ -31,6 +31,10 @@
|
|||
|
||||
extern awesome_t globalconf;
|
||||
|
||||
DO_LUA_NEW(extern, statusbar_t, statusbar, "statusbar", statusbar_ref)
|
||||
DO_LUA_GC(statusbar_t, statusbar, "statusbar", statusbar_unref)
|
||||
DO_LUA_EQ(statusbar_t, statusbar, "statusbar")
|
||||
|
||||
/** Draw a statusbar.
|
||||
* \param statusbar The statusbar to draw.
|
||||
*/
|
||||
|
@ -523,19 +527,7 @@ luaA_statusbar_new(lua_State *L)
|
|||
|
||||
sb->position = position_get_from_str(luaA_getopt_string(L, 1, "position", "top"));
|
||||
|
||||
return luaA_statusbar_userdata_new(sb);
|
||||
}
|
||||
|
||||
/** Create a new statusbar userdata.
|
||||
* \param t The statusbar.
|
||||
*/
|
||||
int
|
||||
luaA_statusbar_userdata_new(statusbar_t *t)
|
||||
{
|
||||
statusbar_t **sb = lua_newuserdata(globalconf.L, sizeof(statusbar_t *));
|
||||
*sb = t;
|
||||
statusbar_ref(sb);
|
||||
return luaA_settype(globalconf.L, "statusbar");
|
||||
return luaA_statusbar_userdata_new(L, sb);
|
||||
}
|
||||
|
||||
/** Get all widget from a statusbar.
|
||||
|
@ -556,7 +548,7 @@ luaA_statusbar_widget_get(lua_State *L)
|
|||
|
||||
for(widget = (*sb)->widgets; widget; widget = widget->next)
|
||||
{
|
||||
luaA_widget_userdata_new(widget->widget);
|
||||
luaA_widget_userdata_new(L, widget->widget);
|
||||
/* ref again for the list */
|
||||
widget_ref(&widget->widget);
|
||||
lua_rawseti(L, -2, i++);
|
||||
|
@ -565,9 +557,6 @@ luaA_statusbar_widget_get(lua_State *L)
|
|||
return 1;
|
||||
}
|
||||
|
||||
DO_LUA_GC(statusbar_t, statusbar, "statusbar", statusbar_unref)
|
||||
DO_LUA_EQ(statusbar_t, statusbar, "statusbar")
|
||||
|
||||
const struct luaL_reg awesome_statusbar_methods[] =
|
||||
{
|
||||
{ "new", luaA_statusbar_new },
|
||||
|
|
|
@ -37,7 +37,7 @@ statusbar_delete(statusbar_t **statusbar)
|
|||
|
||||
void statusbar_refresh(void);
|
||||
|
||||
int luaA_statusbar_userdata_new(statusbar_t *);
|
||||
int luaA_statusbar_userdata_new(lua_State *, statusbar_t *);
|
||||
|
||||
DO_RCNT(statusbar_t, statusbar, statusbar_delete)
|
||||
DO_SLIST(statusbar_t, statusbar, statusbar_delete)
|
||||
|
|
26
tag.c
26
tag.c
|
@ -38,6 +38,10 @@
|
|||
|
||||
extern awesome_t globalconf;
|
||||
|
||||
DO_LUA_NEW(extern, tag_t, tag, "tag", tag_ref)
|
||||
DO_LUA_GC(tag_t, tag, "tag", tag_unref)
|
||||
DO_LUA_EQ(tag_t, tag, "tag")
|
||||
|
||||
/** View or unview a tag.
|
||||
* \param tag the tag
|
||||
* \param view set visible or not
|
||||
|
@ -296,7 +300,7 @@ luaA_tag_get(lua_State *L)
|
|||
|
||||
for(tag = globalconf.screens[screen].tags; tag; tag = tag->next)
|
||||
{
|
||||
luaA_tag_userdata_new(tag);
|
||||
luaA_tag_userdata_new(L, tag);
|
||||
lua_setfield(L, -2, tag->name);
|
||||
}
|
||||
|
||||
|
@ -323,7 +327,7 @@ luaA_tag_geti(lua_State *L)
|
|||
|
||||
for(tag = globalconf.screens[screen].tags; tag; tag = tag->next)
|
||||
{
|
||||
luaA_tag_userdata_new(tag);
|
||||
luaA_tag_userdata_new(L, tag);
|
||||
lua_rawseti(L, -2, i++);
|
||||
}
|
||||
|
||||
|
@ -361,7 +365,7 @@ luaA_tag_new(lua_State *L)
|
|||
layout,
|
||||
mwfact, nmaster, ncol);
|
||||
|
||||
return luaA_tag_userdata_new(tag);
|
||||
return luaA_tag_userdata_new(L, tag);
|
||||
}
|
||||
|
||||
/** Add or remove a tag from the current view.
|
||||
|
@ -589,22 +593,6 @@ luaA_tag_layout_set(lua_State *L)
|
|||
|
||||
}
|
||||
|
||||
/** Create a new userdata from a tag.
|
||||
* \param t The tag.
|
||||
* \return The luaA_settype returnn value.
|
||||
*/
|
||||
int
|
||||
luaA_tag_userdata_new(tag_t *t)
|
||||
{
|
||||
tag_t **lt = lua_newuserdata(globalconf.L, sizeof(tag_t *));
|
||||
*lt = t;
|
||||
tag_ref(lt);
|
||||
return luaA_settype(globalconf.L, "tag");
|
||||
}
|
||||
|
||||
DO_LUA_GC(tag_t, tag, "tag", tag_unref)
|
||||
DO_LUA_EQ(tag_t, tag, "tag")
|
||||
|
||||
const struct luaL_reg awesome_tag_methods[] =
|
||||
{
|
||||
{ "new", luaA_tag_new },
|
||||
|
|
2
tag.h
2
tag.h
|
@ -45,7 +45,7 @@ bool is_client_tagged(client_t *, tag_t *);
|
|||
void tag_client_with_current_selected(client_t *);
|
||||
void tag_view_only_byindex(int, int);
|
||||
void tag_append_to_screen(tag_t *, int);
|
||||
int luaA_tag_userdata_new(tag_t *);
|
||||
int luaA_tag_userdata_new(lua_State *, tag_t *);
|
||||
|
||||
DO_RCNT(tag_t, tag, tag_delete)
|
||||
DO_SLIST(tag_t, tag, tag_delete)
|
||||
|
|
26
titlebar.c
26
titlebar.c
|
@ -32,6 +32,10 @@
|
|||
|
||||
extern awesome_t globalconf;
|
||||
|
||||
DO_LUA_NEW(extern, titlebar_t, titlebar, "titlebar", titlebar_ref)
|
||||
DO_LUA_GC(titlebar_t, titlebar, "titlebar", titlebar_unref)
|
||||
DO_LUA_EQ(titlebar_t, titlebar, "titlebar")
|
||||
|
||||
/** Get a client by its titlebar.
|
||||
* \param titlebar The titlebar.
|
||||
* \return A client.
|
||||
|
@ -327,7 +331,7 @@ luaA_titlebar_new(lua_State *L)
|
|||
|
||||
tb->border.width = luaA_getopt_number(L, 1, "border_width", 0);
|
||||
|
||||
return luaA_titlebar_userdata_new(tb);
|
||||
return luaA_titlebar_userdata_new(globalconf.L, tb);
|
||||
}
|
||||
|
||||
/** Add a widget to a titlebar.
|
||||
|
@ -382,7 +386,7 @@ luaA_titlebar_widget_get(lua_State *L)
|
|||
|
||||
for(witer = (*tb)->widgets; witer; witer = witer->next)
|
||||
{
|
||||
luaA_widget_userdata_new(witer->widget);
|
||||
luaA_widget_userdata_new(L, witer->widget);
|
||||
lua_setfield(L, -2, witer->widget->name);
|
||||
}
|
||||
|
||||
|
@ -404,7 +408,7 @@ luaA_titlebar_client_get(lua_State *L)
|
|||
client_t *c;
|
||||
|
||||
if((c = client_getbytitlebar(*titlebar)))
|
||||
return luaA_client_userdata_new(c);
|
||||
return luaA_client_userdata_new(L, c);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -481,19 +485,6 @@ luaA_titlebar_border_set(lua_State *L)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/** Create a new titlebar userdata.
|
||||
* \param t The titlebar.
|
||||
* \return The number of value pushed.
|
||||
*/
|
||||
int
|
||||
luaA_titlebar_userdata_new(titlebar_t *t)
|
||||
{
|
||||
titlebar_t **tb = lua_newuserdata(globalconf.L, sizeof(titlebar_t *));
|
||||
*tb = t;
|
||||
titlebar_ref(tb);
|
||||
return luaA_settype(globalconf.L, "titlebar");
|
||||
}
|
||||
|
||||
/** Convert a titlebar to a printable string.
|
||||
* \param L The Lua VM state.
|
||||
* \return The number of value pushed.
|
||||
|
@ -510,9 +501,6 @@ luaA_titlebar_tostring(lua_State *L)
|
|||
return 1;
|
||||
}
|
||||
|
||||
DO_LUA_GC(titlebar_t, titlebar, "titlebar", titlebar_unref)
|
||||
DO_LUA_EQ(titlebar_t, titlebar, "titlebar")
|
||||
|
||||
const struct luaL_reg awesome_titlebar_methods[] =
|
||||
{
|
||||
{ "new", luaA_titlebar_new },
|
||||
|
|
|
@ -30,7 +30,7 @@ void titlebar_geometry_compute(client_t *, area_t, area_t *);
|
|||
void titlebar_draw(client_t *);
|
||||
void titlebar_init(client_t *);
|
||||
|
||||
int luaA_titlebar_userdata_new(titlebar_t *);
|
||||
int luaA_titlebar_userdata_new(lua_State *, titlebar_t *);
|
||||
|
||||
/** Add the titlebar geometry to a geometry.
|
||||
* \param t The titlebar
|
||||
|
|
24
widget.c
24
widget.c
|
@ -34,6 +34,10 @@
|
|||
|
||||
extern awesome_t globalconf;
|
||||
|
||||
DO_LUA_NEW(extern, widget_t, widget, "widget", widget_ref)
|
||||
DO_LUA_GC(widget_t, widget, "widget", widget_unref)
|
||||
DO_LUA_EQ(widget_t, widget, "widget")
|
||||
|
||||
#include "widgetgen.h"
|
||||
|
||||
/** Compute offset for drawing the first pixel of a widget.
|
||||
|
@ -94,7 +98,7 @@ widget_common_button_press(widget_node_t *w,
|
|||
for(b = w->widget->buttons; b; b = b->next)
|
||||
if(ev->detail == b->button && CLEANMASK(ev->state) == b->mod && b->fct)
|
||||
{
|
||||
luaA_pushpointer(p, type);
|
||||
luaA_pushpointer(globalconf.L, p, type);
|
||||
luaA_dofunction(globalconf.L, b->fct, 1);
|
||||
}
|
||||
}
|
||||
|
@ -291,19 +295,6 @@ widget_invalidate_bywidget(widget_t *widget)
|
|||
titlebar_draw(c);
|
||||
}
|
||||
|
||||
/** Create a new widget userdata. The object is pushed on the stack.
|
||||
* \param widget The widget.
|
||||
* \return Return luaA_settype() return value.
|
||||
*/
|
||||
int
|
||||
luaA_widget_userdata_new(widget_t *widget)
|
||||
{
|
||||
widget_t **w = lua_newuserdata(globalconf.L, sizeof(widget_t *));
|
||||
*w = widget;
|
||||
widget_ref(w);
|
||||
return luaA_settype(globalconf.L, "widget");
|
||||
}
|
||||
|
||||
/** Create a new widget.
|
||||
* \param L The Lua VM state.
|
||||
*
|
||||
|
@ -337,7 +328,7 @@ luaA_widget_new(lua_State *L)
|
|||
|
||||
w->name = luaA_name_init(L);
|
||||
|
||||
return luaA_widget_userdata_new(w);
|
||||
return luaA_widget_userdata_new(L, w);
|
||||
}
|
||||
|
||||
/** Add a mouse button bindings to a widget.
|
||||
|
@ -517,9 +508,6 @@ luaA_widget_visible_get(lua_State *L)
|
|||
return 1;
|
||||
}
|
||||
|
||||
DO_LUA_GC(widget_t, widget, "widget", widget_unref)
|
||||
DO_LUA_EQ(widget_t, widget, "widget")
|
||||
|
||||
const struct luaL_reg awesome_widget_methods[] =
|
||||
{
|
||||
{ "new", luaA_widget_new },
|
||||
|
|
2
widget.h
2
widget.h
|
@ -37,7 +37,7 @@ widget_t * widget_getbyname(const char *);
|
|||
void widget_tell_managestatus(widget_t *, widget_tell_status_t, const char *);
|
||||
void widget_render(widget_node_t *, draw_context_t *, xcb_gcontext_t, xcb_drawable_t, int, position_t, int, int, void *);
|
||||
|
||||
int luaA_widget_userdata_new(widget_t *);
|
||||
int luaA_widget_userdata_new(lua_State *, widget_t *);
|
||||
|
||||
widget_constructor_t taglist_new;
|
||||
widget_constructor_t textbox_new;
|
||||
|
|
|
@ -231,8 +231,8 @@ taglist_button_press(widget_node_t *w,
|
|||
&& ev->event_x < AREA_RIGHT(*area)
|
||||
&& (data->show_empty || tag->selected || tag_isoccupied(tag)) )
|
||||
{
|
||||
luaA_pushpointer(object, type);
|
||||
luaA_tag_userdata_new(tag);
|
||||
luaA_pushpointer(globalconf.L, object, type);
|
||||
luaA_tag_userdata_new(globalconf.L, tag);
|
||||
luaA_dofunction(globalconf.L, b->fct, 2);
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -228,8 +228,8 @@ tasklist_button_press(widget_node_t *w,
|
|||
for(b = w->widget->buttons; b; b = b->next)
|
||||
if(ev->detail == b->button && CLEANMASK(ev->state) == b->mod && b->fct)
|
||||
{
|
||||
luaA_pushpointer(object, type);
|
||||
luaA_client_userdata_new(c);
|
||||
luaA_pushpointer(globalconf.L, object, type);
|
||||
luaA_client_userdata_new(globalconf.L, c);
|
||||
luaA_dofunction(globalconf.L, b->fct, 2);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue