diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2024-05-11 10:02:48 +0400 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2024-05-11 10:02:48 +0400 |
| commit | e454cd6282eb52709a397e72abec01ed65f6c4c1 (patch) | |
| tree | 318698c6e877fb73e6a4564bdc9ff4c1a6d7e20a /src/window | |
| parent | 1c14a0a2a97867878c65ea33fa8b927618efb555 (diff) | |
| download | niri-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.rs | 14 |
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 { |
