From 8646d06fabfac12e16a59fa8c448c13d81f62efd Mon Sep 17 00:00:00 2001 From: Julien Danjou Date: Tue, 1 Jul 2008 22:08:27 +0200 Subject: [PATCH] client: merge coords function into index Signed-off-by: Julien Danjou --- awesomerc.lua.in | 4 +-- client.c | 73 ++++++++++++++----------------------------- common/tokenize.gperf | 1 + lib/awful.lua | 4 +-- 4 files changed, 29 insertions(+), 53 deletions(-) diff --git a/awesomerc.lua.in b/awesomerc.lua.in index a01a5973..35c1f375 100644 --- a/awesomerc.lua.in +++ b/awesomerc.lua.in @@ -308,7 +308,7 @@ end -- Hook function to execute when the mouse is over a client. function hook_mouseover(c) -- Sloppy focus, but disabled for magnifier layout - if awful.layout.get(c:screen_get()) ~= "magnifier" then + if awful.layout.get(c.screen) ~= "magnifier" then c:focus_set() end end @@ -341,7 +341,7 @@ function hook_arrange(screen) --[[ local sel = client.focus_get() if sel then - local c_c = sel:coords_get() + local c_c = sel.coords local m_c = mouse.coords_get() if m_c.x < c_c.x or m_c.x >= c_c.x + c_c.width or diff --git a/client.c b/client.c index 31f25d40..6578d72a 100644 --- a/client.c +++ b/client.c @@ -1011,53 +1011,6 @@ luaA_client_istagged(lua_State *L) return 1; } -/** Get the client coordinates on the display. - * \param L The Lua VM state. - * \luastack - * \lvalue A client. - * \lreturn A table with keys `width', `height', `x' and `y'. - */ -static int -luaA_client_coords_get(lua_State *L) -{ - client_t **c = luaA_checkudata(L, 1, "client"); - lua_newtable(L); - lua_pushnumber(L, (*c)->geometry.width); - lua_setfield(L, -2, "width"); - lua_pushnumber(L, (*c)->geometry.height); - lua_setfield(L, -2, "height"); - lua_pushnumber(L, (*c)->geometry.x); - lua_setfield(L, -2, "x"); - lua_pushnumber(L, (*c)->geometry.y); - lua_setfield(L, -2, "y"); - return 1; -} - -/** Set client coordinates. This only operates if the client is floating. - * \param L The Lua VM state. - * \luastack - * \lvalue A client. - * \lparam A table with keys: x, y, width, height. - */ -static int -luaA_client_coords_set(lua_State *L) -{ - client_t **c = luaA_checkudata(L, 1, "client"); - area_t geometry; - - if((*c)->isfloating || layout_get_current((*c)->screen) == layout_floating) - { - luaA_checktable(L, 2); - geometry.x = luaA_getopt_number(L, 2, "x", (*c)->geometry.x); - geometry.y = luaA_getopt_number(L, 2, "y", (*c)->geometry.y); - geometry.width = luaA_getopt_number(L, 2, "width", (*c)->geometry.width); - geometry.height = luaA_getopt_number(L, 2, "height", (*c)->geometry.height); - client_resize(*c, geometry, false); - } - - return 0; -} - /** Kill a client. * \param L The Lua VM state. * @@ -1294,6 +1247,18 @@ luaA_client_newindex(lua_State *L) xcb_change_window_attributes(globalconf.connection, (*c)->win, XCB_CW_BORDER_PIXEL, &color.pixel); } break; + case A_TK_COORDS: + if((*c)->isfloating || layout_get_current((*c)->screen) == layout_floating) + { + area_t geometry; + luaA_checktable(L, 3); + geometry.x = luaA_getopt_number(L, 3, "x", (*c)->geometry.x); + geometry.y = luaA_getopt_number(L, 3, "y", (*c)->geometry.y); + geometry.width = luaA_getopt_number(L, 3, "width", (*c)->geometry.width); + geometry.height = luaA_getopt_number(L, 3, "height", (*c)->geometry.height); + client_resize(*c, geometry, false); + } + break; default: return 0; } @@ -1355,6 +1320,18 @@ luaA_client_index(lua_State *L) break; case A_TK_BORDER_COLOR: lua_pushstring(L, (*c)->border_color.name); + break; + case A_TK_COORDS: + lua_newtable(L); + lua_pushnumber(L, (*c)->geometry.width); + lua_setfield(L, -2, "width"); + lua_pushnumber(L, (*c)->geometry.height); + lua_setfield(L, -2, "height"); + lua_pushnumber(L, (*c)->geometry.x); + lua_setfield(L, -2, "x"); + lua_pushnumber(L, (*c)->geometry.y); + lua_setfield(L, -2, "y"); + break; default: return 0; } @@ -1375,8 +1352,6 @@ const struct luaL_reg awesome_client_meta[] = { "titlebar_get", luaA_client_titlebar_get }, { "tag", luaA_client_tag }, { "istagged", luaA_client_istagged }, - { "coords_get", luaA_client_coords_get }, - { "coords_set", luaA_client_coords_set }, { "kill", luaA_client_kill }, { "swap", luaA_client_swap }, { "focus_set", luaA_client_focus_set }, diff --git a/common/tokenize.gperf b/common/tokenize.gperf index 36172451..6dbabf49 100644 --- a/common/tokenize.gperf +++ b/common/tokenize.gperf @@ -14,6 +14,7 @@ bottomright center class color +coords fg flex floating diff --git a/lib/awful.lua b/lib/awful.lua index 78a2f9df..652b04f2 100644 --- a/lib/awful.lua +++ b/lib/awful.lua @@ -129,12 +129,12 @@ end -- @param c The optional client, otherwise focused one is used. function P.client.moveresize(x, y, w, h, c) local sel = c or client.focus_get() - local coords = sel:coords_get() + local coords = sel.coords coords['x'] = coords['x'] + x coords['y'] = coords['y'] + y coords['width'] = coords['width'] + w coords['height'] = coords['height'] + h - sel:coords_set(coords) + sel.coords = coords end --- Give the focus to a screen, and move pointer.