修复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
setlayout(const Arg *arg) {
if (!selmon)
return;
if (!arg || !arg->v || strcmp(arg->v, selmon->lt[selmon->sellt]->name))
selmon->sellt ^= 1;
if (arg && arg->v) {
selmon->lt[selmon->sellt] = (Layout *)arg->v;
selmon->pertag->sellts[selmon->pertag->curtag] = 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));
arrange(selmon, false);
printstatus();
int jk;
for (jk = 0; jk < LENGTH(layouts); jk++) {
if(strcmp(layouts[jk].name , arg->v) == 0) {
selmon->lt[selmon->sellt] = &layouts[jk];
selmon->pertag->sellts[selmon->pertag->curtag] = 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));
arrange(selmon, false);
printstatus();
return;
}
}
}
void switch_layout(const Arg *arg) {
if (!selmon)
return;
selmon->sellt ^= 1;
selmon->pertag->sellts[selmon->pertag->curtag] = selmon->sellt;
int jk;
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 */

View file

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