fix: optimize the settings of the global and minimized states

This commit is contained in:
DreamMaoMao 2025-04-18 08:34:41 +08:00
parent 73f4a7e172
commit bdc06b3d62

View file

@ -230,7 +230,6 @@ struct Client {
fullscreen_backup_h; fullscreen_backup_h;
int overview_isfullscreenbak, overview_ismaxmizescreenbak, int overview_isfullscreenbak, overview_ismaxmizescreenbak,
overview_isfloatingbak; overview_isfloatingbak;
uint32_t resize; /* configure serial of a pending resize */
struct wlr_xdg_toplevel_decoration_v1 *decoration; struct wlr_xdg_toplevel_decoration_v1 *decoration;
struct wl_listener foreign_activate_request; struct wl_listener foreign_activate_request;
@ -249,7 +248,6 @@ struct Client {
int isopensilent; int isopensilent;
int iskilling; int iskilling;
struct wlr_box bounds; struct wlr_box bounds;
bool resizing;
bool is_open_animation; bool is_open_animation;
bool is_restoring_from_ov; bool is_restoring_from_ov;
float scroller_proportion; float scroller_proportion;
@ -2562,8 +2560,6 @@ void client_set_pending_state(Client *c) {
// 判断是否需要动画 // 判断是否需要动画
if (!animations) { if (!animations) {
c->animation.should_animate = false; c->animation.should_animate = false;
} else if (c->isglobal && c->isfloating) {
c->animation.should_animate = false;
} else if (animations && c->animation.tagining) { } else if (animations && c->animation.tagining) {
c->animation.should_animate = true; c->animation.should_animate = true;
c->animation.initial = c->animainit_geom; c->animation.initial = c->animainit_geom;
@ -4082,6 +4078,15 @@ mapnotify(struct wl_listener *listener, void *data) {
c->isfullscreen = 0; c->isfullscreen = 0;
c->need_float_size_reduce = 0; c->need_float_size_reduce = 0;
c->iskilling = 0; c->iskilling = 0;
c->isglobal = 0;
c->isminied = 0;
c->is_in_scratchpad = 0;
c->is_scratchpad_show = 0;
c->need_float_size_reduce = 0;
c->is_clip_to_hide = 0;
c->is_restoring_from_ov = 0;
c->isurgent = 0;
c->need_output_flush = 0;
c->scroller_proportion = scroller_default_proportion; c->scroller_proportion = scroller_default_proportion;
if (new_is_master && if (new_is_master &&
@ -4154,15 +4159,11 @@ maximizenotify(struct wl_listener *listener, void *data) {
void set_minized(Client *c) { void set_minized(Client *c) {
if (!c) if (!c || !c->mon)
return; return;
if (c->isglobal) { c->isglobal = 0;
c->isglobal = 0; c->oldtags = c->mon->tagset[c->mon->seltags];
selmon->sel->tags = selmon->tagset[selmon->seltags];
}
c->is_scratchpad_show = 0;
c->oldtags = c->mon->sel->tags;
c->mini_restore_tag = c->tags; c->mini_restore_tag = c->tags;
c->tags = 0; c->tags = 0;
c->isminied = 1; c->isminied = 1;
@ -4926,6 +4927,10 @@ void resize(Client *c, struct wlr_box geo, int interact) {
c->animainit_geom = c->geom; c->animainit_geom = c->geom;
} }
if (c->isglobal && c->isfloating && c->animation.action == TAG) {
c->animainit_geom = c->geom;
}
if (c->animation_type_open && strcmp(c->animation_type_open,"none") == 0 && c->animation.action == OPEN) { if (c->animation_type_open && strcmp(c->animation_type_open,"none") == 0 && c->animation.action == OPEN) {
c->animainit_geom = c->geom; c->animainit_geom = c->geom;
} }
@ -6573,7 +6578,7 @@ void unmapnotify(struct wl_listener *listener, void *data) {
Client *c = wl_container_of(listener, c, unmap); Client *c = wl_container_of(listener, c, unmap);
c->iskilling = 1; c->iskilling = 1;
if (animations) if (animations && !c->isminied && (!c->mon || VISIBLEON(c, c->mon)))
init_fadeout_client(c); init_fadeout_client(c);
if (c->swallowedby) { if (c->swallowedby) {