feat: restore the current tag when after chvt
This commit is contained in:
@@ -31,8 +31,14 @@ int bind_to_view(const Arg *arg) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int chvt(const Arg *arg) {
|
int chvt(const Arg *arg) {
|
||||||
|
|
||||||
|
if (selmon) {
|
||||||
|
chvt_backup_tag = selmon->pertag->curtag;
|
||||||
|
strncpy(chvt_backup_selmon, selmon->wlr_output->name,
|
||||||
|
sizeof(chvt_backup_selmon) - 1);
|
||||||
|
}
|
||||||
wlr_session_change_vt(session, arg->ui);
|
wlr_session_change_vt(session, arg->ui);
|
||||||
return 0;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int create_virtual_output(const Arg *arg) {
|
int create_virtual_output(const Arg *arg) {
|
||||||
|
|||||||
27
src/mango.c
27
src/mango.c
@@ -845,6 +845,9 @@ static double swipe_dy = 0;
|
|||||||
|
|
||||||
bool render_border = true;
|
bool render_border = true;
|
||||||
|
|
||||||
|
uint32_t chvt_backup_tag = 0;
|
||||||
|
char chvt_backup_selmon[32] = {0};
|
||||||
|
|
||||||
struct dvec2 *baked_points_move;
|
struct dvec2 *baked_points_move;
|
||||||
struct dvec2 *baked_points_open;
|
struct dvec2 *baked_points_open;
|
||||||
struct dvec2 *baked_points_tag;
|
struct dvec2 *baked_points_tag;
|
||||||
@@ -2705,7 +2708,6 @@ void createmon(struct wl_listener *listener, void *data) {
|
|||||||
m->isoverview = 0;
|
m->isoverview = 0;
|
||||||
m->sel = NULL;
|
m->sel = NULL;
|
||||||
m->is_in_hotarea = 0;
|
m->is_in_hotarea = 0;
|
||||||
m->tagset[0] = m->tagset[1] = 1;
|
|
||||||
float scale = 1;
|
float scale = 1;
|
||||||
m->mfact = default_mfact;
|
m->mfact = default_mfact;
|
||||||
m->nmaster = default_nmaster;
|
m->nmaster = default_nmaster;
|
||||||
@@ -2777,7 +2779,16 @@ void createmon(struct wl_listener *listener, void *data) {
|
|||||||
|
|
||||||
wl_list_insert(&mons, &m->link);
|
wl_list_insert(&mons, &m->link);
|
||||||
m->pertag = calloc(1, sizeof(Pertag));
|
m->pertag = calloc(1, sizeof(Pertag));
|
||||||
m->pertag->curtag = m->pertag->prevtag = 1;
|
if (chvt_backup_tag &&
|
||||||
|
regex_match(chvt_backup_selmon, m->wlr_output->name)) {
|
||||||
|
m->tagset[0] = m->tagset[1] = (1 << (chvt_backup_tag - 1)) & TAGMASK;
|
||||||
|
m->pertag->curtag = m->pertag->prevtag = chvt_backup_tag;
|
||||||
|
chvt_backup_tag = 0;
|
||||||
|
memset(chvt_backup_selmon, 0, sizeof(chvt_backup_selmon));
|
||||||
|
} else {
|
||||||
|
m->tagset[0] = m->tagset[1] = 1;
|
||||||
|
m->pertag->curtag = m->pertag->prevtag = 1;
|
||||||
|
}
|
||||||
|
|
||||||
for (i = 0; i <= LENGTH(tags); i++) {
|
for (i = 0; i <= LENGTH(tags); i++) {
|
||||||
m->pertag->nmasters[i] = m->nmaster;
|
m->pertag->nmasters[i] = m->nmaster;
|
||||||
@@ -4232,10 +4243,18 @@ void rendermon(struct wl_listener *listener, void *data) {
|
|||||||
LayerSurface *l = NULL, *tmpl = NULL;
|
LayerSurface *l = NULL, *tmpl = NULL;
|
||||||
int i;
|
int i;
|
||||||
struct wl_list *layer_list;
|
struct wl_list *layer_list;
|
||||||
|
bool frame_allow_tearing = false;
|
||||||
struct timespec now;
|
struct timespec now;
|
||||||
bool need_more_frames = false;
|
bool need_more_frames = false;
|
||||||
bool frame_allow_tearing = check_tearing_frame_allow(m);
|
|
||||||
|
if (session && !session->active) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!m->wlr_output->enabled)
|
||||||
|
return;
|
||||||
|
|
||||||
|
frame_allow_tearing = check_tearing_frame_allow(m);
|
||||||
|
|
||||||
// 绘制层和淡出效果
|
// 绘制层和淡出效果
|
||||||
for (i = 0; i < LENGTH(m->layers); i++) {
|
for (i = 0; i < LENGTH(m->layers); i++) {
|
||||||
|
|||||||
Reference in New Issue
Block a user