From e454cd6282eb52709a397e72abec01ed65f6c4c1 Mon Sep 17 00:00:00 2001 From: Ivan Molodetskikh Date: Sat, 11 May 2024 10:02:48 +0400 Subject: Implement double-resize-click to reset height/toggle full width --- src/window/mapped.rs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'src/window') 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, + + /// Last time interactive resize was started. + /// + /// Used for double-resize-click tracking. + last_interactive_resize_start: Cell>, } /// 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> { + &self.last_interactive_resize_start + } } impl Drop for Mapped { -- cgit