修复swichlayout

This commit is contained in:
DreamMaoMao 2025-02-16 22:32:16 +08:00
parent 959e3f782f
commit c41c5a6b86
2 changed files with 27 additions and 21 deletions

View file

@ -4137,32 +4137,37 @@ void setgaps(int oh, int ov, int ih, int iv) {
void // 17 void // 17
setlayout(const Arg *arg) { setlayout(const Arg *arg) {
if (!selmon) int jk;
return; for (jk = 0; jk < LENGTH(layouts); jk++) {
if (!arg || !arg->v || strcmp(arg->v, selmon->lt[selmon->sellt]->name)) if(strcmp(layouts[jk].name , arg->v) == 0) {
selmon->sellt ^= 1; selmon->lt[selmon->sellt] = &layouts[jk];
if (arg && arg->v) { selmon->pertag->sellts[selmon->pertag->curtag] = selmon->sellt;
selmon->lt[selmon->sellt] = (Layout *)arg->v; selmon->pertag->ltidxs[selmon->pertag->curtag][selmon->sellt] =
selmon->pertag->sellts[selmon->pertag->curtag] = selmon->sellt; selmon->lt[selmon->sellt];
selmon->pertag->ltidxs[selmon->pertag->curtag][selmon->sellt] =
selmon->lt[selmon->sellt]; strncpy(selmon->ltsymbol, selmon->lt[selmon->sellt]->symbol,
} LENGTH(selmon->ltsymbol));
strncpy(selmon->ltsymbol, selmon->lt[selmon->sellt]->symbol, arrange(selmon, false);
LENGTH(selmon->ltsymbol)); printstatus();
arrange(selmon, false); return;
printstatus(); }
}
} }
void switch_layout(const Arg *arg) { void switch_layout(const Arg *arg) {
if (!selmon)
return;
selmon->sellt ^= 1; int jk;
selmon->pertag->sellts[selmon->pertag->curtag] = selmon->sellt; for (jk = 0; jk < LENGTH(layouts); jk++) {
if(strcmp(layouts[jk].name , selmon->lt[selmon->sellt]->name)) {
selmon->lt[selmon->sellt] = &layouts[jk];
selmon->pertag->sellts[selmon->pertag->curtag] = selmon->sellt;
arrange(selmon, false);
printstatus();
return;
}
}
/* TODO change layout symbol? */
arrange(selmon, false);
printstatus();
} }
/* arg > 1.0 will set mfact absolutely */ /* arg > 1.0 will set mfact absolutely */

View file

@ -307,6 +307,7 @@ FuncType parse_func_name(char *func_name,Arg *arg, char *arg_value) {
func = killclient; func = killclient;
} else if (strcmp(func_name, "setlayout") == 0) { } else if (strcmp(func_name, "setlayout") == 0) {
func = setlayout; func = setlayout;
(*arg).v = strdup(arg_value);
} else if (strcmp(func_name, "switch_layout") == 0) { } else if (strcmp(func_name, "switch_layout") == 0) {
func = switch_layout; func = switch_layout;
} else if (strcmp(func_name, "togglefloating") == 0) { } else if (strcmp(func_name, "togglefloating") == 0) {