mirror of
https://github.com/swaywm/sway.git
synced 2024-11-24 08:51:27 +00:00
arrange: Don't try to arrange a fullscreen container as a tiling/floating container
Causes the container to appear in random places in fullscreen view. See: https://github.com/swaywm/sway/pull/6844#issuecomment-1061392867 See: https://github.com/swaywm/sway/pull/6844#issuecomment-1061691809
This commit is contained in:
parent
9f98c38d3e
commit
804dd18cd0
|
@ -209,6 +209,34 @@ static void arrange_floating(list_t *floating) {
|
||||||
|
|
||||||
static void arrange_children(list_t *children,
|
static void arrange_children(list_t *children,
|
||||||
enum sway_container_layout layout, struct wlr_box *parent) {
|
enum sway_container_layout layout, struct wlr_box *parent) {
|
||||||
|
|
||||||
|
// Don't include fullscreen containers. If we do, we run the risk
|
||||||
|
// of overwriting properties as if this container was tiled/floating
|
||||||
|
// but should still be fullscreen.
|
||||||
|
bool has_fullscreen = false;
|
||||||
|
for (int i = 0; i < children->length; ++i) {
|
||||||
|
struct sway_container *child = children->items[i];
|
||||||
|
|
||||||
|
if (child->pending.fullscreen_mode != FULLSCREEN_NONE) {
|
||||||
|
has_fullscreen = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (has_fullscreen) {
|
||||||
|
list_t *fs_purged = create_list();
|
||||||
|
|
||||||
|
for (int i = 0; i < children->length; ++i) {
|
||||||
|
struct sway_container *child = children->items[i];
|
||||||
|
|
||||||
|
if (child->pending.fullscreen_mode == FULLSCREEN_NONE) {
|
||||||
|
list_add(fs_purged, child);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
children = fs_purged;
|
||||||
|
}
|
||||||
|
|
||||||
// Calculate x, y, width and height of children
|
// Calculate x, y, width and height of children
|
||||||
switch (layout) {
|
switch (layout) {
|
||||||
case L_HORIZ:
|
case L_HORIZ:
|
||||||
|
@ -233,6 +261,10 @@ static void arrange_children(list_t *children,
|
||||||
struct sway_container *child = children->items[i];
|
struct sway_container *child = children->items[i];
|
||||||
arrange_container(child);
|
arrange_container(child);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (has_fullscreen) {
|
||||||
|
list_free(children);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void arrange_container(struct sway_container *container) {
|
void arrange_container(struct sway_container *container) {
|
||||||
|
|
Loading…
Reference in a new issue