From 4ca4d8f8392d7855f977214b8ee74110eb16b723 Mon Sep 17 00:00:00 2001 From: Vishnu Tejas E Date: Fri, 20 Mar 2026 13:41:00 +0530 Subject: [PATCH] Fix double-clicking top bar not toggling maximize in linux --- desktop/src/app.rs | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/desktop/src/app.rs b/desktop/src/app.rs index c413e6ad9a..da13c5a5b2 100644 --- a/desktop/src/app.rs +++ b/desktop/src/app.rs @@ -34,6 +34,7 @@ pub(crate) struct App { window_fullscreen: bool, pointer_position: PhysicalPosition, pointer_lock_position: Option>, + pending_drag: bool, ui_scale: f64, app_event_receiver: Receiver, app_event_scheduler: AppEventScheduler, @@ -107,6 +108,7 @@ impl App { window_fullscreen: false, pointer_position: Default::default(), pointer_lock_position: Default::default(), + pending_drag: false, ui_scale: 1., app_event_receiver, app_event_scheduler, @@ -399,9 +401,7 @@ impl App { } } DesktopFrontendMessage::WindowDrag => { - if let Some(window) = &self.window { - window.start_drag(); - } + self.pending_drag = true; } DesktopFrontendMessage::WindowHide => { if let Some(window) = &self.window { @@ -575,6 +575,13 @@ impl ApplicationHandler for App { WindowEvent::SurfaceResized(_) | WindowEvent::ScaleFactorChanged { .. } => { self.resize(); } + WindowEvent::PointerButton { + button: ButtonSource::Mouse(MouseButton::Left), + state: ElementState::Released, + .. + } => { + self.pending_drag = false; + } WindowEvent::RedrawRequested => { #[cfg(target_os = "macos")] self.resize(); @@ -657,6 +664,13 @@ impl ApplicationHandler for App { if self.pointer_lock_position.is_none() => { self.pointer_position = position; + + if self.pending_drag { + self.pending_drag = false; + if let Some(window) = &self.window { + window.start_drag(); + } + } } _ => {}