aboutsummaryrefslogtreecommitdiff
path: root/src/window
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2024-05-11 10:02:48 +0400
committerIvan Molodetskikh <yalterz@gmail.com>2024-05-11 10:02:48 +0400
commite454cd6282eb52709a397e72abec01ed65f6c4c1 (patch)
tree318698c6e877fb73e6a4564bdc9ff4c1a6d7e20a /src/window
parent1c14a0a2a97867878c65ea33fa8b927618efb555 (diff)
downloadniri-e454cd6282eb52709a397e72abec01ed65f6c4c1.tar.gz
niri-e454cd6282eb52709a397e72abec01ed65f6c4c1.tar.bz2
niri-e454cd6282eb52709a397e72abec01ed65f6c4c1.zip
Implement double-resize-click to reset height/toggle full width
Diffstat (limited to 'src/window')
-rw-r--r--src/window/mapped.rs14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/window/mapped.rs b/src/window/mapped.rs
index 952a2bf3..4b31da22 100644
--- a/src/window/mapped.rs
+++ b/src/window/mapped.rs
@@ -1,5 +1,6 @@
-use std::cell::RefCell;
+use std::cell::{Cell, RefCell};
use std::cmp::{max, min};
+use std::time::Duration;
use niri_config::WindowRule;
use smithay::backend::renderer::element::solid::{SolidColorBuffer, SolidColorRenderElement};
@@ -27,6 +28,7 @@ use crate::render_helpers::renderer::NiriRenderer;
use crate::render_helpers::snapshot::RenderSnapshot;
use crate::render_helpers::surface::render_snapshot_from_surface_tree;
use crate::render_helpers::{BakedBuffer, RenderTarget, SplitElements};
+use crate::utils::ResizeEdge;
#[derive(Debug)]
pub struct Mapped {
@@ -61,6 +63,11 @@ pub struct Mapped {
/// State of an ongoing interactive resize.
interactive_resize: Option<InteractiveResize>,
+
+ /// Last time interactive resize was started.
+ ///
+ /// Used for double-resize-click tracking.
+ last_interactive_resize_start: Cell<Option<(Duration, ResizeEdge)>>,
}
/// Interactive resize state.
@@ -100,6 +107,7 @@ impl Mapped {
animate_serials: Vec::new(),
animation_snapshot: None,
interactive_resize: None,
+ last_interactive_resize_start: Cell::new(None),
}
}
@@ -199,6 +207,10 @@ impl Mapped {
pub fn store_animation_snapshot(&mut self, renderer: &mut GlesRenderer) {
self.animation_snapshot = Some(self.render_snapshot(renderer));
}
+
+ pub fn last_interactive_resize_start(&self) -> &Cell<Option<(Duration, ResizeEdge)>> {
+ &self.last_interactive_resize_start
+ }
}
impl Drop for Mapped {