~ruther/dwl

f695674361d15a312eed2234e8d21a5e03719559 — Forrest Bushstone 1 year, 8 months ago aec21ec
Check if c is fullscreen before reparenting it to LyrFloating

Closes: https://github.com/djpohly/dwl/issues/487
1 files changed, 4 insertions(+), 3 deletions(-)

M dwl.c
M dwl.c => dwl.c +4 -3
@@ 2028,7 2028,8 @@ setfloating(Client *c, int floating)
	c->isfloating = floating;
	if (!c->mon)
		return;
	wlr_scene_node_reparent(&c->scene->node, layers[c->isfloating ? LyrFloat : LyrTile]);
	wlr_scene_node_reparent(&c->scene->node, layers[c->isfullscreen
			? LyrFS : c->isfloating ? LyrFloat : LyrTile]);
	arrange(c->mon);
	printstatus();
}


@@ 2041,7 2042,7 @@ setfullscreen(Client *c, int fullscreen)
		return;
	c->bw = fullscreen ? 0 : borderpx;
	client_set_fullscreen(c, fullscreen);
	wlr_scene_node_reparent(&c->scene->node, layers[fullscreen
	wlr_scene_node_reparent(&c->scene->node, layers[c->isfullscreen
			? LyrFS : c->isfloating ? LyrFloat : LyrTile]);

	if (fullscreen) {


@@ 2102,8 2103,8 @@ setmon(Client *c, Monitor *m, uint32_t newtags)
		/* Make sure window actually overlaps with the monitor */
		resize(c, c->geom, 0);
		c->tags = newtags ? newtags : m->tagset[m->seltags]; /* assign tags of target monitor */
		setfloating(c, c->isfloating);
		setfullscreen(c, c->isfullscreen); /* This will call arrange(c->mon) */
		setfloating(c, c->isfloating);
	}
	focusclient(focustop(selmon), 1);
}

Do not follow this link