mirror of
https://github.com/niri-wm/niri.git
synced 2026-06-21 02:01:55 +07:00
Put the top layer above bottom and background layer popups
Makes it consistent with how window popups are below the top layer, also will make more sense for the overview.
This commit is contained in:
@@ -1062,6 +1062,19 @@ impl State {
|
||||
// The target geometry for the positioner should be relative to its parent's geometry, so
|
||||
// we will compute that here.
|
||||
let mut target = Rectangle::from_size(output_geo.size);
|
||||
|
||||
// Background and bottom layer popups render below the top and the overlay layer, so let's
|
||||
// put them into the non-exclusive zone.
|
||||
//
|
||||
// FIXME: ideally this should use the "top and overlay layer" non-exclusive zone, but
|
||||
// Smithay only computes the "all layers" non-exclusive zone atm.
|
||||
//
|
||||
// FIXME: related to the above, top layer popups should use the "overlay layer"
|
||||
// non-exclusive zone.
|
||||
if matches!(layer_surface.layer(), Layer::Background | Layer::Bottom) {
|
||||
target = map.non_exclusive_zone();
|
||||
}
|
||||
|
||||
target.loc -= layer_geo.loc;
|
||||
target.loc -= get_popup_toplevel_coords(popup);
|
||||
|
||||
|
||||
+11
-8
@@ -2880,9 +2880,9 @@ impl Niri {
|
||||
let mon = self.layout.monitor_for_output(output).unwrap();
|
||||
if !mon.render_above_top_layer()
|
||||
&& (layer_popup_under(Layer::Top)
|
||||
|| layer_toplevel_under(Layer::Top)
|
||||
|| layer_popup_under(Layer::Bottom)
|
||||
|| layer_popup_under(Layer::Background)
|
||||
|| layer_toplevel_under(Layer::Top))
|
||||
|| layer_popup_under(Layer::Background))
|
||||
{
|
||||
return None;
|
||||
}
|
||||
@@ -3008,17 +3008,17 @@ impl Niri {
|
||||
under = under
|
||||
.or_else(window_under)
|
||||
.or_else(|| layer_popup_under(Layer::Top))
|
||||
.or_else(|| layer_toplevel_under(Layer::Top))
|
||||
.or_else(|| layer_popup_under(Layer::Bottom))
|
||||
.or_else(|| layer_popup_under(Layer::Background))
|
||||
.or_else(|| layer_toplevel_under(Layer::Top))
|
||||
.or_else(|| layer_toplevel_under(Layer::Bottom))
|
||||
.or_else(|| layer_toplevel_under(Layer::Background));
|
||||
} else {
|
||||
under = under
|
||||
.or_else(|| layer_popup_under(Layer::Top))
|
||||
.or_else(|| layer_toplevel_under(Layer::Top))
|
||||
.or_else(|| layer_popup_under(Layer::Bottom))
|
||||
.or_else(|| layer_popup_under(Layer::Background))
|
||||
.or_else(|| layer_toplevel_under(Layer::Top))
|
||||
.or_else(window_under)
|
||||
.or_else(|| layer_toplevel_under(Layer::Bottom))
|
||||
.or_else(|| layer_toplevel_under(Layer::Background));
|
||||
@@ -3791,10 +3791,13 @@ impl Niri {
|
||||
extend_from_layer(&mut layer_elems, Layer::Overlay);
|
||||
elements.extend(layer_elems.into_iter().map(OutputRenderElements::from));
|
||||
|
||||
// Collect all other layer-shell elements.
|
||||
// Collect the top layer elements.
|
||||
let mut layer_elems = SplitElements::default();
|
||||
extend_from_layer(&mut layer_elems, Layer::Top);
|
||||
let top_layer_normal = mem::take(&mut layer_elems.normal);
|
||||
let top_layer = layer_elems;
|
||||
|
||||
// Collect all other layer-shell elements.
|
||||
let mut layer_elems = SplitElements::default();
|
||||
extend_from_layer(&mut layer_elems, Layer::Bottom);
|
||||
extend_from_layer(&mut layer_elems, Layer::Background);
|
||||
|
||||
@@ -3808,12 +3811,12 @@ impl Niri {
|
||||
);
|
||||
elements.extend(monitor_elements.into_iter().map(OutputRenderElements::from));
|
||||
|
||||
elements.extend(top_layer.into_iter().map(OutputRenderElements::from));
|
||||
elements.extend(layer_elems.popups.drain(..).map(OutputRenderElements::from));
|
||||
elements.extend(top_layer_normal.into_iter().map(OutputRenderElements::from));
|
||||
elements.extend(layer_elems.normal.drain(..).map(OutputRenderElements::from));
|
||||
} else {
|
||||
elements.extend(top_layer.into_iter().map(OutputRenderElements::from));
|
||||
elements.extend(layer_elems.popups.drain(..).map(OutputRenderElements::from));
|
||||
elements.extend(top_layer_normal.into_iter().map(OutputRenderElements::from));
|
||||
|
||||
elements.extend(
|
||||
int_move_elements
|
||||
|
||||
Reference in New Issue
Block a user