All: Update !!!! \o/
This commit is contained in:
@@ -238,7 +238,7 @@ client_get_name(Client *c)
|
||||
{
|
||||
XFetchName(dpy, c->win, &(c->title));
|
||||
if(!c->title)
|
||||
c->title = strdup("WMFS");
|
||||
c->title = _strdup("WMFS");
|
||||
|
||||
frame_update(c);
|
||||
|
||||
|
||||
95
src/config.c
95
src/config.c
@@ -94,7 +94,7 @@ mouse_section(MouseBinding mb[], cfg_t *cfg, int ns)
|
||||
mb[i].screen = cfg_getint(tmp, "screen");
|
||||
mb[i].button = char_to_button(cfg_getstr(tmp, "button"), mouse_button_list);
|
||||
mb[i].func = name_to_func(cfg_getstr(tmp, "func"), func_list);
|
||||
mb[i].cmd = strdup(alias_to_str(cfg_getstr(tmp, "cmd")));
|
||||
mb[i].cmd = _strdup(alias_to_str(cfg_getstr(tmp, "cmd")));
|
||||
}
|
||||
|
||||
return;
|
||||
@@ -109,8 +109,8 @@ conf_alias_section(cfg_t *cfg_a)
|
||||
for(i = 0; i < cfg_size(cfg_a, "alias"); ++i)
|
||||
{
|
||||
cfgtmp = cfg_getnsec(cfg_a, "alias", i);
|
||||
conf.alias[i].name = strdup(cfg_title(cfgtmp));
|
||||
conf.alias[i].content = strdup(cfg_getstr(cfgtmp, "content"));
|
||||
conf.alias[i].name = _strdup(cfg_title(cfgtmp));
|
||||
conf.alias[i].content = _strdup(cfg_getstr(cfgtmp, "content"));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -124,7 +124,7 @@ conf_alias_section(cfg_t *cfg_a)
|
||||
void
|
||||
conf_misc_section(cfg_t *cfg_m)
|
||||
{
|
||||
conf.font = alias_to_str(strdup(cfg_getstr(cfg_m, "font")));
|
||||
conf.font = alias_to_str(_strdup(cfg_getstr(cfg_m, "font")));
|
||||
conf.raisefocus = cfg_getbool(cfg_m, "raisefocus");
|
||||
conf.raiseswitch = cfg_getbool(cfg_m, "raiseswitch");
|
||||
|
||||
@@ -136,8 +136,8 @@ conf_bar_section(cfg_t *cfg_b)
|
||||
{
|
||||
conf.border.bar = cfg_getbool(cfg_b, "border");
|
||||
conf.colors.bar = getcolor(alias_to_str(cfg_getstr(cfg_b, "bg")));
|
||||
conf.colors.text = strdup(alias_to_str(cfg_getstr(cfg_b, "fg")));
|
||||
conf.bartop = (strcmp(strdup(cfg_getstr(cfg_b, "position")), "top") == 0) ? True : False;
|
||||
conf.colors.text = _strdup(alias_to_str(cfg_getstr(cfg_b, "fg")));
|
||||
conf.bartop = (strcmp(_strdup(cfg_getstr(cfg_b, "position")), "top") == 0) ? True : False;
|
||||
|
||||
return;
|
||||
}
|
||||
@@ -145,10 +145,13 @@ conf_bar_section(cfg_t *cfg_b)
|
||||
void
|
||||
conf_root_section(cfg_t *cfg_r)
|
||||
{
|
||||
conf.root.background_command = strdup(alias_to_str(cfg_getstr(cfg_r, "background_command")));
|
||||
conf.root.background_command = _strdup(alias_to_str(cfg_getstr(cfg_r, "background_command")));
|
||||
conf.root.nmouse = cfg_size(cfg_r, "mouse");
|
||||
conf.root.mouse = emalloc(conf.root.nmouse, sizeof(MouseBinding));
|
||||
mouse_section(conf.root.mouse, cfg_r, conf.root.nmouse);
|
||||
if(conf.root.nmouse)
|
||||
{
|
||||
conf.root.mouse = emalloc(conf.root.nmouse, sizeof(MouseBinding));
|
||||
mouse_section(conf.root.mouse, cfg_r, conf.root.nmouse);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
@@ -164,9 +167,11 @@ conf_client_section(cfg_t *cfg_c)
|
||||
conf.client.resizecorner_normal = getcolor(alias_to_str(cfg_getstr(cfg_c, "resize_corner_normal")));
|
||||
conf.client.resizecorner_focus = getcolor(alias_to_str(cfg_getstr(cfg_c, "resize_corner_focus")));
|
||||
conf.client.mod |= char_to_modkey(cfg_getstr(cfg_c, "modifier"), key_list);
|
||||
conf.client.nmouse = cfg_size(cfg_c, "mouse");
|
||||
conf.client.mouse = emalloc(conf.client.nmouse, sizeof(MouseBinding));
|
||||
mouse_section(conf.client.mouse, cfg_c, conf.client.nmouse);
|
||||
if((conf.client.nmouse = cfg_size(cfg_c, "mouse")))
|
||||
{
|
||||
conf.client.mouse = emalloc(conf.client.nmouse, sizeof(MouseBinding));
|
||||
mouse_section(conf.client.mouse, cfg_c, conf.client.nmouse);
|
||||
}
|
||||
|
||||
/* Titlebar part */
|
||||
cfgtmp = cfg_getsec(cfg_c, "titlebar");
|
||||
@@ -174,10 +179,11 @@ conf_client_section(cfg_t *cfg_c)
|
||||
conf.titlebar.stipple = cfg_getbool(cfgtmp, "stipple");
|
||||
conf.titlebar.fg_normal = alias_to_str(cfg_getstr(cfgtmp, "fg_normal"));
|
||||
conf.titlebar.fg_focus = alias_to_str(cfg_getstr(cfgtmp, "fg_focus"));
|
||||
conf.titlebar.nmouse = cfg_size(cfgtmp, "mouse");
|
||||
conf.titlebar.mouse = emalloc(conf.titlebar.nmouse, sizeof(MouseBinding));
|
||||
mouse_section(conf.titlebar.mouse, cfgtmp, conf.titlebar.nmouse);
|
||||
|
||||
if((conf.titlebar.nmouse = cfg_size(cfgtmp, "mouse")))
|
||||
{
|
||||
conf.titlebar.mouse = emalloc(conf.titlebar.nmouse, sizeof(MouseBinding));
|
||||
mouse_section(conf.titlebar.mouse, cfgtmp, conf.titlebar.nmouse);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -194,10 +200,10 @@ conf_layout_section(cfg_t *cfg_l)
|
||||
}
|
||||
|
||||
conf.border.layout = cfg_getbool(cfg_l, "border");
|
||||
conf.colors.layout_fg = strdup(alias_to_str(cfg_getstr(cfg_l, "fg")));
|
||||
conf.colors.layout_fg = _strdup(alias_to_str(cfg_getstr(cfg_l, "fg")));
|
||||
conf.colors.layout_bg = getcolor(alias_to_str(cfg_getstr(cfg_l, "bg")));
|
||||
|
||||
if(strcmp(strdup(alias_to_str(cfg_getstr(cfg_l, "system"))), "menu") == 0)
|
||||
if(strcmp(_strdup(alias_to_str(cfg_getstr(cfg_l, "system"))), "menu") == 0)
|
||||
conf.layout_system = True;
|
||||
|
||||
if((conf.nlayout = cfg_size(cfg_l, "layout")) > NUM_OF_LAYOUT
|
||||
@@ -205,11 +211,11 @@ conf_layout_section(cfg_t *cfg_l)
|
||||
{
|
||||
fprintf(stderr, "WMFS Configuration: Too many or no layouts (%d)\n", conf.nlayout);
|
||||
conf.nlayout = 1;
|
||||
conf.layout[0].symbol = strdup("TILE");
|
||||
conf.layout[0].symbol = _strdup("TILE");
|
||||
conf.layout[0].func = tile;
|
||||
}
|
||||
|
||||
if(conf.layout_system)
|
||||
if(conf.layout_system && conf.nlayout > 1)
|
||||
menu_init(&menulayout, "menulayout", conf.nlayout,
|
||||
/* Colors */
|
||||
conf.colors.layout_bg,
|
||||
@@ -223,21 +229,21 @@ conf_layout_section(cfg_t *cfg_l)
|
||||
for(i = 0; i < conf.nlayout; ++i)
|
||||
{
|
||||
cfgtmp = cfg_getnsec(cfg_l, "layout", i);
|
||||
if(!name_to_func(strdup(cfg_getstr(cfgtmp, "type")), layout_list))
|
||||
if(!name_to_func(_strdup(cfg_getstr(cfgtmp, "type")), layout_list))
|
||||
{
|
||||
fprintf(stderr, "WMFS Configuration: Unknow Layout type: \"%s\"\n",
|
||||
strdup(cfg_getstr(cfgtmp, "type")));
|
||||
_strdup(cfg_getstr(cfgtmp, "type")));
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
else
|
||||
{
|
||||
if(conf.layout_system)
|
||||
if(conf.layout_system && conf.nlayout > 1)
|
||||
menu_new_item(&menulayout.item[i],
|
||||
strdup(alias_to_str(cfg_getstr(cfgtmp, "symbol"))),
|
||||
uicb_set_layout, strdup(cfg_getstr(cfgtmp, "type")));
|
||||
_strdup(alias_to_str(cfg_getstr(cfgtmp, "symbol"))),
|
||||
uicb_set_layout, _strdup(cfg_getstr(cfgtmp, "type")));
|
||||
|
||||
conf.layout[i].symbol = strdup(alias_to_str(cfg_getstr(cfgtmp, "symbol")));
|
||||
conf.layout[i].func = name_to_func(strdup(cfg_getstr(cfgtmp, "type")), layout_list);
|
||||
conf.layout[i].symbol = _strdup(alias_to_str(cfg_getstr(cfgtmp, "symbol")));
|
||||
conf.layout[i].func = name_to_func(_strdup(cfg_getstr(cfgtmp, "type")), layout_list);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -258,7 +264,7 @@ conf_tag_section(cfg_t *cfg_t)
|
||||
layout_name_to_struct(conf.layout, "tile_right", conf.nlayout, layout_list) };
|
||||
|
||||
conf.tag_round = cfg_getbool(cfg_t, "tag_round");
|
||||
conf.colors.tagselfg = strdup(alias_to_str(cfg_getstr(cfg_t, "sel_fg")));
|
||||
conf.colors.tagselfg = _strdup(alias_to_str(cfg_getstr(cfg_t, "sel_fg")));
|
||||
conf.colors.tagselbg = getcolor(alias_to_str(cfg_getstr(cfg_t, "sel_bg")));
|
||||
conf.colors.tag_occupied_bg = getcolor(alias_to_str(cfg_getstr(cfg_t, "occupied_bg")));
|
||||
conf.border.tag = cfg_getbool(cfg_t, "border");
|
||||
@@ -266,6 +272,7 @@ conf_tag_section(cfg_t *cfg_t)
|
||||
/* Alloc all */
|
||||
conf.ntag = emalloc(screen_count(), sizeof(int));
|
||||
tags = emalloc(screen_count(), sizeof(Tag*));
|
||||
|
||||
for(i = 0; i < screen_count(); ++i)
|
||||
tags[i] = emalloc(cfg_size(cfg_t, "tag") + 1, sizeof(Tag));
|
||||
|
||||
@@ -281,7 +288,7 @@ conf_tag_section(cfg_t *cfg_t)
|
||||
((j == -1) ? ++k : --l))
|
||||
{
|
||||
++conf.ntag[k];
|
||||
tags[k][conf.ntag[k]].name = strdup(cfg_getstr(cfgtmp, "name"));
|
||||
tags[k][conf.ntag[k]].name = _strdup(cfg_getstr(cfgtmp, "name"));
|
||||
tags[k][conf.ntag[k]].mwfact = cfg_getfloat(cfgtmp, "mwfact");
|
||||
tags[k][conf.ntag[k]].nmaster = cfg_getint(cfgtmp, "nmaster");
|
||||
tags[k][conf.ntag[k]].resizehint = cfg_getbool(cfgtmp, "resizehint");
|
||||
@@ -322,7 +329,7 @@ conf_menu_section(cfg_t *cfg_m)
|
||||
{
|
||||
cfgtmp = cfg_getnsec(cfg_m, "set_menu", i);
|
||||
|
||||
conf.menu[i].name = strdup(cfg_getstr(cfgtmp, "name"));
|
||||
conf.menu[i].name = _strdup(cfg_getstr(cfgtmp, "name"));
|
||||
|
||||
if(!(conf.menu[i].place_at_mouse = cfg_getbool(cfgtmp, "place_at_mouse")))
|
||||
{
|
||||
@@ -330,10 +337,10 @@ conf_menu_section(cfg_t *cfg_m)
|
||||
conf.menu[i].y = cfg_getint(cfgtmp, "y");
|
||||
}
|
||||
|
||||
conf.menu[i].colors.focus.bg = getcolor(strdup(cfg_getstr(cfgtmp, "bg_focus")));
|
||||
conf.menu[i].colors.focus.fg = strdup(cfg_getstr(cfgtmp, "fg_focus"));
|
||||
conf.menu[i].colors.normal.bg = getcolor(strdup(cfg_getstr(cfgtmp, "bg_normal")));
|
||||
conf.menu[i].colors.normal.fg = strdup(cfg_getstr(cfgtmp, "fg_normal"));
|
||||
conf.menu[i].colors.focus.bg = getcolor(_strdup(cfg_getstr(cfgtmp, "bg_focus")));
|
||||
conf.menu[i].colors.focus.fg = _strdup(cfg_getstr(cfgtmp, "fg_focus"));
|
||||
conf.menu[i].colors.normal.bg = getcolor(_strdup(cfg_getstr(cfgtmp, "bg_normal")));
|
||||
conf.menu[i].colors.normal.fg = _strdup(cfg_getstr(cfgtmp, "fg_normal"));
|
||||
|
||||
conf.menu[i].nitem = cfg_size(cfgtmp, "item");
|
||||
|
||||
@@ -344,10 +351,10 @@ conf_menu_section(cfg_t *cfg_m)
|
||||
{
|
||||
cfgtmp2 = cfg_getnsec(cfgtmp, "item", j);
|
||||
|
||||
conf.menu[i].item[j].name = strdup(cfg_getstr(cfgtmp2, "name"));
|
||||
conf.menu[i].item[j].func = name_to_func(strdup(cfg_getstr(cfgtmp2, "func")), func_list);
|
||||
conf.menu[i].item[j].cmd = (!strdup(alias_to_str((cfg_getstr(cfgtmp2, "cmd"))))
|
||||
? NULL : strdup(alias_to_str(cfg_getstr(cfgtmp2, "cmd"))));
|
||||
conf.menu[i].item[j].name = _strdup(cfg_getstr(cfgtmp2, "name"));
|
||||
conf.menu[i].item[j].func = name_to_func(_strdup(cfg_getstr(cfgtmp2, "func")), func_list);
|
||||
conf.menu[i].item[j].cmd = (!_strdup(alias_to_str((cfg_getstr(cfgtmp2, "cmd"))))
|
||||
? NULL : _strdup(alias_to_str(cfg_getstr(cfgtmp2, "cmd"))));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -368,9 +375,9 @@ conf_launcher_section(cfg_t *cfg_l)
|
||||
{
|
||||
cfgtmp = cfg_getnsec(cfg_l, "set_launcher", i);
|
||||
|
||||
conf.launcher[i].name = alias_to_str(strdup(cfg_getstr(cfgtmp, "name")));
|
||||
conf.launcher[i].prompt = alias_to_str(strdup(cfg_getstr(cfgtmp, "prompt")));
|
||||
conf.launcher[i].command = alias_to_str(strdup(cfg_getstr(cfgtmp, "command")));
|
||||
conf.launcher[i].name = alias_to_str(_strdup(cfg_getstr(cfgtmp, "name")));
|
||||
conf.launcher[i].prompt = alias_to_str(_strdup(cfg_getstr(cfgtmp, "prompt")));
|
||||
conf.launcher[i].command = alias_to_str(_strdup(cfg_getstr(cfgtmp, "command")));
|
||||
}
|
||||
|
||||
return;
|
||||
@@ -399,8 +406,8 @@ conf_keybind_section(cfg_t *cfg_k)
|
||||
cfg_getstr(cfgtmp, "func"));
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
keys[i].cmd = (!strdup(alias_to_str((cfg_getstr(cfgtmp, "cmd"))))
|
||||
? NULL : strdup(alias_to_str(cfg_getstr(cfgtmp, "cmd"))));
|
||||
keys[i].cmd = (!_strdup(alias_to_str((cfg_getstr(cfgtmp, "cmd"))))
|
||||
? NULL : _strdup(alias_to_str(cfg_getstr(cfgtmp, "cmd"))));
|
||||
}
|
||||
return;
|
||||
}
|
||||
@@ -414,7 +421,7 @@ init_conf(void)
|
||||
{
|
||||
int ret;
|
||||
|
||||
sprintf(final_path, "%s/%s", strdup(getenv("HOME")), strdup(FILE_NAME));
|
||||
sprintf(final_path, "%s/%s", _strdup(getenv("HOME")), _strdup(FILE_NAME));
|
||||
|
||||
cfg = cfg_init(opts, CFGF_NONE);
|
||||
ret = cfg_parse(cfg, final_path);
|
||||
|
||||
@@ -32,8 +32,6 @@
|
||||
|
||||
#include "wmfs.h"
|
||||
|
||||
//#include "config_struct.h"
|
||||
|
||||
/** ButtonPress handle event
|
||||
* \param ev XButtonEvent pointer
|
||||
*/
|
||||
@@ -84,7 +82,7 @@ buttonpress(XButtonEvent *ev)
|
||||
}
|
||||
|
||||
/* Layout button */
|
||||
if(ev->window == infobar[selscreen].layout_button->win)
|
||||
if(ev->window == infobar[selscreen].layout_button->win && conf.nlayout > 1)
|
||||
{
|
||||
if(conf.layout_system && (ev->button == Button1 || ev->button == Button3)) /* True -> menu */
|
||||
{
|
||||
|
||||
@@ -264,7 +264,7 @@ ewmh_manage_net_wm_state(long data_l[], Client *c)
|
||||
{
|
||||
c->state_fullscreen = False;
|
||||
client_moveresize(c, c->tmp_geo, False);
|
||||
tags[selscreen][seltag[selscreen]].layout.func();
|
||||
tags[selscreen][seltag[selscreen]].layout.func(selscreen);
|
||||
}
|
||||
}
|
||||
/* Manage _NET_WM_STATE_DEMANDS_ATTENTION */
|
||||
@@ -314,7 +314,7 @@ ewmh_manage_window_type(Client *c)
|
||||
sel->tile = sel->max = sel->lmax = False;
|
||||
client_moveresize(sel, sel->ogeo, True);
|
||||
client_focus(c);
|
||||
tags[selscreen][seltag[selscreen]].layout.func();
|
||||
tags[selscreen][seltag[selscreen]].layout.func(selscreen);
|
||||
}
|
||||
}
|
||||
XFree(data);
|
||||
|
||||
72
src/layout.c
72
src/layout.c
@@ -48,7 +48,7 @@ arrange(int screen)
|
||||
client_hide(c);
|
||||
}
|
||||
|
||||
tags[screen][seltag[screen]].layout.func();
|
||||
tags[screen][seltag[screen]].layout.func(screen);
|
||||
infobar_draw(screen);
|
||||
ewmh_get_current_layout();
|
||||
|
||||
@@ -58,7 +58,7 @@ arrange(int screen)
|
||||
/** The free layout function
|
||||
*/
|
||||
void
|
||||
freelayout(void)
|
||||
freelayout(int screen)
|
||||
{
|
||||
Client *c;
|
||||
|
||||
@@ -100,7 +100,7 @@ layoutswitch(Bool b)
|
||||
}
|
||||
}
|
||||
ewmh_get_current_layout();
|
||||
tags[selscreen][seltag[selscreen]].layout.func();
|
||||
tags[selscreen][seltag[selscreen]].layout.func(selscreen);
|
||||
infobar_draw(selscreen);
|
||||
|
||||
return;
|
||||
@@ -131,11 +131,11 @@ uicb_layout_prev(uicb_t cmd)
|
||||
/** Max layout function
|
||||
*/
|
||||
void
|
||||
maxlayout(void)
|
||||
maxlayout(int screen)
|
||||
{
|
||||
Client *c;
|
||||
|
||||
for(c = nexttiled(clients); c; c = nexttiled(c->next))
|
||||
for(c = nexttiled(screen, clients); c; c = nexttiled(screen, c->next))
|
||||
{
|
||||
c->tile = False;
|
||||
c->lmax = True;
|
||||
@@ -151,11 +151,11 @@ maxlayout(void)
|
||||
* \return a client pointer
|
||||
*/
|
||||
Client*
|
||||
nexttiled(Client *c)
|
||||
nexttiled(int screen, Client *c)
|
||||
{
|
||||
for(;c && (c->max
|
||||
|| c->free
|
||||
|| c->screen != selscreen
|
||||
|| c->screen != screen
|
||||
|| c->state_fullscreen
|
||||
|| ishide(c)); c = c->next);
|
||||
|
||||
@@ -179,7 +179,7 @@ uicb_set_mwfact(uicb_t cmd)
|
||||
return;
|
||||
|
||||
tags[selscreen][seltag[selscreen]].mwfact += c;
|
||||
tags[selscreen][seltag[selscreen]].layout.func();
|
||||
tags[selscreen][seltag[selscreen]].layout.func(selscreen);
|
||||
|
||||
return;
|
||||
}
|
||||
@@ -195,14 +195,14 @@ uicb_set_nmaster(uicb_t cmd)
|
||||
|
||||
screen_get_sel();
|
||||
|
||||
for(nc = 0, c = nexttiled(clients); c; c = nexttiled(c->next), ++nc);
|
||||
for(nc = 0, c = nexttiled(selscreen, clients); c; c = nexttiled(selscreen, c->next), ++nc);
|
||||
|
||||
if(!nc || tags[selscreen][seltag[selscreen]].nmaster + n == 0
|
||||
|| tags[selscreen][seltag[selscreen]].nmaster + n > nc)
|
||||
return;
|
||||
|
||||
tags[selscreen][seltag[selscreen]].nmaster += n;
|
||||
tags[selscreen][seltag[selscreen]].layout.func();
|
||||
tags[selscreen][seltag[selscreen]].layout.func(selscreen);
|
||||
|
||||
return;
|
||||
}
|
||||
@@ -210,15 +210,15 @@ uicb_set_nmaster(uicb_t cmd)
|
||||
/** Grid layout function
|
||||
*/
|
||||
void
|
||||
grid(void)
|
||||
grid(int screen)
|
||||
{
|
||||
Client *c;
|
||||
XRectangle sg = sgeo[selscreen];
|
||||
XRectangle sg = sgeo[screen];
|
||||
XRectangle cgeo = {sg.x, sg.y, 0, 0};
|
||||
unsigned int i, n, cols, rows, cpcols = 0;
|
||||
unsigned int border = BORDH * 2;
|
||||
|
||||
for(n = 0, c = nexttiled(clients); c; c = nexttiled(c->next), ++n);
|
||||
for(n = 0, c = nexttiled(screen, clients); c; c = nexttiled(screen, c->next), ++n);
|
||||
CHECK(n);
|
||||
|
||||
for(rows = 0; rows <= n / 2; ++rows)
|
||||
@@ -229,7 +229,7 @@ grid(void)
|
||||
? rows - 1
|
||||
: rows;
|
||||
|
||||
for(i = 0, c = nexttiled(clients); c; c = nexttiled(c->next), ++i)
|
||||
for(i = 0, c = nexttiled(screen, clients); c; c = nexttiled(screen, c->next), ++i)
|
||||
{
|
||||
/* Set client property */
|
||||
c->max = c->lmax = False;
|
||||
@@ -247,7 +247,7 @@ grid(void)
|
||||
cgeo.width = sg.width - (cgeo.x - (sg.x - border));
|
||||
|
||||
/* Resize */
|
||||
client_moveresize(c, cgeo, tags[selscreen][seltag[selscreen]].resizehint);
|
||||
client_moveresize(c, cgeo, tags[screen][seltag[screen]].resizehint);
|
||||
|
||||
/* Set all the other size with current client info */
|
||||
cgeo.y = c->geo.y + c->geo.height + border + TBARH;
|
||||
@@ -266,16 +266,16 @@ grid(void)
|
||||
* \param type Postion type { Top, Bottom, Left, Right }
|
||||
*/
|
||||
void
|
||||
multi_tile(Position type)
|
||||
multi_tile(int screen, Position type)
|
||||
{
|
||||
Client *c;
|
||||
XRectangle sg = sgeo[selscreen];
|
||||
XRectangle sg = sgeo[screen];
|
||||
XRectangle mastergeo = {sg.x, sg.y, 0, 0};
|
||||
XRectangle cgeo = {sg.x, sg.y, 0, 0};
|
||||
uint i , n, tilesize, mwfact, nmaster = tags[selscreen][seltag[selscreen]].nmaster;
|
||||
uint i , n, tilesize, mwfact, nmaster = tags[screen][seltag[screen]].nmaster;
|
||||
uint border = BORDH * 2;
|
||||
|
||||
for(n = 0, c = nexttiled(clients); c; c = nexttiled(c->next), ++n);
|
||||
for(n = 0, c = nexttiled(screen, clients); c; c = nexttiled(screen, c->next), ++n);
|
||||
CHECK(n);
|
||||
|
||||
/* FIX NMASTER */
|
||||
@@ -283,8 +283,8 @@ multi_tile(Position type)
|
||||
|
||||
/* SET MWFACT */
|
||||
mwfact = (type == Top || type == Bottom)
|
||||
? tags[selscreen][seltag[selscreen]].mwfact * sg.height
|
||||
: tags[selscreen][seltag[selscreen]].mwfact * sg.width;
|
||||
? tags[screen][seltag[screen]].mwfact * sg.height
|
||||
: tags[screen][seltag[screen]].mwfact * sg.width;
|
||||
|
||||
/* MASTER SIZE */
|
||||
if(type == Top || type == Bottom)
|
||||
@@ -312,7 +312,7 @@ multi_tile(Position type)
|
||||
}
|
||||
|
||||
|
||||
for(i = 0, c = nexttiled(clients); c; c = nexttiled(c->next), ++i)
|
||||
for(i = 0, c = nexttiled(screen, clients); c; c = nexttiled(screen, c->next), ++i)
|
||||
{
|
||||
/* Set client property */
|
||||
c->max = c->lmax = False;
|
||||
@@ -380,7 +380,7 @@ multi_tile(Position type)
|
||||
}
|
||||
|
||||
/* Magic instant */
|
||||
client_moveresize(c, cgeo, tags[selscreen][seltag[selscreen]].resizehint);
|
||||
client_moveresize(c, cgeo, tags[screen][seltag[screen]].resizehint);
|
||||
|
||||
/* Set the position of the next client */
|
||||
if(type == Top || type == Bottom)
|
||||
@@ -395,9 +395,9 @@ multi_tile(Position type)
|
||||
/** Tile Right function
|
||||
*/
|
||||
void
|
||||
tile(void)
|
||||
tile(int screen)
|
||||
{
|
||||
multi_tile(Right);
|
||||
multi_tile(screen, Right);
|
||||
|
||||
return;
|
||||
}
|
||||
@@ -405,9 +405,9 @@ tile(void)
|
||||
/** Tile Left function
|
||||
*/
|
||||
void
|
||||
tile_left(void)
|
||||
tile_left(int screen)
|
||||
{
|
||||
multi_tile(Left);
|
||||
multi_tile(screen, Left);
|
||||
|
||||
return;
|
||||
}
|
||||
@@ -415,9 +415,9 @@ tile_left(void)
|
||||
/** Tile Top function
|
||||
*/
|
||||
void
|
||||
tile_top(void)
|
||||
tile_top(int screen)
|
||||
{
|
||||
multi_tile(Top);
|
||||
multi_tile(screen, Top);
|
||||
|
||||
return;
|
||||
}
|
||||
@@ -426,9 +426,9 @@ tile_top(void)
|
||||
/** Tile Bottom function
|
||||
*/
|
||||
void
|
||||
tile_bottom(void)
|
||||
tile_bottom(int screen)
|
||||
{
|
||||
multi_tile(Bottom);
|
||||
multi_tile(screen, Bottom);
|
||||
|
||||
return;
|
||||
}
|
||||
@@ -445,12 +445,12 @@ uicb_tile_switch(uicb_t cmd)
|
||||
|
||||
if(!sel || sel->hint || !sel->tile || sel->state_fullscreen)
|
||||
return;
|
||||
if((c = sel) == nexttiled(clients))
|
||||
CHECK((c = nexttiled(c->next)));
|
||||
if((c = sel) == nexttiled(selscreen, clients))
|
||||
CHECK((c = nexttiled(selscreen, c->next)));
|
||||
client_detach(c);
|
||||
client_attach(c);
|
||||
client_focus(c);
|
||||
tags[selscreen][seltag[selscreen]].layout.func();
|
||||
tags[selscreen][seltag[selscreen]].layout.func(selscreen);
|
||||
|
||||
return;
|
||||
}
|
||||
@@ -474,7 +474,7 @@ uicb_togglefree(uicb_t cmd)
|
||||
else
|
||||
sel->ogeo = sel->geo;
|
||||
|
||||
tags[selscreen][seltag[selscreen]].layout.func();
|
||||
tags[selscreen][seltag[selscreen]].layout.func(selscreen);
|
||||
|
||||
return;
|
||||
}
|
||||
@@ -500,7 +500,7 @@ uicb_togglemax(uicb_t cmd)
|
||||
else
|
||||
{
|
||||
sel->max = False;
|
||||
tags[selscreen][seltag[selscreen]].layout.func();
|
||||
tags[selscreen][seltag[selscreen]].layout.func(selscreen);
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
@@ -187,7 +187,7 @@ typedef struct
|
||||
typedef struct
|
||||
{
|
||||
char *symbol;
|
||||
void (*func)(void);
|
||||
void (*func)(int screen);
|
||||
} Layout;
|
||||
|
||||
/* Tag Structure */
|
||||
|
||||
22
src/util.c
22
src/util.c
@@ -102,6 +102,24 @@ setwinstate(Window win, long state)
|
||||
return;
|
||||
}
|
||||
|
||||
/** My strdup. the strdup of string.h isn't ansi compatible..
|
||||
* \param str char pointer
|
||||
*/
|
||||
char*
|
||||
_strdup(char const *str)
|
||||
{
|
||||
char *ret = NULL;
|
||||
|
||||
if (str != NULL)
|
||||
{
|
||||
ret = malloc((strlen(str) + 1) * sizeof *ret);
|
||||
if (ret != NULL)
|
||||
strcpy(ret, str);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
/* The following function are for configuration
|
||||
usage. {{{
|
||||
@@ -172,9 +190,9 @@ alias_to_str(char *conf_choice)
|
||||
tmpchar = conf.alias[i].content;
|
||||
|
||||
if(tmpchar)
|
||||
return strdup(tmpchar);
|
||||
return _strdup(tmpchar);
|
||||
else
|
||||
return strdup(conf_choice);
|
||||
return _strdup(conf_choice);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
28
src/wmfs.c
28
src/wmfs.c
@@ -40,22 +40,22 @@ errorhandler(Display *d, XErrorEvent *event)
|
||||
|
||||
/* Check if there are another WM running */
|
||||
if(BadAccess == event->error_code
|
||||
&& DefaultRootWindow(dpy) == event->resourceid)
|
||||
&& ROOT == event->resourceid)
|
||||
{
|
||||
fprintf(stderr, "WMFS Error: Another Window Manager is already running.\n");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
/* Ignore focus change error for unmapped client */
|
||||
/* Too lemmy to add Xproto.h so:
|
||||
/* Too lazy to add Xproto.h so:
|
||||
* 42 = X_SetInputFocus
|
||||
* 28 = X_GrabButton
|
||||
*/
|
||||
if((c = client_gb_win(event->resourceid)))
|
||||
if(event->error_code == BadWindow
|
||||
|| (event->error_code == BadMatch && event->request_code == 42)
|
||||
|| event->request_code == 28)
|
||||
return 0;
|
||||
|| event->request_code == 42
|
||||
|| event->request_code == 28)
|
||||
return 0;
|
||||
|
||||
|
||||
XGetErrorText(d, event->error_code, mess, 128);
|
||||
@@ -95,9 +95,11 @@ quit(void)
|
||||
|
||||
client_unmanage(c);
|
||||
}
|
||||
for(i = 0; i < screen_count(); ++i)
|
||||
free(tags[i]);
|
||||
free(tags);
|
||||
|
||||
if(tags)
|
||||
free(tags);
|
||||
free(seltag);
|
||||
|
||||
XftFontClose(dpy, font);
|
||||
XFreeCursor(dpy, cursor[CurNormal]);
|
||||
XFreeCursor(dpy, cursor[CurMove]);
|
||||
@@ -105,7 +107,6 @@ quit(void)
|
||||
infobar_destroy();
|
||||
free(sgeo);
|
||||
free(infobar);
|
||||
free(seltag);
|
||||
free(keys);
|
||||
free(func_list);
|
||||
|
||||
@@ -121,9 +122,12 @@ quit(void)
|
||||
if(conf.launcher)
|
||||
free(conf.launcher);
|
||||
free(conf.ntag);
|
||||
free(conf.titlebar.mouse);
|
||||
free(conf.client.mouse);
|
||||
free(conf.root.mouse);
|
||||
if(conf.titlebar.nmouse)
|
||||
free(conf.titlebar.mouse);
|
||||
if(conf.client.nmouse)
|
||||
free(conf.client.mouse);
|
||||
if(conf.root.nmouse)
|
||||
free(conf.root.mouse);
|
||||
/* }}} */
|
||||
|
||||
XSync(dpy, False);
|
||||
|
||||
18
src/wmfs.h
18
src/wmfs.h
@@ -42,6 +42,7 @@
|
||||
#include <unistd.h>
|
||||
#include <time.h>
|
||||
#include <getopt.h>
|
||||
#include <sys/select.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/wait.h>
|
||||
#include <confuse.h>
|
||||
@@ -219,6 +220,7 @@ ulong color_enlight(ulong col);
|
||||
void *emalloc(uint element, uint size);
|
||||
ulong getcolor(char *color);
|
||||
void setwinstate(Window win, long state);
|
||||
char* _strdup(char const *str);
|
||||
/* Conf usage {{{ */
|
||||
void* name_to_func(char *name, func_name_list_t *l);
|
||||
ulong char_to_modkey(char *name, key_name_list_t key_l[]);
|
||||
@@ -251,16 +253,16 @@ void uicb_screen_prev(uicb_t cmd);
|
||||
|
||||
/* layout.c */
|
||||
void arrange(int screen);
|
||||
void freelayout(void);
|
||||
void freelayout(int screen);
|
||||
void layoutswitch(Bool b);
|
||||
void maxlayout(void);
|
||||
Client *nexttiled(Client *c);
|
||||
void maxlayout(int screen);
|
||||
Client *nexttiled(int screen, Client *c);
|
||||
/* tile {{{ */
|
||||
void grid(void);
|
||||
void tile(void);
|
||||
void tile_left(void);
|
||||
void tile_top(void);
|
||||
void tile_bottom(void);
|
||||
void grid(int screen);
|
||||
void tile(int screen);
|
||||
void tile_left(int screen);
|
||||
void tile_top(int screen);
|
||||
void tile_bottom(int screen);
|
||||
/* }}} */
|
||||
void uicb_tile_switch(uicb_t);
|
||||
void uicb_togglemax(uicb_t);
|
||||
|
||||
Reference in New Issue
Block a user