aboutsummaryrefslogtreecommitdiff
path: root/src/layout/monitor.rs
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2025-09-21 20:26:49 +0300
committerIvan Molodetskikh <yalterz@gmail.com>2025-10-02 09:33:08 +0300
commita5e285865b97c008549b60aac29c6a14b7f4f8c0 (patch)
tree718fecf648c0fdf43439a4a01a58b3b58c1703a8 /src/layout/monitor.rs
parentd5f4e79e4c35d4f5a7a4a64e85e72fb1545ef2db (diff)
downloadniri-a5e285865b97c008549b60aac29c6a14b7f4f8c0.tar.gz
niri-a5e285865b97c008549b60aac29c6a14b7f4f8c0.tar.bz2
niri-a5e285865b97c008549b60aac29c6a14b7f4f8c0.zip
Move background rendering to Workspace
Per-output background-color doesn't work yet.
Diffstat (limited to 'src/layout/monitor.rs')
-rw-r--r--src/layout/monitor.rs14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/layout/monitor.rs b/src/layout/monitor.rs
index ec513857..54bcf9af 100644
--- a/src/layout/monitor.rs
+++ b/src/layout/monitor.rs
@@ -23,6 +23,7 @@ use crate::input::swipe_tracker::SwipeTracker;
use crate::niri_render_elements;
use crate::render_helpers::renderer::NiriRenderer;
use crate::render_helpers::shadow::ShadowRenderElement;
+use crate::render_helpers::solid_color::SolidColorRenderElement;
use crate::render_helpers::RenderTarget;
use crate::rubber_band::RubberBand;
use crate::utils::transaction::Transaction;
@@ -175,6 +176,7 @@ niri_render_elements! {
InsertHint = CropRenderElement<InsertHintRenderElement>,
UncroppedInsertHint = InsertHintRenderElement,
Shadow = ShadowRenderElement,
+ SolidColor = SolidColorRenderElement,
}
}
@@ -1619,6 +1621,7 @@ impl<W: LayoutElement> Monitor<W> {
) -> impl Iterator<
Item = (
Rectangle<f64, Logical>,
+ MonitorRenderElement<R>,
impl Iterator<Item = MonitorRenderElement<R>> + 'a,
),
> {
@@ -1692,7 +1695,7 @@ impl<W: LayoutElement> Monitor<W> {
let iter = floating.chain(hint).chain(scrolling);
- let iter = iter.map(move |elem| {
+ let scale_relocate = move |elem| {
let elem = RescaleRenderElement::from_element(elem, Point::from((0, 0)), zoom);
RelocateRenderElement::from_element(
elem,
@@ -1702,9 +1705,14 @@ impl<W: LayoutElement> Monitor<W> {
geo.loc.to_physical_precise_round(scale),
Relocate::Relative,
)
- });
+ };
+
+ let iter = iter.map(scale_relocate);
+
+ let background = ws.render_background();
+ let background = scale_relocate(MonitorInnerRenderElement::SolidColor(background));
- (geo, iter)
+ (geo, background, iter)
})
}