opt: allow floating window show on fullscreen window
This commit is contained in:
@@ -1165,12 +1165,11 @@ void toggleoverlay(const Arg *arg) {
|
|||||||
wlr_scene_node_reparent(&selmon->sel->scene->node, layers[LyrOverlay]);
|
wlr_scene_node_reparent(&selmon->sel->scene->node, layers[LyrOverlay]);
|
||||||
wlr_scene_node_raise_to_top(&selmon->sel->scene->node);
|
wlr_scene_node_raise_to_top(&selmon->sel->scene->node);
|
||||||
} else if (client_should_overtop(selmon->sel) && selmon->sel->isfloating) {
|
} else if (client_should_overtop(selmon->sel) && selmon->sel->isfloating) {
|
||||||
wlr_scene_node_reparent(&selmon->sel->scene->node,
|
wlr_scene_node_reparent(&selmon->sel->scene->node, layers[LyrTop]);
|
||||||
layers[LyrFSorOverTop]);
|
|
||||||
} else {
|
} else {
|
||||||
wlr_scene_node_reparent(
|
wlr_scene_node_reparent(
|
||||||
&selmon->sel->scene->node,
|
&selmon->sel->scene->node,
|
||||||
layers[selmon->sel->isfloating ? LyrFloat : LyrTile]);
|
layers[selmon->sel->isfloating ? LyrTop : LyrTile]);
|
||||||
}
|
}
|
||||||
setborder_color(selmon->sel);
|
setborder_color(selmon->sel);
|
||||||
}
|
}
|
||||||
|
|||||||
21
src/mango.c
21
src/mango.c
@@ -143,10 +143,8 @@ enum {
|
|||||||
LyrBlur,
|
LyrBlur,
|
||||||
LyrBottom,
|
LyrBottom,
|
||||||
LyrTile,
|
LyrTile,
|
||||||
LyrFloat,
|
|
||||||
LyrTop,
|
LyrTop,
|
||||||
LyrFadeOut,
|
LyrFadeOut,
|
||||||
LyrFSorOverTop,
|
|
||||||
LyrOverlay,
|
LyrOverlay,
|
||||||
LyrIMPopup, // text-input layer
|
LyrIMPopup, // text-input layer
|
||||||
LyrBlock,
|
LyrBlock,
|
||||||
@@ -2310,6 +2308,9 @@ void commitpopup(struct wl_listener *listener, void *data) {
|
|||||||
type = toplevel_from_wlr_surface(popup->base->surface, &c, &l);
|
type = toplevel_from_wlr_surface(popup->base->surface, &c, &l);
|
||||||
if (!popup->parent || type < 0)
|
if (!popup->parent || type < 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
wlr_scene_node_raise_to_top(popup->parent->data);
|
||||||
|
|
||||||
popup->base->surface->data =
|
popup->base->surface->data =
|
||||||
wlr_scene_xdg_surface_create(popup->parent->data, popup->base);
|
wlr_scene_xdg_surface_create(popup->parent->data, popup->base);
|
||||||
if ((l && !l->mon) || (c && !c->mon)) {
|
if ((l && !l->mon) || (c && !c->mon)) {
|
||||||
@@ -2320,6 +2321,7 @@ void commitpopup(struct wl_listener *listener, void *data) {
|
|||||||
box.x -= (type == LayerShell ? l->scene->node.x : c->geom.x);
|
box.x -= (type == LayerShell ? l->scene->node.x : c->geom.x);
|
||||||
box.y -= (type == LayerShell ? l->scene->node.y : c->geom.y);
|
box.y -= (type == LayerShell ? l->scene->node.y : c->geom.y);
|
||||||
wlr_xdg_popup_unconstrain_from_box(popup, &box);
|
wlr_xdg_popup_unconstrain_from_box(popup, &box);
|
||||||
|
|
||||||
wl_list_remove(&listener->link);
|
wl_list_remove(&listener->link);
|
||||||
free(listener);
|
free(listener);
|
||||||
}
|
}
|
||||||
@@ -4336,10 +4338,10 @@ setfloating(Client *c, int floating) {
|
|||||||
if (c->isoverlay) {
|
if (c->isoverlay) {
|
||||||
wlr_scene_node_reparent(&c->scene->node, layers[LyrOverlay]);
|
wlr_scene_node_reparent(&c->scene->node, layers[LyrOverlay]);
|
||||||
} else if (client_should_overtop(c) && c->isfloating) {
|
} else if (client_should_overtop(c) && c->isfloating) {
|
||||||
wlr_scene_node_reparent(&c->scene->node, layers[LyrFSorOverTop]);
|
wlr_scene_node_reparent(&c->scene->node, layers[LyrTop]);
|
||||||
} else {
|
} else {
|
||||||
wlr_scene_node_reparent(&c->scene->node,
|
wlr_scene_node_reparent(&c->scene->node,
|
||||||
layers[c->isfloating ? LyrFloat : LyrTile]);
|
layers[c->isfloating ? LyrTop : LyrTile]);
|
||||||
}
|
}
|
||||||
|
|
||||||
arrange(c->mon, false);
|
arrange(c->mon, false);
|
||||||
@@ -4390,7 +4392,7 @@ void setmaxmizescreen(Client *c, int maxmizescreen) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
wlr_scene_node_reparent(&c->scene->node, layers[maxmizescreen ? LyrTile
|
wlr_scene_node_reparent(&c->scene->node, layers[maxmizescreen ? LyrTile
|
||||||
: c->isfloating ? LyrFloat
|
: c->isfloating ? LyrTop
|
||||||
: LyrTile]);
|
: LyrTile]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4440,12 +4442,11 @@ void setfullscreen(Client *c, int fullscreen) // 用自定义全屏代理自带
|
|||||||
if (c->isoverlay) {
|
if (c->isoverlay) {
|
||||||
wlr_scene_node_reparent(&c->scene->node, layers[LyrOverlay]);
|
wlr_scene_node_reparent(&c->scene->node, layers[LyrOverlay]);
|
||||||
} else if (client_should_overtop(c) && c->isfloating) {
|
} else if (client_should_overtop(c) && c->isfloating) {
|
||||||
wlr_scene_node_reparent(&c->scene->node, layers[LyrFSorOverTop]);
|
wlr_scene_node_reparent(&c->scene->node, layers[LyrTop]);
|
||||||
} else {
|
} else {
|
||||||
wlr_scene_node_reparent(&c->scene->node,
|
wlr_scene_node_reparent(
|
||||||
layers[fullscreen ? LyrFSorOverTop
|
&c->scene->node,
|
||||||
: c->isfloating ? LyrFloat
|
layers[fullscreen || c->isfloating ? LyrTop : LyrTile]);
|
||||||
: LyrTile]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
arrange(c->mon, false);
|
arrange(c->mon, false);
|
||||||
|
|||||||
Reference in New Issue
Block a user