aboutsummaryrefslogtreecommitdiff
path: root/src/layout/tile.rs
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2024-03-19 18:22:25 +0400
committerIvan Molodetskikh <yalterz@gmail.com>2024-03-19 18:29:13 +0400
commitdb49deb7fd2fbe805ceec060aa4dec65009ad7a7 (patch)
treeb8f85d4aee4d366643626e97b7f37fa49d93b75b /src/layout/tile.rs
parentc61361de3ca4484387f39b067eadc612908560eb (diff)
downloadniri-db49deb7fd2fbe805ceec060aa4dec65009ad7a7.tar.gz
niri-db49deb7fd2fbe805ceec060aa4dec65009ad7a7.tar.bz2
niri-db49deb7fd2fbe805ceec060aa4dec65009ad7a7.zip
Implement draw-border-with-background window rule
Diffstat (limited to 'src/layout/tile.rs')
-rw-r--r--src/layout/tile.rs26
1 files changed, 22 insertions, 4 deletions
diff --git a/src/layout/tile.rs b/src/layout/tile.rs
index 589b2fc0..0609583e 100644
--- a/src/layout/tile.rs
+++ b/src/layout/tile.rs
@@ -85,11 +85,22 @@ impl<W: LayoutElement> Tile<W> {
}
pub fn advance_animations(&mut self, current_time: Duration, is_active: bool) {
+ let draw_border_with_background = self
+ .window
+ .rules()
+ .draw_border_with_background
+ .unwrap_or_else(|| !self.window.has_ssd());
self.border
- .update(self.window.size(), self.window.has_ssd());
+ .update(self.window.size(), !draw_border_with_background);
self.border.set_active(is_active);
- self.focus_ring.update(self.tile_size(), self.has_ssd());
+ let draw_focus_ring_with_background = if self.effective_border_width().is_some() {
+ false
+ } else {
+ draw_border_with_background
+ };
+ self.focus_ring
+ .update(self.tile_size(), !draw_focus_ring_with_background);
self.focus_ring.set_active(is_active);
match &mut self.open_animation {
@@ -295,8 +306,15 @@ impl<W: LayoutElement> Tile<W> {
size
}
- pub fn has_ssd(&self) -> bool {
- self.effective_border_width().is_some() || self.window.has_ssd()
+ pub fn draw_border_with_background(&self) -> bool {
+ if self.effective_border_width().is_some() {
+ return false;
+ }
+
+ self.window
+ .rules()
+ .draw_border_with_background
+ .unwrap_or_else(|| !self.window.has_ssd())
}
fn render_inner<R: NiriRenderer>(